<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>WPPoland - Blog Desarrollador WordPress</title><description>Consejos expertos, tutoriales y perspectivas para desarrolladores WordPress.</description><link>https://wppoland.com/</link><language>es-ES</language><lastBuildDate>Fri, 01 May 2026 17:42:32 GMT</lastBuildDate><item><title>Cuatro backdoors en plugins en un mes: la cadena de suministro de WordPress en 2026</title><link>https://wppoland.com/es/wordpress-plugin-supply-chain-2026-cuatro-backdoors-en-un-mes/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-plugin-supply-chain-2026-cuatro-backdoors-en-un-mes/</guid><description>Austin Ginder reveló cuatro backdoors en plugins de WordPress.org en 30 días, además de un autor que mantuvo un servidor de actualizaciones oculto durante cinco años. Qué significa esto para los mapas de dependencias de NIS2 y DORA.</description><pubDate>Fri, 01 May 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a id=&quot;introduction&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En treinta días, entre principios de abril y comienzos de mayo de 2026, el directorio de plugins de WordPress.org cerró al menos seis plugins por motivos relacionados con la cadena de suministro. Cuatro de las divulgaciones procedieron de un único investigador independiente, Austin Ginder, de Anchor Hosting. Una llegó a través de un servidor de actualizaciones oculto operado durante cinco años, que distribuía silenciosamente versiones modificadas de un plugin con más de 70.000 instalaciones activas. Un radio de impacto cubrió toda una tienda de plugins, con más de 80 plugins en .org. El co-rep de la Plugins Team, Francisco Torres, declaró a &lt;em&gt;The Repository&lt;/em&gt; que Ginder “is doing an excellent job investigating these issues, correlating events, and drawing conclusions from them.”&lt;/p&gt;
&lt;p&gt;Vuelva a leer la cita. El equipo que gestiona el directorio de plugins de WordPress agradece públicamente al fundador de una sola empresa de alojamiento un trabajo que el propio directorio no realiza a esta escala. Esta es la cadena de suministro de plugins de WordPress en mayo de 2026 y, si gestiona un stack que debe superar los controles de cadena de suministro de NIS2 Article 21 o el mapeo de dependencias de terceros de DORA Article 28, esa cita es problema suyo.&lt;/p&gt;
&lt;p&gt;Este artículo es deliberadamente opinativo. Los hechos son públicos, las divulgaciones están enlazadas y las conclusiones son mías.&lt;/p&gt;
&lt;h2 id=&quot;qué-pasó-realmente-en-abril-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-pasó-realmente-en-abril-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué pasó realmente en abril de 2026&lt;/h2&gt;
&lt;p&gt;Austin Ginder reveló en abril cuatro compromisos distintos de plugins. Escribió sobre el más reciente el 30 de abril y la Plugins Team confirmó su análisis y cerró el plugin Scroll To Top poco después. Torres dijo a &lt;em&gt;The Repository&lt;/em&gt; que el relato de Ginder fue “essentially what happened” y reconoció que su trabajo estaba “having a positive impact on the ecosystem’s security.” Junto con la cuarta divulgación, Ginder adelantó una nueva herramienta, WP Beacon, diseñada para rastrear posibles amenazas de seguridad dentro del directorio .org. Torres afirmó que la Plugins Team estaba trabajando en “something similar.”&lt;/p&gt;
&lt;p&gt;En paralelo, &lt;em&gt;The Repository&lt;/em&gt; informó del cierre de Quick Page Post Redirect, un plugin con más de 70.000 instalaciones activas, después de que se supiera que el autor llevaba unos cinco años operando un servidor de actualizaciones oculto. El propósito de ese servidor era distribuir versiones que no pasaban por la pipeline de revisión de WordPress.org. Cinco años.&lt;/p&gt;
&lt;p&gt;En el mismo ciclo informativo, la Plugins Team cerró temporalmente más de 80 plugins de WPFactory tras la denuncia de un usuario sobre un presunto backdoor en la versión premium de EU/UK VAT for WooCommerce. La primera reacción de WPFactory, según &lt;em&gt;WP-CONTENT.CO&lt;/em&gt;, fue sugerir que el entorno del usuario estaba comprometido. El Managing Partner Pablo Pacheco reconoció luego el problema y se disculpó por la respuesta tardía. El catálogo de plugins de WPFactory acumula más de 170.000 instalaciones activas en el directorio.&lt;/p&gt;
&lt;p&gt;Este es el inventario de superficie. Ninguno de estos compromisos fue un zero day exótico en el núcleo de WordPress. Todos y cada uno fueron compromisos del lado del maintainer o de la distribución, lo que constituye la definición de manual de un ataque a la cadena de suministro.&lt;/p&gt;
&lt;h2 id=&quot;dónde-acaba-realmente-la-revisión-de-org&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-acaba-realmente-la-revisión-de-org&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde acaba realmente la revisión de .org&lt;/h2&gt;
&lt;p&gt;Resulta tentador leer las cuatro divulgaciones en un mes como señal de que algo ha cambiado. La lectura honesta es la contraria. Nada en la revisión estructural del directorio cambió en abril de 2026. Lo que cambió es que un único investigador independiente empezó a mirar y un único periodista empezó a escribir.&lt;/p&gt;
&lt;p&gt;El caso Quick Page Post Redirect es la demostración más clara de la brecha estructural. Un autor de plugin que decide eludir la pipeline de revisión de .org puede hacerlo con un endpoint de actualización privado y unas pocas líneas de código. Una vez instalado el plugin, al núcleo de WordPress no le importa de dónde llega la siguiente versión. El retraso de detección de cinco años no es el directorio fallando en su trabajo; es el directorio sin la visibilidad para hacer ese trabajo desde el principio. La revisión actual controla qué se sube al repositorio .org el día cero. No controla qué instalan realmente los usuarios el día mil ochocientos veinticinco.&lt;/p&gt;
&lt;p&gt;WP Beacon, según la propia descripción de Ginder, es un intento de añadir observabilidad a esa brecha desde fuera. Las herramientas paralelas de la Plugins Team, cuando se publiquen, harán algo similar desde dentro. Hasta que ambas se publiquen y se estabilicen, la brecha es suya, no de ellos.&lt;/p&gt;
&lt;h2 id=&quot;qué-exigen-aquí-realmente-nis2-y-dora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-exigen-aquí-realmente-nis2-y-dora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué exigen aquí realmente NIS2 y DORA&lt;/h2&gt;
&lt;p&gt;Si asesora a una entidad cubierta, el encuadre del texto regulatorio es inequívoco. NIS2 Article 21 apartado 2 letra d exige “supply chain security, including security related aspects concerning the relationships between each entity and its direct suppliers or service providers.” DORA Article 28 obliga a las entidades financieras a mantener un registro de “all contractual arrangements on the use of ICT services provided by ICT third party service providers” y a aplicar a esos acuerdos un régimen de due diligence proporcional al riesgo.&lt;/p&gt;
&lt;p&gt;Un autor de plugin de WordPress cuyo código se ejecuta en su ruta crítica de producción es, a efectos de DORA, un proveedor tercero de servicios TIC. Que sea un maintainer open source de una sola persona o una empresa de 130 personas como WPFactory no cambia esa clasificación, porque el reglamento se ocupa de la dependencia operativa, no de la forma societaria. El caso Quick Page Post Redirect muestra qué ocurre cuando una entidad cubierta no ha mapeado esa dependencia: el plugin se actualiza en silencio, el registro de dependencias dirigido al regulador no marca el cambio y el rastro auditable termina en algún punto del log de cierres del directorio .org.&lt;/p&gt;
&lt;p&gt;Para entidades esenciales e importantes bajo NIS2, la pregunta práctica es la misma con vocabulario distinto. Las medidas del Article 21 “shall include at least” las disposiciones de la cadena de suministro de la letra d. La ley de transposición del Estado miembro y la guía de la autoridad competente concretan qué significa “include at least” en la práctica, pero todas las transposiciones que hemos visto leen “supply chain” de manera inclusiva, no restrictiva.&lt;/p&gt;
&lt;p&gt;De aquí se siguen dos cosas. Primero: su lista de plugins no es solo una comodidad administrativa; es un artefacto regulado. Segundo: el rastro de auditoría que demuestra que conocía el cierre dentro de la ventana esperada por el regulador no es una captura del panel de WordPress, porque el panel le dice que el plugin “ya no está disponible” sin decirle por qué. Necesita un feed externo.&lt;/p&gt;
&lt;h2 id=&quot;ejemplo-de-mapeo-de-dependencias-que-sobrevive-a-una-visita-del-regulador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-de-mapeo-de-dependencias-que-sobrevive-a-una-visita-del-regulador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo de mapeo de dependencias que sobrevive a una visita del regulador&lt;/h2&gt;
&lt;p&gt;Una prueba útil para cualquier registro de dependencias de plugins es si responde a cuatro preguntas para cada plugin activo en producción:&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Pregunta&lt;/th&gt;&lt;th&gt;Cómo es una respuesta auditable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;¿Quién lo mantiene?&lt;/td&gt;&lt;td&gt;Una persona física o jurídica identificada, con una vía de contacto verificable más allá del perfil .org&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;¿Qué incluye?&lt;/td&gt;&lt;td&gt;La lista de librerías de terceros incluidas en el plugin, con versiones fijadas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;¿Cómo se actualiza?&lt;/td&gt;&lt;td&gt;El mecanismo exacto (WordPress.org, servidor de actualización privado, Composer satis, mirror)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;¿Qué ocurre en caso de cierre?&lt;/td&gt;&lt;td&gt;Un runbook escrito de antemano con tiempo-hasta-eliminación medido&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El caso Quick Page Post Redirect suspende la tercera pregunta durante cinco años y la cuarta el día cero. El caso WPFactory suspende la primera pregunta, porque la primera reacción pública trasladó la culpa al usuario denunciante antes de que la propia revisión del maintainer alcanzase el ritmo. Las cuatro divulgaciones de Ginder, en conjunto, suspenden la segunda pregunta, porque la capa de dependencias incluidas en un plugin típico es opaca para la mayoría de los equipos de operaciones.&lt;/p&gt;
&lt;p&gt;Si su registro de dependencias no pasa la prueba de las cuatro preguntas para cada plugin en producción, el ataque a la cadena de suministro que le caiga el próximo trimestre no será una sorpresa. Será un hallazgo del regulador.&lt;/p&gt;
&lt;h2 id=&quot;qué-puede-hacer-realmente-esta-semana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-puede-hacer-realmente-esta-semana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué puede hacer realmente esta semana&lt;/h2&gt;
&lt;p&gt;El trabajo de medio plazo consiste en colocar las actualizaciones de plugins al mismo nivel que el código de aplicación: versiones fijadas en un manifiesto, Renovate o Dependabot contra el manifiesto, lanzamientos entregados por CI, rollback automático ante un smoke test fallido. El trabajo a corto plazo cabe en una semana laboral.&lt;/p&gt;
&lt;p&gt;Coloque Patchstack y el feed Wordfence Threat Intelligence en el mismo canal de Slack o Teams que su equipo usa para notificaciones de CVE. Suscríbase al RSS de cierres de plugins de WordPress.org para que los takedowns del propio directorio lleguen al canal antes de que un cliente los mencione. Audite los plugins del sitio que más ingresos genera y elimine cualquier plugin cuyo perfil de maintainer no pueda asociar a un maintainer real en menos de cinco minutos; si el maintainer es un seudónimo sin respaldo organizativo, el riesgo de cadena de suministro es estructuralmente mayor que el valor funcional casi siempre. Para los plugins que sobrevivan a ese filtro, escriba ya el runbook de cierre. El radio de impacto de Quick Page Post Redirect fue de 70.000 sitios y las ventanas de exposición se midieron en años; la diferencia entre los operadores que se dan cuenta y los que no es si alguien escribió el runbook antes de que llegara el correo de la Plugins Team.&lt;/p&gt;
&lt;p&gt;Para las agencias y freelancers que están leyendo esto, el registro de dependencias también es un artefacto comercial. Un cliente que puede mostrar sus controles de cadena de suministro NIS2 en una hoja de cálculo en lugar de una captura de la página Plugins de wp-admin es un cliente que sobrevive al próximo compromiso sectorial sin exposición jurídica. La agencia que entregó la hoja de cálculo conserva ese cliente.&lt;/p&gt;
&lt;h2 id=&quot;dónde-termina-austin-ginder-y-empieza-wordpressorg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-termina-austin-ginder-y-empieza-wordpressorg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde termina Austin Ginder y empieza WordPress.org&lt;/h2&gt;
&lt;p&gt;La verdad incómoda en la propia cita de la Plugins Team es que el trabajo que Ginder está haciendo ahora mismo es el trabajo que el directorio debería hacer institucionalmente. El equipo lo confirma. La formulación de Torres, “we believe he’s doing a fantastic job that is having a positive impact on the ecosystem’s security”, es generosa, exacta y silenciosamente lapidaria. Un ecosistema de este tamaño no puede sostenerse sobre la buena voluntad de un único fundador de empresa de alojamiento y un único editor de newsletter. WP Beacon, las herramientas internas paralelas de la Plugins Team y la pipeline de divulgación existente de Patchstack avanzan en la misma dirección; hasta que se encuentren a medio camino y se queden allí, cada entidad cubierta que opere WordPress en producción tendrá que hacer el trabajo institucional por sí misma.&lt;/p&gt;
&lt;p&gt;Eso resulta incómodo en 2026 porque el resto de la cadena de suministro de software regulada se mueve en sentido contrario. Los requisitos de SBOM, los lanzamientos firmados y los builds reproducibles son hoy la base esperada en servicios financieros y en infraestructuras críticas, y el directorio de plugins de WordPress aún no cumple esa base. Cerrar la brecha no es un fallo de la Plugins Team; es un desajuste estructural entre un ecosistema abierto construido en torno a maintainers voluntarios y un entorno regulatorio que ahora espera que cada dependencia en producción sea auditable.&lt;/p&gt;
&lt;p&gt;La buena noticia es que la brecha se puede cerrar desde su lado sin esperar a que el directorio se ponga al día. Trate los plugins como código, fíjelos, audite a los maintainers, monitorice los feeds de divulgación y escriba el runbook. Las cuatro divulgaciones de Ginder y el servidor de actualizaciones oculto durante cinco años no son predicciones; son recibos. Si todavía no ha construido el registro de dependencias, el próximo compromiso no es una cuestión de si, es una cuestión de qué martes por la mañana llega el correo.&lt;/p&gt;
&lt;h2 id=&quot;preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preguntas frecuentes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;¿Es WordPress estructuralmente menos seguro que otros CMS tras estas divulgaciones?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No. La categoría de cadena de suministro atraviesa todos los ecosistemas de paquetes; el registro npm ha producido sus propios incidentes con miles de paquetes, y PyPI ha visto varias oleadas de typosquatting. WordPress es inusualmente visible porque el directorio de plugins de .org está centralizado y los eventos de cierre son públicos, lo que hace que los incidentes individuales sean legibles de un modo en que el typosquatting de npm no suele serlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Debo cambiar a una arquitectura estática o headless para evitar todo esto?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WordPress headless y los front-ends estáticos, incluidos Astro y Next.js, no eliminan el riesgo de la cadena de suministro de plugins en el lado de la edición, pero reducen drásticamente el radio de impacto en runtime. Un plugin comprometido en una instalación WordPress headless no puede inyectar código en el sitio público si el sitio público se renderiza a partir de un build. Es la mayor reducción de riesgo en un único paso disponible y forma parte del motivo por el que tantos compradores regulados están migrando en 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Eliminar el plugin después de que .org lo cierre resuelve el problema?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Es necesario y no suficiente. El cierre significa que las nuevas instalaciones quedan bloqueadas; las instalaciones existentes siguen ejecutándose hasta que el operador las elimina. Si el plugin cerrado tenía acceso de escritura a la base de datos o al sistema de archivos, el sitio puede seguir afectado incluso tras la eliminación. El runbook de cierre tiene que incluir comprobaciones de integridad, no solo un clic de desinstalación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Puedo confiar en las actualizaciones automáticas para ir por delante de los compromisos?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Las actualizaciones automáticas son la razón por la que el compromiso de Quick Page Post Redirect persistió durante cinco años. Las actualizaciones automáticas tiran de donde el plugin le diga a WordPress que tire, incluido un servidor de actualizaciones oculto. Las actualizaciones automáticas son útiles para seguir parches de emergencia una vez que confía en la fuente; no sustituyen a confiar en la fuente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Qué hace exactamente WP Beacon?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A fecha de la divulgación más reciente, Austin Ginder describe WP Beacon como una herramienta para rastrear posibles amenazas de seguridad para WordPress.org. No se han publicado más detalles. La Plugins Team ha confirmado que está desarrollando internamente algo similar. Probablemente ambos se publiquen en los próximos dos trimestres; hasta entonces, considere ambos como compromisos futuros y no como controles actuales.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Última actualización: 1 de mayo de 2026. Fuentes primarias: The Repository Issue #300, informes de divulgación en anchor.host, páginas de cierre del directorio de plugins de WordPress.org, cobertura de WP-CONTENT.CO sobre el cierre de WPFactory.&lt;/em&gt;&lt;/p&gt;</content:encoded><category>security</category><category>opinion</category><category domain="tag">supply-chain</category><category domain="tag">plugin-security</category><category domain="tag">nis2</category><category domain="tag">dora</category><category domain="tag">wordpress-org</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>WordPress en España - la realidad post-LSSI y el agotamiento del freelance en 2026</title><link>https://wppoland.com/es/wordpress-en-espana-realidad-post-lssi-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-en-espana-realidad-post-lssi-2026/</guid><description>El mercado WordPress español 2026 está saliendo del modelo freelance puro y entrando en una fase donde compliance, headless y stack europea pesan más que la tarifa horaria.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;wordpress-en-españa---la-realidad-post-lssi-y-el-agotamiento-del-freelance-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-en-españa---la-realidad-post-lssi-y-el-agotamiento-del-freelance-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress en España - la realidad post-LSSI y el agotamiento del freelance en 2026&lt;/h2&gt;
&lt;p&gt;El mercado WordPress español en 2026 está cambiando de forma que mucha agencia y mucho freelance todavía no han mirado de frente. La conversación pública sigue siendo “tarifa horaria, plugins, plantilla”. La conversación real es “qué hago cuando el cliente regulado europeo me pide un trail de auditoría y mi único argumento es el precio”.&lt;/p&gt;
&lt;p&gt;Vamos por partes.&lt;/p&gt;
&lt;h2 id=&quot;el-agotamiento-del-freelance-puro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-agotamiento-del-freelance-puro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El agotamiento del freelance puro&lt;/h2&gt;
&lt;p&gt;España produjo durante quince años una generación enorme de freelancers WordPress. La barrera de entrada fue baja, la demanda fue alta y el modelo funcionó. En 2026 el modelo se está agotando, por tres razones simultáneas.&lt;/p&gt;
&lt;p&gt;Primera: la tarifa máxima del freelance generalista cayó por la competencia desde Latinoamérica y Filipinas. Un freelance argentino o filipino con buen inglés y portfolio decente pide menos que un freelance español con portfolio comparable. El cliente que solo busca tarifa elige fuera de España.&lt;/p&gt;
&lt;p&gt;Segunda: el cliente que busca calidad ya no busca freelance. Busca agencia con SLA, runbook de incidente, registro ICT third-party y cobertura de compliance. El freelance puro no entrega esto, no porque no sepa, sino porque no escala.&lt;/p&gt;
&lt;p&gt;Tercera: el LSSI, el GDPR, la futura aplicación práctica de NIS2 sobre subcontratistas y la Ley de Servicios Digitales obligan al cliente a documentar a sus proveedores. Un freelance individual sin estructura empresarial es difícil de incluir en el registro de proveedores de un cliente regulado.&lt;/p&gt;
&lt;p&gt;El resultado es claro: el freelance puro vive en proyectos pequeños, donde la tarifa baja gana. Los proyectos medianos y grandes en España migran a agencias con stack documentada.&lt;/p&gt;
&lt;h2 id=&quot;lssi-gdpr-y-compliance-europeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lssi-gdpr-y-compliance-europeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;LSSI, GDPR y compliance europeo&lt;/h2&gt;
&lt;p&gt;Tres siglas que un proyecto WordPress español no puede ignorar en 2026:&lt;/p&gt;
&lt;p&gt;LSSI (Ley de Servicios de la Sociedad de la Información) regula obligaciones formales: aviso legal, condiciones generales de contratación, política de cookies, contacto identificable. Cumple casi cualquier WordPress decentemente configurado. No cambia arquitectura.&lt;/p&gt;
&lt;p&gt;GDPR, en cambio, sí cambia arquitectura. Dónde están los datos, qué subprocesadores los procesan, qué consentimiento se obtiene, cuánto se guarda, cómo se borra. La elección entre Vercel (jurisdicción US) y Cloudflare (presencia UE con DPA EU) tiene impacto directo en GDPR. La WPPoland coloca Vercel en Hold en su Tech Radar Q4 2026 para producción WordPress headless europea exactamente por esta razón.&lt;/p&gt;
&lt;p&gt;NIS2 toca a clientes regulados (banca, telecom, energía, sanidad, infraestructura crítica). Si tu agencia trabaja con uno de estos sectores en España, en 2026 te pidieron registro como ICT third-party. Si no te lo pidieron, te lo van a pedir. Tener la documentación lista antes que el cliente la pida es ventaja comercial.&lt;/p&gt;
&lt;h2 id=&quot;qué-stack-gana-en-españa-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-stack-gana-en-españa-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué stack gana en España en 2026&lt;/h2&gt;
&lt;p&gt;Cinco elementos que en 2026 separan agencia WordPress española competitiva de la que está perdiendo cuota:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Pages y Workers&lt;/strong&gt; como infraestructura por defecto. Jurisdicción UE, coste predecible, latencia baja en tráfico ibérico y europeo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress como fuente de verdad comercial&lt;/strong&gt;, headless con Astro para sitios de contenido y Next.js para aplicaciones. La pregunta “Astro o Next.js” se decide por carga interactiva del sitio, no por moda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; para integración con agentes AI. Adopt en Tech Radar Q4 2026 para herramientas. WordPress se está convirtiendo en el sistema operativo de la web agéntica, según el propio anuncio de Automattic en abril 2026.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance documentada&lt;/strong&gt;: GDPR DPA, registro ICT third-party, runbook de incidente, política de actualización, baseline de seguridad. No es marketing, es entregable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AVIF como formato de imagen&lt;/strong&gt; por defecto. Reemplaza WebP, mejor compresión, ahorro real en factura de bandwidth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una agencia española que entrega esto a un cliente alemán, francés o británico tiene argumento. Una que entrega “WordPress + Elementor + servidor compartido” tiene un problema de pricing power.&lt;/p&gt;
&lt;h2 id=&quot;qué-no-funciona-ya&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-no-funciona-ya&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué no funciona ya&lt;/h2&gt;
&lt;p&gt;Tres patrones del mercado español que en 2026 dejaron de funcionar:&lt;/p&gt;
&lt;p&gt;Competir por tarifa contra Latinoamérica. Pierdes. No entres.&lt;/p&gt;
&lt;p&gt;Vender Elementor o Divi para sitios donde el rendimiento importa. El page builder visual está en Hold en el Tech Radar Q4 2026 para sitios performance-critical. La agencia que insiste lo paga en CLS y LCP en cuanto el cliente revisa Search Console.&lt;/p&gt;
&lt;p&gt;Construir e-commerce nuevo sobre monolito PHP puro. El monolito WooCommerce para SMB sigue bien. E-commerce nuevo de cierto tamaño va composable: WooCommerce + Cloudflare + headless + UCP. Está en Hold el monolito PHP para nuevos proyectos en el Tech Radar Q4 2026.&lt;/p&gt;
&lt;h2 id=&quot;qué-hace-la-wppoland&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hace-la-wppoland&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué hace la WPPoland&lt;/h2&gt;
&lt;p&gt;WPPoland lleva años trabajando con clientes en España. La posición es la misma que en Polonia, Alemania, Reino Unido y los nórdicos: especialización vence al descuento, stack europea vence Vercel para producción europea, y compliance documentada es entregable, no overhead.&lt;/p&gt;
&lt;p&gt;El mercado español está madurando rápido en esto. La agencia que se adelante en 2026 capta los proyectos regulados que en 2027 ya no van al freelance.&lt;/p&gt;
</content:encoded><category>opinión</category><category>mercado</category><category>WordPress</category><enclosure url="https://wppoland.com/images/og/wordpress-developer.jpg" type="image/jpeg"/></item><item><title>Caída de candidaturas del 45 por ciento por oferta: fin del eldorado, inicio de un mercado transparente</title><link>https://wppoland.com/es/caida-candidaturas-it-polonia-2026/</link><guid isPermaLink="true">https://wppoland.com/es/caida-candidaturas-it-polonia-2026/</guid><description>Una media de 24 candidaturas por oferta de empleo en TI en 2025 según No Fluff Jobs. En 2024 eran 44. Una caída del 45,5 por ciento interanual en una sola cifra, que cambia la estrategia de contratación del lado del comprador de trabajo. Una polémica frente a dos relatos: &quot;mercado del trabajador&quot; y &quot;mercado del empleador&quot;.</description><pubDate>Mon, 27 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;caída-de-candidaturas-del-45-por-ciento-por-oferta-fin-del-eldorado-inicio-de-un-mercado-transparente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caída-de-candidaturas-del-45-por-ciento-por-oferta-fin-del-eldorado-inicio-de-un-mercado-transparente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caída de candidaturas del 45 por ciento por oferta: fin del eldorado, inicio de un mercado transparente&lt;/h2&gt;
&lt;p&gt;Una media de 24 candidaturas por oferta de empleo en TI en 2025 según &lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Mercado Laboral de TI 2025/2026&lt;/a&gt;. En 2024 eran 44. Una caída del 45,5 por ciento interanual en una sola cifra. Este artículo descompone esa cifra en sus factores y se enfrenta a dos relatos mediáticos simplificados: “mercado del trabajador” y “mercado del empleador”.&lt;/p&gt;
&lt;p&gt;El texto se conecta con el &lt;a href=&quot;/en/polish-senior-engineers-nearshore-standard-2026/&quot;&gt;artículo en inglés sobre el sénior polaco en nearshore&lt;/a&gt;, la &lt;a href=&quot;/es/salarios-desarrolladores-wordpress-polacos-2026/&quot;&gt;polémica sobre los salarios de los desarrolladores polacos de WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/trabajo-remoto-it-polonia-2026-polemica/&quot;&gt;polémica sobre el trabajo remoto&lt;/a&gt;, donde el mismo conjunto de datos aparece en otros contextos.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2025: media de 24 candidaturas por oferta (No Fluff Jobs).&lt;/li&gt;
&lt;li&gt;2024: 44 candidaturas por oferta.&lt;/li&gt;
&lt;li&gt;Caída: 45,5 por ciento interanual.&lt;/li&gt;
&lt;li&gt;A la vez, el número de ofertas de TI creció un 44 por ciento interanual (pico de +92,8 por ciento en septiembre de 2025).&lt;/li&gt;
&lt;li&gt;Efecto neto: el denominador creció, el numerador cayó, el mercado se vuelve selectivo en ambos lados.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;la-cifra-en-el-contexto-de-dos-informes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-cifra-en-el-contexto-de-dos-informes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La cifra en el contexto de dos informes&lt;/h2&gt;
&lt;p&gt;Dos fuentes públicas del mismo mercado, con cortes distintos:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Mercado Laboral de TI 2025/2026&lt;/a&gt; reporta la actividad del lado de los candidatos en su propia plataforma. Las cifras de 24 en 2025 y 44 en 2024 son la media de candidaturas por oferta publicada.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Just Join IT 2024/2025&lt;/a&gt; reporta la estructura de las ofertas y el régimen de trabajo, pero no el número de candidaturas. La tendencia de Just Join IT es complementaria: 60,12 por ciento totalmente remoto, 32,47 por ciento híbrido, mediana del B2B sénior en 24360 PLN netos.&lt;/p&gt;
&lt;p&gt;Complementarias, no competidoras. La cifra de candidaturas por oferta de NFJ encaja con la estructura de mercado de JJIT sin contradicción.&lt;/p&gt;
&lt;h2 id=&quot;polémica-1-no-esto-no-es-un-mercado-del-trabajador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#polémica-1-no-esto-no-es-un-mercado-del-trabajador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Polémica 1: no, esto no es un “mercado del trabajador”&lt;/h2&gt;
&lt;p&gt;Primera interpretación popular: si hay menos candidaturas, los candidatos tienen mayor palanca porque el empleador pelea por su atención. Este relato es a medias verdadero.&lt;/p&gt;
&lt;p&gt;¿Qué es cierto? Un sénior en el mercado de 2026 tiene más ofertas activas que en 2024. Los datos de NFJ muestran un +44 por ciento de crecimiento solo en el volumen de ofertas. En conjunto, cuando un sénior quiere cambiar de empleo, hay más oportunidades.&lt;/p&gt;
&lt;p&gt;¿Qué no es cierto? Un júnior no tiene esa palanca. La cuota de júniores en el mercado cayó al 5,3 por ciento en 2025 (desde el 5,8 por ciento en 2024). Los júniores se postulan a las mismas ofertas que los séniores, pero pierden la selección, porque NFJ reporta un 59,7 por ciento de ofertas que exigen sénior.&lt;/p&gt;
&lt;p&gt;En otras palabras, el relato del “mercado del trabajador” se cumple selectivamente para los séniores, mientras que para los júniores el mercado de 2026 es menos amable que el de 2024.&lt;/p&gt;
&lt;h2 id=&quot;polémica-2-no-esto-no-es-un-mercado-del-empleador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#polémica-2-no-esto-no-es-un-mercado-del-empleador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Polémica 2: no, esto no es un “mercado del empleador”&lt;/h2&gt;
&lt;p&gt;Segunda interpretación popular: si hay menos candidaturas por oferta, el empleador recibe menos candidatos y debería bajar exigencias. Este relato también es a medias verdadero.&lt;/p&gt;
&lt;p&gt;¿Qué es cierto? Un empleador que publicó en 2024 y recibió 44 currículums recibe hoy 24. La estadística cambió.&lt;/p&gt;
&lt;p&gt;¿Qué no es cierto? La calidad de las 24 candidaturas en 2025 es superior a la calidad de las 44 candidaturas en 2024. Un sénior con gran palanca se postula de forma selectiva, a entre 5 y 10 ofertas al mes, no a 50. Esas 24 candidaturas están más ajustadas a la oferta.&lt;/p&gt;
&lt;p&gt;Un empleador que quiera extraer calidad de un grupo más pequeño debe reescribir la oferta. Un empleador que no cambie la oferta recibirá 24 júniores ajustados en lugar de 44 júniores ajustados. No es una mejora.&lt;/p&gt;
&lt;h2 id=&quot;tercera-interpretación-el-mercado-se-ha-vuelto-transparente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tercera-interpretación-el-mercado-se-ha-vuelto-transparente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tercera interpretación: el mercado se ha vuelto transparente&lt;/h2&gt;
&lt;p&gt;La interpretación que mejor encaja con los datos es esta: un mercado que en 2024 funcionaba con candidaturas masivas funciona en 2025 con candidaturas precisas. Las razones:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores herramientas de emparejamiento.&lt;/strong&gt; Los agregadores de ofertas (No Fluff Jobs, Just Join IT) introdujeron mejores filtros de stack y de bandas salariales. Un júnior no se postula a un puesto sénior porque la banda es visible. Un sénior no se postula a puestos por debajo de su nivel porque el stack es visible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Salario transparente.&lt;/strong&gt; Desde 2024 el mercado polaco de TI es uno de los más transparentes en cuanto a bandas salariales (NFJ impuso las bandas en los anuncios). Sin banda, no hay candidatura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LinkedIn y red como canal alternativo.&lt;/strong&gt; Un sénior con más de 8 años de experiencia en 2026 cambia de empleo con mayor frecuencia mediante contactos directos que mediante un agregador. Lo que ven NFJ y JJIT es un subconjunto del mercado real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IA en la preselección del lado del candidato.&lt;/strong&gt; Los candidatos usan IA para evaluar el ajuste entre el currículum y la oferta antes de postularse. Solo se postula quien supera un umbral matemático de ajuste.&lt;/p&gt;
&lt;h2 id=&quot;qué-significa-esto-estratégicamente-para-una-agencia-de-selección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-significa-esto-estratégicamente-para-una-agencia-de-selección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué significa esto estratégicamente para una agencia de selección&lt;/h2&gt;
&lt;p&gt;Cinco implicaciones para una agencia que contrate a un sénior en 2026:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Primera, la calidad de la oferta vence al número de canales.&lt;/strong&gt; Ampliar la búsqueda a 8 portales no ayudará si la oferta es débil. Es mejor invertir el mismo tiempo en reescribir una sola oferta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segunda, las bandas salariales son obligatorias.&lt;/strong&gt; Sin bandas no hay candidaturas en 2026. Los empleadores que oculten las bandas reciben cero candidaturas ajustadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tercera, el tiempo de respuesta es corto.&lt;/strong&gt; Un sénior se postula a entre 5 y 10 ofertas y escoge la que responde en 48 horas. Un empleador que responde en 14 días pierde al candidato.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuarta, la contratación por referencia regresa.&lt;/strong&gt; Si los agregadores entregan menos candidaturas por oferta, la red de séniores del sector pesa más que en 2024.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quinta, la identidad del empleador importa.&lt;/strong&gt; Un sénior elige entre varias ofertas. Escoge aquella cuyo empleador es conocido, transparente y mencionado de forma positiva en la comunidad (LinkedIn, Reddit, canales polacos de Slack de TI).&lt;/p&gt;
&lt;h2 id=&quot;implicaciones-para-el-comprador-occidental-en-nearshore&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implicaciones-para-el-comprador-occidental-en-nearshore&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implicaciones para el comprador occidental en nearshore&lt;/h2&gt;
&lt;p&gt;Tres:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Primera, el sénior polaco en B2B es hoy más difícil de captar que en 2023.&lt;/strong&gt; La palanca del lado del sénior ha crecido. Las tarifas son más altas, pero la tarifa no es el único factor; un sénior elige proyectos por curiosidad técnica, calidad del equipo y autonomía.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segunda, las ofertas “en serie” desde el Reino Unido o DACH no funcionan en el mercado polaco.&lt;/strong&gt; Un sénior rechaza una oferta que parezca copiada. Es mejor escribir 3 ofertas hechas a medida que 30 genéricas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tercera, la agencia intermediaria vuelve a tener valor.&lt;/strong&gt; Al margen de la tendencia remota, un mediador en el mercado polaco que conozca a los séniores y sus estilos de trabajo resulta valioso para un comprador del Reino Unido o DACH porque acorta el ciclo de selección.&lt;/p&gt;
&lt;h2 id=&quot;qué-se-lleva-wppoland-de-esta-tendencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-se-lleva-wppoland-de-esta-tendencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué se lleva WPPoland de esta tendencia&lt;/h2&gt;
&lt;p&gt;Nuestra &lt;a href=&quot;/en/careers/&quot;&gt;página de carrera&lt;/a&gt; lleva bandas salariales, jurisdicción UE, stack moderno, B2B, totalmente remoto y una nota de honestidad transparente. No es un truco de marketing; es alineación con el estado estructural del mercado de 2026. Un candidato que se postula lo hace tras un ajuste consciente, no tras un envío masivo.&lt;/p&gt;
&lt;p&gt;En la realidad vivida de nuestra agencia recibimos menos candidaturas que en 2023, pero cada una está más ajustada. El ciclo de selección es más corto. No es una paradoja de los datos de NFJ; son los datos de NFJ en la práctica.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-este-artículo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-este-artículo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja este artículo&lt;/h2&gt;
&lt;p&gt;Se conecta con el &lt;a href=&quot;/en/polish-senior-engineers-nearshore-standard-2026/&quot;&gt;artículo en inglés sobre el sénior polaco en nearshore&lt;/a&gt; (los mismos datos desde la perspectiva del comprador occidental), la &lt;a href=&quot;/es/trabajo-remoto-it-polonia-2026-polemica/&quot;&gt;polémica sobre el trabajo remoto&lt;/a&gt; (contexto del contratista remoto), la &lt;a href=&quot;/es/salarios-desarrolladores-wordpress-polacos-2026/&quot;&gt;polémica sobre los salarios&lt;/a&gt; y la &lt;a href=&quot;/en/careers/&quot;&gt;página de carrera de WPPoland&lt;/a&gt; (señal de jurisdicción UE y solo sénior).&lt;/p&gt;</content:encoded><category>rynek</category><category>kariera</category><category>polska</category><category domain="tag">no-fluff-jobs</category><category domain="tag">rekrutacja</category><category domain="tag">polska</category><category domain="tag">it</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>¿Cuánto tarda una migración a WordPress headless en 2026?</title><link>https://wppoland.com/es/cuanto-tarda-una-migracion-a-wordpress-headless/</link><guid isPermaLink="true">https://wppoland.com/es/cuanto-tarda-una-migracion-a-wordpress-headless/</guid><description>De seis a dieciséis semanas para proyectos típicos, en cuatro fases: descubrimiento, alcance, construcción y cutover, ajuste. Las variables son el tamaño del catálogo, el número de integraciones, la preservación de URLs y la disposición del equipo editorial, no la elección del framework.</description><pubDate>Sun, 26 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;cuánto-tarda-una-migración-a-wordpress-headless-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuánto-tarda-una-migración-a-wordpress-headless-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Cuánto tarda una migración a WordPress headless en 2026?&lt;/h2&gt;
&lt;p&gt;De seis a dieciséis semanas para proyectos típicos. La forma son cuatro fases: descubrimiento, alcance, construcción y cutover, ajuste. Las variables que estiran o comprimen el cronograma son el tamaño del catálogo, el número de integraciones, la preservación de URLs y la disposición del equipo editorial, no la elección del framework.&lt;/p&gt;
&lt;p&gt;Este artículo se ancla en el &lt;a href=&quot;/es/servicios/headless-wordpress/&quot;&gt;pilar de servicios de WordPress headless&lt;/a&gt; y se acompaña de la &lt;a href=&quot;/es/headless-wordpress-nextjs-vs-astro-2026/&quot;&gt;matriz de decisión Next.js vs Astro&lt;/a&gt; por el lado del framework y de &lt;a href=&quot;/es/cloudflare-workers-wordpress-woocommerce-edge/&quot;&gt;Cloudflare Workers y WordPress en el edge&lt;/a&gt; para la capa de runtime.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Sitios solo editoriales de menos de cincuenta páginas: cuatro a seis semanas.&lt;/li&gt;
&lt;li&gt;WooCommerce de hasta unos miles de SKU con integraciones estándar: diez a catorce semanas.&lt;/li&gt;
&lt;li&gt;Multi-región o multilingüe con integraciones a medida: catorce a dieciséis semanas, a veces más.&lt;/li&gt;
&lt;li&gt;Las semanas caras son el alcance (semanas uno y dos) y el cutover (último fin de semana), no la construcción en sí.&lt;/li&gt;
&lt;li&gt;El precio es individual por proyecto; publicamos el cronograma, no el precio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;las-cuatro-fases-en-tiempo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-cuatro-fases-en-tiempo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las cuatro fases en tiempo real&lt;/h2&gt;
&lt;p&gt;Las fases no son etiquetas de un diagrama de Gantt; se mapean a modos de trabajo distintos que requieren a personas diferentes en la sala.&lt;/p&gt;
&lt;h3 id=&quot;fase-1-descubrimiento-semana-cero-a-dos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-descubrimiento-semana-cero-a-dos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1, descubrimiento (semana cero a dos)&lt;/h3&gt;
&lt;p&gt;Las partes interesadas, el equipo editorial, el responsable de analítica y el contacto técnico pasan por tres a cinco sesiones a lo largo de una a dos semanas. Los entregables son una auditoría del modelo de contenido, una baseline de rendimiento tomada del sitio en producción (TTFB, TTI, LCP por plantilla), un inventario de plugins e integraciones y un borrador del mapa de migración SEO.&lt;/p&gt;
&lt;p&gt;El resultado del descubrimiento es input de decisión, no arquitectura. El equipo que se salta el descubrimiento para “ahorrar tiempo” paga el coste en la semana ocho, cuando aflora una integración no declarada y la capa de datos necesita un rediseño.&lt;/p&gt;
&lt;h3 id=&quot;fase-2-alcance-semana-dos-a-tres&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-alcance-semana-dos-a-tres&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2, alcance (semana dos a tres)&lt;/h3&gt;
&lt;p&gt;Decisión de arquitectura: Astro 5+ o Next.js 15, elección de rendering por ruta, patrón de obtención de datos (REST o GraphQL), estrategia de invalidación de caché. El mapa de redirecciones se firma aquí, no más tarde. El flujo editorial se cierra: previsualizaciones, borradores, publicaciones programadas, flujos con varios autores.&lt;/p&gt;
&lt;p&gt;El alcance termina con un engagement letter por escrito y una lista cerrada de entregables. Cualquier cosa que falte aquí será una change order en la semana diez, que es el momento más caro para negociar el alcance.&lt;/p&gt;
&lt;h3 id=&quot;fase-3-construcción-y-cutover-semana-tres-a-doce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-construcción-y-cutover-semana-tres-a-doce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3, construcción y cutover (semana tres a doce)&lt;/h3&gt;
&lt;p&gt;La construcción avanza en sprints de dos semanas con una demo semanal. Cada demo es en staging, no en localhost, para que el equipo vea cómo se comporta de verdad la cara editorial en el nuevo stack. El primer sprint es el design system y una sola plantilla de extremo a extremo; los siguientes sprints se abren por tipo de plantilla.&lt;/p&gt;
&lt;p&gt;El cutover en sí es una ventana de cuarenta y ocho a setenta y dos horas, planificada de forma deliberada. Funcionan dos patrones: cambio de DNS (más limpio, rollback más lento) y cutover por reverse proxy (rollback más rápido, más piezas en movimiento). El mapa de redirecciones se aplica en el edge, no en PHP.&lt;/p&gt;
&lt;p&gt;La ventana de medición en paralelo corre una a dos semanas antes del cutover. Captura regresiones en etiquetas de tracking, validación de schema y Core Web Vitals antes de que lleguen a producción.&lt;/p&gt;
&lt;h3 id=&quot;fase-4-ajuste-y-retainer-semana-doce-a-dieciséis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-ajuste-y-retainer-semana-doce-a-dieciséis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4, ajuste y retainer (semana doce a dieciséis)&lt;/h3&gt;
&lt;p&gt;Los TTLs de caché en el edge se afinan por ruta. La observabilidad (Cloudflare Logpush, pruebas sintéticas, alertas sobre TTFB y tasas 5xx) queda cableada. La entrega al retainer cubre trabajo de nuevas funcionalidades, revisiones trimestrales de Tech Radar y un roadmap para las necesidades cambiantes del equipo editorial.&lt;/p&gt;
&lt;p&gt;Esta es la fase que más se omite. Omitirla cuesta seis meses de incidentes de bajo nivel que el equipo no puede diagnosticar porque nada está instrumentado.&lt;/p&gt;
&lt;h2 id=&quot;qué-estira-el-cronograma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-estira-el-cronograma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué estira el cronograma&lt;/h2&gt;
&lt;p&gt;Tres patrones empujan un proyecto de seis semanas a doce, y un proyecto de doce semanas a veinte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Descubrimiento tardío de integraciones.&lt;/strong&gt; Una pasarela de pago a medida, una integración de ERP heredado por SOAP, un plugin de nicho sin superficie REST. Cada uno suma un adaptador hecho a medida. Cada adaptador añade dos a cuatro semanas de construcción, más la negociación contractual si un tercero posee el sistema upstream.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preservación de URLs.&lt;/strong&gt; Un sitio con treinta patrones únicos de URL es trabajo mecánico. Un sitio con trescientos patrones más una reestructuración de permalinks es un proyecto en sí mismo. El mapa de 301 se firma en el alcance, no se improvisa en la semana diez.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reestructuración del modelo de contenido.&lt;/strong&gt; Cuando el contenido WordPress existente está estructurado alrededor de las plantillas del tema en lugar de campos estructurados, el frontend no puede consumirlo de forma determinista. Reconstruir el modelo de contenido añade dos a seis semanas y exige una disponibilidad del equipo editorial que la mayoría de los equipos subestima.&lt;/p&gt;
&lt;h2 id=&quot;qué-comprime-el-cronograma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-comprime-el-cronograma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué comprime el cronograma&lt;/h2&gt;
&lt;p&gt;Cuatro condiciones acortan el calendario de forma constante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modelo de contenido limpio.&lt;/strong&gt; Custom post types, grupos de campos ACF o Meta Box, o un cambio reciente al editor de bloques con patrones estructurados. El frontend lee datos estructurados y renderiza de forma determinista. Ahorra dos a cuatro semanas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Design system preexistente.&lt;/strong&gt; Una biblioteca en Figma, un set de tokens o una librería de componentes que el equipo ya haya usado. Ahorra una a dos semanas de trabajo de cimientos en el primer sprint.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disponibilidad del equipo editorial.&lt;/strong&gt; Cuando el equipo editorial puede asistir a previsualizaciones semanales y aprobar flujos, la construcción no se atasca esperando aclaraciones. Ahorra una a dos semanas a lo largo del proyecto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Equipo sénior a ambos lados.&lt;/strong&gt; Un senior product owner por parte del cliente reduce a la mitad el ciclo de pregunta y respuesta. La agencia no puede fabricar esto; tiene que venir del comprador.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-la-respuesta-de-seis-semanas-es-errónea&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-la-respuesta-de-seis-semanas-es-errónea&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo la respuesta de seis semanas es errónea&lt;/h2&gt;
&lt;p&gt;Una tienda WooCommerce con tres mil SKU y un checkout a medida no migra en seis semanas. Quien cotice ese plazo está vendiendo otro alcance y renegociará después. La respuesta honesta para este perfil son doce a catorce semanas.&lt;/p&gt;
&lt;p&gt;Un sitio multi-región con cinco locales y flujos de comercio específicos por locale tampoco es un proyecto de seis semanas. Flujos de traducción, validación de hreflang, estrategias de caché específicas por locale e integraciones de pago por región añaden cuatro a seis semanas incluso sobre una baseline saludable.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-la-respuesta-de-dieciséis-semanas-es-errónea&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-la-respuesta-de-dieciséis-semanas-es-errónea&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo la respuesta de dieciséis semanas es errónea&lt;/h2&gt;
&lt;p&gt;Un sitio editorial pequeño, una instalación de WordPress recién creada, un modelo de contenido limpio y un equipo sénior pueden entregar en cinco semanas. Cotizar dieciséis para ese perfil es alcance inflado.&lt;/p&gt;
&lt;p&gt;Un sitio headless greenfield (sin componente de migración, solo un nuevo frontend sobre un WordPress nuevo) se salta la mayor parte de la fase uno y acorta la fase tres. Seis a ocho semanas en total.&lt;/p&gt;
&lt;h2 id=&quot;cómo-es-el-precio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-es-el-precio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo es el precio&lt;/h2&gt;
&lt;p&gt;El precio es individual por proyecto. No publicamos precios de servicios en el sitio público. El engagement letter ata las horas a las cuatro fases anteriores, con un techo fijo en la fase uno (está acotada por el número de entrevistas, no por algo que escale) y time-and-materials o fixed-scope en la fase tres (según lo estable que sea el alcance tras el alcance).&lt;/p&gt;
&lt;p&gt;Facturamos en EUR o USD, jurisdicción UE, contrato B2B. Consulta el &lt;a href=&quot;/es/servicios/headless-wordpress/&quot;&gt;pilar de servicios de WordPress headless&lt;/a&gt; para el modelo de colaboración.&lt;/p&gt;
&lt;h2 id=&quot;cluster-reading&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cluster-reading&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cluster reading&lt;/h2&gt;
&lt;p&gt;Los artículos de apoyo del clúster, por tema.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/cloudflare-workers-wordpress-woocommerce-edge/&quot;&gt;Cloudflare Workers y WordPress en el edge&lt;/a&gt; sobre la capa de runtime del nuevo stack.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>wordpress</category><category>headless</category><category>migration</category><category domain="tag">headless-wordpress</category><category domain="tag">migration-timeline</category><category domain="tag">astro</category><category domain="tag">nextjs</category><category domain="tag">cloudflare-workers</category><category domain="tag">woocommerce</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Trabajo remoto en IT 2026: el 60 por ciento está en casa, pero nadie lo dice</title><link>https://wppoland.com/es/trabajo-remoto-it-polonia-2026-polemica/</link><guid isPermaLink="true">https://wppoland.com/es/trabajo-remoto-it-polonia-2026-polemica/</guid><description>Los datos de Just Join IT para 2024 y 2025 muestran que el 60.12 por ciento de los especialistas IT polacos trabajan totalmente en remoto, el 32.47 por ciento en híbrido y solo el 7.41 por ciento en oficina. No es una hipótesis, son datos en vivo del agregador de ofertas. Polémica contra la narrativa del &quot;regreso a la oficina&quot; y lo que significa para el comprador occidental de nearshore.</description><pubDate>Sun, 26 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;trabajo-remoto-en-it-2026-el-60-por-ciento-está-en-casa-pero-nadie-lo-dice&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trabajo-remoto-en-it-2026-el-60-por-ciento-está-en-casa-pero-nadie-lo-dice&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trabajo remoto en IT 2026: el 60 por ciento está en casa, pero nadie lo dice&lt;/h2&gt;
&lt;p&gt;Sesenta por ciento. Los datos en vivo de &lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Just Join IT para 2024 y 2025&lt;/a&gt; reportan al 60.12 por ciento de los especialistas IT polacos trabajando en remoto, al 32.47 por ciento en híbrido y solo al 7.41 por ciento en oficina. Pese a ello, la narrativa pública en 2026 es que “todos vuelven a la oficina”. Los datos dicen lo contrario. Este artículo lleva esa polémica con cifras concretas.&lt;/p&gt;
&lt;p&gt;El texto se conecta con el &lt;a href=&quot;/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/&quot;&gt;artículo en inglés sobre el senior polaco en nearshore&lt;/a&gt; y con la &lt;a href=&quot;/es/salarios-desarrolladores-wordpress-polacos-2026/&quot;&gt;polémica sobre los salarios de los desarrolladores WordPress polacos&lt;/a&gt;, donde el mismo conjunto de datos se usa en otro contexto.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Just Join IT en vivo: 60.12 por ciento efectivamente remoto, 32.47 por ciento híbrido, 7.41 por ciento oficina.&lt;/li&gt;
&lt;li&gt;Ofertas listadas como remotas: 46.75 por ciento. La práctica adelanta en 13 puntos porcentuales al anuncio.&lt;/li&gt;
&lt;li&gt;Tendencia estable o creciente desde 2023 hasta 2025.&lt;/li&gt;
&lt;li&gt;Para nearshore Polonia: el estándar del contratista es el trabajo remoto, independientemente de la descripción de la oferta.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;las-cifras-que-están-públicamente-disponibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-cifras-que-están-públicamente-disponibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las cifras que están públicamente disponibles&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Just Join IT, informe salarial 2024/2025&lt;/a&gt; (datos en vivo, agregador):&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Modo de trabajo efectivo&lt;/th&gt;&lt;th&gt;Por ciento&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Remoto&lt;/td&gt;&lt;td&gt;60.12 por ciento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Híbrido&lt;/td&gt;&lt;td&gt;32.47 por ciento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Oficina&lt;/td&gt;&lt;td&gt;7.41 por ciento&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Ofertas listadas&lt;/th&gt;&lt;th&gt;Por ciento&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Remote&lt;/td&gt;&lt;td&gt;46.75 por ciento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hybrid&lt;/td&gt;&lt;td&gt;46.27 por ciento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Office only&lt;/td&gt;&lt;td&gt;6.98 por ciento&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La diferencia entre el listado y la práctica es de 13.37 puntos porcentuales para totalmente remoto. Dicho de otro modo, el 13.37 por ciento de los especialistas IT trabaja en remoto aunque su oferta no estuviera listada así. Es el dato clave para entender el mercado.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Mercado de Trabajo IT 2025/2026&lt;/a&gt; confirma la tendencia, aunque con un corte distinto: B2B a nivel senior representa el 72 por ciento de las colocaciones en 2025. Un contrato B2B significa trabajo remoto por defecto, porque no hay relación laboral ni obligación de presencia en oficina.&lt;/p&gt;
&lt;h2 id=&quot;polémica-por-qué-regreso-a-la-oficina-es-narrativa-no-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#polémica-por-qué-regreso-a-la-oficina-es-narrativa-no-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Polémica: por qué “regreso a la oficina” es narrativa, no datos&lt;/h2&gt;
&lt;p&gt;Tres interpretaciones de cómo las cifras se relacionan con la narrativa mediática:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Primera, narrativa&lt;/strong&gt;: en 2024 y 2025 muchas grandes empresas anunciaron el “regreso a la oficina”. Esos anuncios llegaron a los medios. Se recibieron como tendencia de mercado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segunda, segmental&lt;/strong&gt;: los anuncios afectaban a un segmento concreto (corporaciones globales con oficina en Polonia, algunas fintechs, parte del big tech). El resto del mercado, sobre todo el senior B2B, no se vio afectado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tercera, conductual&lt;/strong&gt;: allí donde el empleador forzó el regreso, los especialistas cambiaron de empleador. Los datos de Just Join IT, que miden el modo de trabajo efectivo y no las declaraciones de los empleadores, muestran el efecto neto: el trabajo remoto se mantuvo porque los especialistas eligen trabajo remoto y tienen la palanca para conservarlo.&lt;/p&gt;
&lt;p&gt;La mediana B2B del senior es de 24360 PLN netos según Just Join IT 2024. Un senior a esta tarifa tiene decenas de ofertas activas en el mercado. Forzar el regreso le cuesta al empleador ese senior.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-cambió-la-pandemia-y-lo-que-no-cambió&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-cambió-la-pandemia-y-lo-que-no-cambió&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que cambió la pandemia y lo que no cambió&lt;/h2&gt;
&lt;p&gt;Lo que cambió:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El mercado polaco de IT internalizó las herramientas remotas (Slack/Zoom/Notion/Linear) como estándar.&lt;/li&gt;
&lt;li&gt;Los empleadores aprendieron a hacer onboarding y a llevar el proyecto en remoto.&lt;/li&gt;
&lt;li&gt;Los especialistas se mudaron de las ciudades de oficina a localizaciones más baratas (Triciudad, Wroclaw, Cracovia, ciudades más pequeñas).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que no cambió:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los empleadores locales muy pequeños siguen prefiriendo la oficina.&lt;/li&gt;
&lt;li&gt;El onboarding de un junior es más difícil en remoto; la cuota de junior en el mercado bajó al 5.3 por ciento en 2025 (No Fluff Jobs).&lt;/li&gt;
&lt;li&gt;La cultura de equipo exige construcción deliberada; no surge sola por Slack.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El último punto es donde nació la narrativa mítica del regreso a la oficina. Un empleador que no supo construir cultura de equipo en remoto intenta forzar la proximidad física como solución. Los especialistas responden cambiando de empleador. Las cifras lo confirman.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-esto-significa-para-el-comprador-occidental-de-nearshore&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-esto-significa-para-el-comprador-occidental-de-nearshore&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que esto significa para el comprador occidental de nearshore&lt;/h2&gt;
&lt;p&gt;Cinco implicaciones para una agencia o comprador que trabaja con un especialista polaco:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Primera&lt;/strong&gt;, un especialista polaco senior B2B en 2026 es remoto por defecto. La ubicación física en Polonia es prácticamente irrelevante; la ubicación polaca solo importa para la zona horaria y la jurisdicción legal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segunda&lt;/strong&gt;, las herramientas online están maduras. Slack, Linear, Notion, Loom, GitHub, Cloudflare. El senior polaco trabaja con estas herramientas desde 2020 y no las reaprende para un contrato occidental.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tercera&lt;/strong&gt;, la asincronía es el estándar. El senior polaco no espera una reunión diaria con Reino Unido o DACH. Un standup semanal más actualizaciones escritas es formato suficiente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuarta&lt;/strong&gt;, un contratista carga menos a RR. HH. y a la oficina. Sin necesidad de alquilar mesa, sin coordinación de beneficios, sin retaguardia corporativa. La tarifa B2B es una tarifa neta a banco.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quinta&lt;/strong&gt;, jurisdicción de la UE post-Brexit. Independientemente de la ubicación física en Polonia, un contratista B2B opera bajo ley polaca, y Polonia está bajo RGPD, NIS2 y (donde aplique) DORA.&lt;/p&gt;
&lt;h2 id=&quot;polonia-vs-reino-unido-vs-dach-comparación-de-estructura-de-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#polonia-vs-reino-unido-vs-dach-comparación-de-estructura-de-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Polonia vs Reino Unido vs DACH: comparación de estructura de mercado&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Dimensión&lt;/th&gt;&lt;th&gt;Polonia&lt;/th&gt;&lt;th&gt;Reino Unido&lt;/th&gt;&lt;th&gt;Alemania&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;IT efectivamente remoto&lt;/td&gt;&lt;td&gt;60.12 por ciento (Just Join IT)&lt;/td&gt;&lt;td&gt;varía por sector, más bajo que en 2022&lt;/td&gt;&lt;td&gt;más bajo que en Polonia, sin cifra directa&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Senior en contrato B2B&lt;/td&gt;&lt;td&gt;72 por ciento (NFJ 2025)&lt;/td&gt;&lt;td&gt;modelo day rate dominante&lt;/td&gt;&lt;td&gt;modelo de contrato laboral dominante&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Jurisdicción&lt;/td&gt;&lt;td&gt;UE&lt;/td&gt;&lt;td&gt;fuera de la UE desde 2020&lt;/td&gt;&lt;td&gt;UE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Estándar del contratista&lt;/td&gt;&lt;td&gt;B2B mensual&lt;/td&gt;&lt;td&gt;day rate vía agencia&lt;/td&gt;&lt;td&gt;Werkvertrag o Festanstellung&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Polonia es el único mercado de esta comparación que combina alta densidad de remoto con un modelo B2B dominante y jurisdicción de la UE. Es una posición estructural, no una moda pasajera.&lt;/p&gt;
&lt;h2 id=&quot;polémica-lo-que-esto-significa-para-el-desarrollador-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#polémica-lo-que-esto-significa-para-el-desarrollador-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Polémica: lo que esto significa para el “desarrollador WordPress”&lt;/h2&gt;
&lt;p&gt;Un desarrollador WordPress polaco en 2026 no es un “desarrollador WordPress polaco”. Es un senior de IT en B2B polaco que construye WordPress + Astro o Next.js + Cloudflare. Trabaja en remoto. Colabora con clientes en Alemania, Reino Unido, Estados Unidos, a veces desde Polonia.&lt;/p&gt;
&lt;p&gt;Que el cliente abra el portátil en Berlín, Londres o San Francisco no cambia el hecho de que el senior esté en la Triciudad, en Wroclaw o en la frontera. El mercado polaco de IT es remoto a la manera polaca, no por el cliente.&lt;/p&gt;
&lt;p&gt;Por eso “WordPress polaco nearshore” es un término distorsionador en 2026. No es solo nearshore; es un senior remoto que opera en el mercado de la UE con tarifa polaca y proceso occidental.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-este-artículo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-este-artículo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja este artículo&lt;/h2&gt;
&lt;p&gt;Se conecta con el &lt;a href=&quot;/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/&quot;&gt;artículo en inglés sobre el senior polaco en nearshore&lt;/a&gt;, la &lt;a href=&quot;/es/salarios-desarrolladores-wordpress-polacos-2026/&quot;&gt;polémica sobre los salarios de los desarrolladores WordPress polacos&lt;/a&gt;, la &lt;a href=&quot;/en/careers/&quot;&gt;página de carreras de WPPoland&lt;/a&gt; y el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pilar de servicios headless WordPress&lt;/a&gt;, donde los estándares técnicos del senior polaco se traducen en una oferta para el cliente occidental.&lt;/p&gt;</content:encoded><category>mercado</category><category>carrera</category><category>polonia</category><category domain="tag">trabajo-remoto</category><category domain="tag">just-join-it</category><category domain="tag">polonia</category><category domain="tag">it</category><category domain="tag">nearshore</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>WordPress como sistema operativo de la web agéntica. ¿Quién paga los tokens?</title><link>https://wppoland.com/es/ai-en-plugins-wordpress-quien-paga-los-tokens/</link><guid isPermaLink="true">https://wppoland.com/es/ai-en-plugins-wordpress-quien-paga-los-tokens/</guid><description>Automattic anunció que WordPress es el sistema operativo de la web agéntica. El artículo presume de un 43 por ciento de cuota de mercado y soporte total para MCP. Sin embargo no responde a la pregunta básica. Quién paga los tokens cuando la IA llega al panel de un cliente sin formación técnica.</description><pubDate>Sun, 26 Apr 2026 09:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;wordpress-como-sistema-operativo-de-la-web-agéntica-quién-paga-los-tokens&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-como-sistema-operativo-de-la-web-agéntica-quién-paga-los-tokens&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress como sistema operativo de la web agéntica. ¿Quién paga los tokens?&lt;/h2&gt;
&lt;p&gt;Automattic anunció el 21 de abril de 2026 en el artículo &lt;a href=&quot;https://automattic.com/2026/04/21/wordpress-operating-system-agentic-web/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress as the Operating System of the Agentic Web&lt;/a&gt; que WordPress es el sistema operativo de la web agéntica. El texto de James Grierson, responsable de expansión global de la empresa, enumera 8 puntos fuertes y 6 puntos débiles de este papel. Falta una pregunta. Quién cubre el coste de los tokens de IA en el lado del usuario final. Esta brecha decide quién recibirá la primera factura inesperada cuando se publique WordPress 7.0.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;«WordPress’s foundational principles position it uniquely to become the operating system of the agentic web.»&lt;/p&gt;
&lt;p&gt;James Grierson, Automattic, 21 de abril de 2026&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Llamar al 43 por ciento de la web «operating system» del futuro agéntico es una afirmación rotunda. Omitir quién paga el uso de IA que circula por ese sistema es una omisión igual de rotunda.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-automattic-anunció-realmente-el-21-de-abril-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-automattic-anunció-realmente-el-21-de-abril-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que Automattic anunció realmente el 21 de abril de 2026&lt;/h2&gt;
&lt;p&gt;Automattic posiciona a WordPress como base de la web agéntica por tres razones. Código abierto, un ecosistema de 61 000 plugins gratuitos y APIs estandarizadas. James Grierson cita las propias estadísticas de Automattic, en concreto &lt;strong&gt;una cuota del 43 por ciento de todos los sitios web&lt;/strong&gt; y más del 60 por ciento del mercado de CMS. La cifra de 90 000 plugins incluye los marketplaces comerciales.&lt;/p&gt;
&lt;h3 id=&quot;lista-completa-de-pros-y-contras-del-artículo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-completa-de-pros-y-contras-del-artículo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista completa de pros y contras del artículo&lt;/h3&gt;
&lt;p&gt;Automattic enumera 8 fortalezas de WordPress como plataforma para agentes de IA. Un ecosistema masivo y probado. Transparencia del código abierto. Código revisado por pares y estándares comunitarios. Seguridad basada en transparencia. REST API y conectividad MCP. Extensibilidad comercial vía WooCommerce. Arquitectura de hooks y filtros. Décadas de documentación.&lt;/p&gt;
&lt;p&gt;La lista de 6 debilidades es igual de concreta. Código heredado y deuda técnica. Calidad inconsistente de los plugins. Plugins abandonados e inseguros. Sobrecarga de rendimiento. Complejidad del sistema de hooks para agentes. Percepción de PHP y reducción del cauce de nuevos desarrolladores. Fragmentación entre entornos de hosting.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-falta-en-el-artículo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-falta-en-el-artículo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que falta en el artículo&lt;/h3&gt;
&lt;p&gt;En el artículo de Grierson la palabra token no aparece ni una sola vez. No hay sección sobre la propiedad de la clave API. No hay modelo de facturación. No hay escenario en el que un agente agote la cuota planificada a mitad de semana. La omisión deriva de la perspectiva del autor. El artículo procede de una empresa que vende hosting y módulos de IA en paquete. Un operador autoalojado tiene otras prioridades.&lt;/p&gt;
&lt;p&gt;Una segunda omisión afecta al registro de las acciones que ejecuta el agente. Cada escritura por MCP modifica el estado de la base de datos y exige una entrada de auditoría aparte, algo que el artículo no aborda. Una tercera omisión es la política de privacidad, que decide qué datos de un artículo o comentario salen del servidor y llegan al proveedor de IA. Estas tres omisiones separan una visión de un producto listo para desplegar.&lt;/p&gt;
&lt;h2 id=&quot;model-context-protocol-y-abilities-api-en-la-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#model-context-protocol-y-abilities-api-en-la-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Model Context Protocol y Abilities API en la práctica&lt;/h2&gt;
&lt;p&gt;Model Context Protocol es un estándar que permite a los agentes de IA conectarse con sistemas externos. Automattic desplegó MCP en WordPress.com en dos fases. Lectura primero, escritura después. WordPress autoalojado alcanza la misma capacidad mediante la Abilities API y WordPress MCP Adapter.&lt;/p&gt;
&lt;h3 id=&quot;solo-lectura-en-octubre-de-2025-escritura-en-marzo-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solo-lectura-en-octubre-de-2025-escritura-en-marzo-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solo lectura en octubre de 2025, escritura en marzo de 2026&lt;/h3&gt;
&lt;p&gt;WordPress.com habilitó MCP en modo de solo lectura en octubre de 2025. &lt;strong&gt;El soporte completo para operaciones de escritura&lt;/strong&gt; entró en producción en marzo de 2026. Desde ese momento un agente puede crear un artículo, publicarlo, añadir un comentario y gestionar medios mediante lenguaje natural. Cada operación genera un coste en el lado del modelo que la ejecuta.&lt;/p&gt;
&lt;p&gt;La consecuencia práctica es simple. Activar un único plugin que dialoga con un agente convierte cada edición de artículo en una solicitud al proveedor externo de IA. La factura llega allí donde resida la clave API.&lt;/p&gt;
&lt;h3 id=&quot;qué-cambia-la-abilities-api-en-la-versión-autoalojada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-cambia-la-abilities-api-en-la-versión-autoalojada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué cambia la Abilities API en la versión autoalojada&lt;/h3&gt;
&lt;p&gt;La Abilities API combinada con WordPress MCP Adapter permite a los autores de plugins exponer funcionalidades existentes como herramientas para agentes. El adaptador tiende un puente entre las capacidades del plugin y la especificación MCP. El autor de un plugin existente añade unas pocas líneas de configuración. El agente accede a esa funcionalidad.&lt;/p&gt;
&lt;p&gt;Este atajo reduce la barrera de entrada, por lo que el número de plugins con funcionalidades de IA en el repositorio WordPress.org crece más rápido que el número de auditorías de seguridad de esos plugins. WPPoland observa este patrón desde marzo de 2026 entre los clientes inscritos en el programa &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;el-papel-de-wordpress-playground-para-los-agentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-papel-de-wordpress-playground-para-los-agentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El papel de WordPress Playground para los agentes&lt;/h3&gt;
&lt;p&gt;WordPress Playground arranca una instancia completa de WordPress en el navegador en segundos. Automattic posiciona esta herramienta como entorno aislado para agentes. El agente prueba un cambio en Playground, y solo la acción confirmada llega a producción. La construcción reduce el riesgo de daños en los datos por alucinaciones del modelo. No cambia quién paga los tokens consumidos.&lt;/p&gt;
&lt;h2 id=&quot;la-brecha-en-la-visión-es-decir-quién-paga-los-tokens&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-brecha-en-la-visión-es-decir-quién-paga-los-tokens&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La brecha en la visión, es decir, quién paga los tokens&lt;/h2&gt;
&lt;p&gt;Russell Heimlich, desarrollador WordPress con 20 años en el ecosistema, planteó esta cuestión públicamente en &lt;a href=&quot;https://russellenvy.com/wordpress-ai-plugins-token-cost/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress AI Features Are Coming. Nobody Is Talking About What They’ll Cost Your Users&lt;/a&gt;, publicado el 24 de abril de 2026. Heimlich, conocido en la comunidad por el alias russellenvy, señala que Automattic no menciona en ningún momento los costes de IA en su visión agéntica. El argumento es práctico. Cuando un plugin se instala solo, pide al usuario conectar una cuenta en un proveedor de IA y abre después un campo de chat en el panel, el usuario no sabe que cada mensaje cuesta dinero.&lt;/p&gt;
&lt;h3 id=&quot;el-argumento-de-russell-heimlich&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-argumento-de-russell-heimlich&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El argumento de Russell Heimlich&lt;/h3&gt;
&lt;p&gt;Heimlich describe su propio caso de trabajo con modelos de IA. Utiliza una suscripción mensual con el proveedor del modelo Claude y agota el límite semanal a pesar de optimizaciones avanzadas de prompt y flujo de trabajo. De ello extrae una conclusión concreta. Una persona sin experiencia con modelos de lenguaje, por ejemplo un blogger gastronómico que acaba de levantar un sitio e instalar un plugin popular con IA, agotará la cuota más rápido y sin un mensaje de error claro sobre la causa.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;«Every interaction between an AI agent and a WordPress site costs tokens.»&lt;/p&gt;
&lt;p&gt;«Every single one of those exchanges burns tokens. Real money. Her money. And she has no idea.»&lt;/p&gt;
&lt;p&gt;Russell Heimlich, russellenvy.com, 24 de abril de 2026&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Un segundo argumento de Heimlich se refiere a la responsabilidad sobre la experiencia del usuario. Un plugin que introduce una funcionalidad de IA sin un mensaje legible sobre costes traslada la carga de educar al usuario al operador del sitio y, de manera indirecta, a la agencia. Un tercer argumento aborda la reputación de la marca WordPress. La primera oleada de descontento tras facturas inesperadas repercute en todo el ecosistema, con independencia de que el origen del problema sea un único plugin.&lt;/p&gt;
&lt;h3 id=&quot;tres-modelos-de-propiedad-de-la-clave-api-y-sus-consecuencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tres-modelos-de-propiedad-de-la-clave-api-y-sus-consecuencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tres modelos de propiedad de la clave API y sus consecuencias&lt;/h3&gt;
&lt;p&gt;En la práctica predominan 3 modelos para facturar tokens de IA en plugins WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bring-your-own-key.&lt;/strong&gt; El cliente crea una cuenta en el proveedor de IA, genera una clave y la pega en el panel del plugin. Los costes van directamente al cliente. El autor del plugin no actúa como intermediario. El modelo es contablemente transparente y exige que el cliente entienda cómo funciona la cuota de tokens del proveedor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suscripción gestionada por el autor del plugin.&lt;/strong&gt; El plugin cobra al cliente una cuota mensual fija y liquida directamente con el proveedor de IA. El riesgo de uso indebido recae sobre el autor del plugin, que equilibra la tarifa con el consumo real. El modelo es cómodo para el usuario final y arriesgado para el operador del plugin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuota compartida con límite mensual.&lt;/strong&gt; Todos los clientes del plugin comparten una sola cuota. Tras agotarse, la cuota se renueva al mes siguiente o se amplía en un paquete superior. El modelo simplifica el mensaje al usuario e introduce un nuevo efecto, a saber, el vecino que consume mis tokens.&lt;/p&gt;
&lt;h3 id=&quot;el-escenario-del-blogger-gastronómico-de-tiktok&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-escenario-del-blogger-gastronómico-de-tiktok&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El escenario del blogger gastronómico de TikTok&lt;/h3&gt;
&lt;p&gt;Heimlich describió este escenario en primer lugar. Un blogger viral monta un sitio WordPress, instala un plugin con IA, recorre el asistente. El asistente pide conectar una cuenta de Claude, ChatGPT o Gemini. El blogger conecta la cuenta porque la instrucción lo indica. A continuación trata el campo de IA como un chat común. Dos días después la cuota semanal desaparece. El plugin muestra un loader vacío sin mensaje. El blogger culpa a WordPress. Cada parte de esta historia se repite hoy en clientes reales.&lt;/p&gt;
&lt;h2 id=&quot;qué-significa-para-los-propietarios-de-sitios-wordpress-antes-del-lanzamiento-de-70&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-significa-para-los-propietarios-de-sitios-wordpress-antes-del-lanzamiento-de-70&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué significa para los propietarios de sitios WordPress antes del lanzamiento de 7.0&lt;/h2&gt;
&lt;p&gt;El lanzamiento de WordPress 7.0 se acerca con rapidez. &lt;a href=&quot;https://wordpress.org/news/2026/03/wordpress-7-0-release-candidate-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;La versión Release Candidate 2 se publicó el 26 de marzo de 2026 en wordpress.org&lt;/a&gt;. La fecha de disponibilidad general no está oficialmente confirmada en las comunicaciones del proyecto. Independientemente de la fecha exacta, la infraestructura MCP en el lado autoalojado madura en paralelo. Un operador debe ejecutar 3 movimientos antes de la primera oleada de actualizaciones de plugins con IA dentro.&lt;/p&gt;
&lt;h3 id=&quot;auditoría-de-los-plugins-instalados-respecto-a-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoría-de-los-plugins-instalados-respecto-a-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoría de los plugins instalados respecto a IA&lt;/h3&gt;
&lt;p&gt;Revisa cada plugin instalado contra 3 informaciones. Si la hoja de ruta del producto incluye un componente de IA en la próxima versión. Si el autor del plugin ha publicado un modelo de facturación de tokens. Si existe la opción de desactivar las funcionalidades de IA sin perder el resto de las capacidades del plugin. Los plugins sin estas respuestas exigen monitorizar el changelog entre actualizaciones.&lt;/p&gt;
&lt;p&gt;En la práctica 3 categorías de plugins introducen funcionalidades de IA con mayor rapidez. Plugins de SEO, como Yoast SEO y Rank Math, donde el generador de meta descripciones recurre a un modelo de lenguaje. Plugins de calendarios y eventos, como The Events Calendar, donde un agente genera descripciones de series recurrentes de eventos. Plugins de comercio y CRM, donde un asistente de IA propone descripciones de productos y respuestas a consultas de clientes. Cada una de estas 3 categorías tiene un perfil distinto de consumo de tokens, porque la longitud de un único prompt difiere.&lt;/p&gt;
&lt;p&gt;Una auditoría completa se combina sin fricciones con una &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoría de seguridad WordPress&lt;/a&gt; cada seis meses. WPPoland realiza la auditoría como parte del programa de mantenimiento y, desde marzo de 2026, añade un mapa de funcionalidades de IA en los plugins instalados.&lt;/p&gt;
&lt;h3 id=&quot;preguntas-a-los-proveedores-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preguntas-a-los-proveedores-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preguntas a los proveedores de plugins&lt;/h3&gt;
&lt;p&gt;Tres preguntas al autor del plugin antes de activar el modo IA suenan concretas. Primera, dónde reside la clave API y quién la paga. Segunda, qué mensaje recibe el usuario cuando se agota la cuota de tokens. Tercera, si cada acción que ejecuta el agente queda registrada de forma que pueda reconstruirse el historial. Los autores de plugins serios responden en un día. La ausencia de respuesta es por sí misma una respuesta.&lt;/p&gt;
&lt;h3 id=&quot;configurar-el-comportamiento-por-defecto-cuando-faltan-tokens&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-el-comportamiento-por-defecto-cuando-faltan-tokens&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar el comportamiento por defecto cuando faltan tokens&lt;/h3&gt;
&lt;p&gt;Configura el plugin para que la falta de tokens degrade la funcionalidad en lugar de bloquear el panel. Tres ajustes resuelven el 80 por ciento de los problemas. Un mensaje textual sobre la causa del error en lugar de un loader vacío. Una copia local de la última respuesta exitosa visible como placeholder. La posibilidad de desactivar el módulo de IA desde un perfil de editor sin tocar código.&lt;/p&gt;
&lt;h2 id=&quot;qué-deben-hacer-los-autores-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-deben-hacer-los-autores-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué deben hacer los autores de plugins&lt;/h2&gt;
&lt;p&gt;Los autores de plugins cargan con mayor responsabilidad que los operadores de sitios porque modelan la primera experiencia del usuario final con un agente de IA. Tres principios de diseño reducen el número de clientes sorprendidos tras la primera factura.&lt;/p&gt;
&lt;h3 id=&quot;mensaje-de-coste-antes-de-la-primera-petición&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mensaje-de-coste-antes-de-la-primera-petición&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mensaje de coste antes de la primera petición&lt;/h3&gt;
&lt;p&gt;La primera petición a un agente la antecede siempre un mensaje. El plugin muestra qué acción se va a ejecutar, cuántos tokens se consumirán de manera aproximada y qué cuenta de IA se cargará. El mensaje aparece una vez y su ausencia cuesta la confianza del usuario en la primera sorpresa. El patrón está consagrado en herramientas populares para desarrolladores, como GitHub Copilot o Cursor.&lt;/p&gt;
&lt;h3 id=&quot;modo-de-degradación-en-lugar-del-loader-vacío&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modo-de-degradación-en-lugar-del-loader-vacío&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modo de degradación en lugar del loader vacío&lt;/h3&gt;
&lt;p&gt;El modo de degradación gestiona 4 estados de la cuota de tokens. Acceso completo. Aviso de saldo bajo. Modo de solo lectura, donde el agente lee datos pero no genera contenido. Modo desactivado. Cada estado tiene su propio mensaje al usuario. Un loader vacío no es un estado aceptable porque un usuario sin contexto lo interpreta como caída general de la plataforma.&lt;/p&gt;
&lt;h3 id=&quot;bring-your-own-key-vs-suscripción-vs-cuota-compartida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bring-your-own-key-vs-suscripción-vs-cuota-compartida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bring-your-own-key vs. suscripción vs. cuota compartida&lt;/h3&gt;
&lt;p&gt;La elección del modelo de facturación afecta a 3 áreas a la vez, a saber, el mensaje de instalación, el panel de configuración y el procedimiento de respuesta a incidentes. Bring-your-own-key requiere un onboarding cuidadoso del cliente. La suscripción exige negociar volumen con el proveedor de IA por parte del autor del plugin. La cuota compartida exige supervisar usos indebidos. El autor del plugin documenta la elección del modelo en la documentación de usuario, no solo en la política de privacidad.&lt;/p&gt;
&lt;h2 id=&quot;cómo-debe-preparar-la-agencia-a-sus-clientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-debe-preparar-la-agencia-a-sus-clientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo debe preparar la agencia a sus clientes&lt;/h2&gt;
&lt;p&gt;Una agencia que mantiene varios sitios de clientes tiene 3 puntos que alinear con cada cliente antes del lanzamiento de WordPress 7.0. Una cláusula contractual sobre servicios de IA. Un régimen de actualizaciones de plugins. La comunicación de un incidente tras superar un límite de tokens.&lt;/p&gt;
&lt;h3 id=&quot;cláusula-contractual-sobre-servicios-externos-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cláusula-contractual-sobre-servicios-externos-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cláusula contractual sobre servicios externos de IA&lt;/h3&gt;
&lt;p&gt;La cláusula consta de 4 frases. El cliente cubre los costes de tokens en proveedores externos de IA de manera directa. La agencia informa al cliente de cada nueva funcionalidad de IA en plugins mantenidos antes de la activación. El cliente autoriza la activación por escrito. La agencia monitoriza el consumo y reporta anomalías en un plazo de 48 horas. El patrón nace de la experiencia consolidada de WPPoland con clientes empresariales, donde los costes externos inesperados deterioran la relación con mayor rapidez.&lt;/p&gt;
&lt;p&gt;La cláusula describe además un procedimiento de emergencia en 2 pasos. Primero, pausa automática de las peticiones del agente tras superar un umbral acordado con el cliente. Segundo, contacto de la agencia con el cliente en modo de trabajo, esto es, correo electrónico y teléfono dentro del horario laboral del cliente. Un umbral indefinido significa, en la práctica, que la primera información sobre el exceso llega al cliente en la factura del proveedor de IA, lo cual es la causa más frecuente de pérdida de confianza en el primer trimestre de colaboración.&lt;/p&gt;
&lt;h3 id=&quot;régimen-de-actualizaciones-es-decir-manual-automático-o-tras-revisión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#régimen-de-actualizaciones-es-decir-manual-automático-o-tras-revisión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Régimen de actualizaciones, es decir, manual, automático o tras revisión&lt;/h3&gt;
&lt;p&gt;El cliente elige 1 de 3 regímenes de actualización de plugins. Actualizaciones manuales en las que la agencia despliega una nueva versión tras pruebas. Actualizaciones automáticas con un informe diario de cambios. Actualizaciones tras revisión, en las que la agencia bloquea la introducción de funcionalidades nuevas hasta la aprobación del cliente. El régimen tras revisión protege mejor al cliente durante el periodo de introducción de funcionalidades de IA en los plugins.&lt;/p&gt;
&lt;h3 id=&quot;qué-incluir-en-el-briefing-para-un-proyecto-nuevo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-incluir-en-el-briefing-para-un-proyecto-nuevo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué incluir en el briefing para un proyecto nuevo&lt;/h3&gt;
&lt;p&gt;El briefing de un proyecto nuevo contempla 4 preguntas adicionales respecto a un briefing de 2024. Primera, si el cliente acepta la presencia de funcionalidades de IA en el panel editorial. Segunda, quién será propietario de las claves API en proveedores de IA. Tercera, qué presupuesto mensual destina el cliente a tokens. Cuarta, qué escenarios de usuario no deben generar peticiones al agente. Estas 4 preguntas responden a los huecos que Automattic no cerró en su visión.&lt;/p&gt;
&lt;p&gt;Tras estas decisiones un proyecto puede usar con seguridad la infraestructura MCP, la Abilities API y el ecosistema de plugins. El operador conoce los costes. El autor del plugin conoce las limitaciones. El agente de IA tiene fronteras claramente definidas. El resto de fortalezas de WordPress, como el código abierto y la documentación amplia, funcionan sin cambios.&lt;/p&gt;
&lt;p&gt;WPPoland mantiene esta conversación con cada cliente desde marzo de 2026. El mapa completo de prácticas se describe en detalle en &lt;a href=&quot;/es/hacer-sitio-visible-para-ai-y-llms-2026/&quot;&gt;cómo hacer visible tu sitio para la IA y los LLMs&lt;/a&gt; y en &lt;a href=&quot;/es/llmo-strategic-summary/&quot;&gt;resumen estratégico LLMO&lt;/a&gt;. La visibilidad para agentes es un tema aparte, pero el fundamento es el mismo, a saber, comprender dónde empieza y dónde termina la responsabilidad sobre el coste de una consulta.&lt;/p&gt;
&lt;h2 id=&quot;preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preguntas frecuentes&lt;/h2&gt;
&lt;h3 id=&quot;cada-nuevo-plugin-de-wordpress-incluirá-funcionalidades-de-ia-tras-el-lanzamiento-de-70&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cada-nuevo-plugin-de-wordpress-incluirá-funcionalidades-de-ia-tras-el-lanzamiento-de-70&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Cada nuevo plugin de WordPress incluirá funcionalidades de IA tras el lanzamiento de 7.0?&lt;/h3&gt;
&lt;p&gt;No. Una funcionalidad de IA en un plugin requiere una decisión de su autor, integración con un proveedor y una documentación separada de facturación. El lanzamiento de WordPress 7.0 simplifica esa integración mediante la Abilities API y no obliga a nadie a añadir IA. El ciclo de lanzamiento de cada plugin decide.&lt;/p&gt;
&lt;h3 id=&quot;cómo-reconocer-que-un-plugin-acaba-de-consumir-mis-tokens&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-reconocer-que-un-plugin-acaba-de-consumir-mis-tokens&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Cómo reconocer que un plugin acaba de consumir mis tokens?&lt;/h3&gt;
&lt;p&gt;Revisa el panel de facturación del proveedor de IA al que el plugin está conectado. Anthropic, OpenAI y Google AI exponen historial de consumo por clave API. Un plugin que cumpla los estándares de registro emite su propio informe de consumo en el panel. La ausencia de tal informe es una señal de alerta.&lt;/p&gt;
&lt;h3 id=&quot;una-clave-api-propia-es-más-segura-que-una-suscripción-dentro-del-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#una-clave-api-propia-es-más-segura-que-una-suscripción-dentro-del-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Una clave API propia es más segura que una suscripción dentro del plugin?&lt;/h3&gt;
&lt;p&gt;La seguridad depende de dos factores, a saber, la higiene de almacenamiento de la clave y el procedimiento de respuesta a un uso indebido. Bring-your-own-key da al cliente control total sobre la rotación de la clave y visibilidad del consumo. El modelo de suscripción libera al cliente de esa obligación y exige confianza en el autor del plugin. La elección depende de la competencia técnica del equipo del cliente.&lt;/p&gt;
&lt;h3 id=&quot;qué-hacer-cuando-el-plugin-muestra-un-loader-vacío-sin-mensaje-de-error&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hacer-cuando-el-plugin-muestra-un-loader-vacío-sin-mensaje-de-error&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué hacer cuando el plugin muestra un loader vacío sin mensaje de error?&lt;/h3&gt;
&lt;p&gt;Revierte el último cambio en el panel, revisa la consola del navegador en las herramientas para desarrolladores y consulta el log de errores PHP del servidor. Un loader vacío suele significar que la cuota de tokens está agotada o que la autorización de la clave ha fallado. A continuación contacta con el autor del plugin, ya que la falta de mensaje de error es un fallo del producto, no de la configuración.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-70-ya-tiene-una-fecha-oficial-de-lanzamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-70-ya-tiene-una-fecha-oficial-de-lanzamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿WordPress 7.0 ya tiene una fecha oficial de lanzamiento?&lt;/h3&gt;
&lt;p&gt;La versión Release Candidate 2 se publicó el 26 de marzo de 2026 en wordpress.org. La fecha de disponibilidad general no está confirmada oficialmente en las comunicaciones del proyecto en el momento de redactar este texto. La fuente fiable es la página wordpress.org/news, donde aparece cada candidata sucesiva y la versión final.&lt;/p&gt;</content:encoded><category>wordpress</category><category>busqueda-ai</category><category>ecosistema</category><category domain="tag">mcp</category><category domain="tag">abilities-api</category><category domain="tag">web-agentica</category><category domain="tag">automattic</category><category domain="tag">tokens-ai</category><category domain="tag">wordpress-7-0</category><category domain="tag">mantenimiento</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>NIS2 y DORA en WordPress: qué debe cumplir un sitio en 2026</title><link>https://wppoland.com/es/nis2-dora-wordpress-compliance-2026/</link><guid isPermaLink="true">https://wppoland.com/es/nis2-dora-wordpress-compliance-2026/</guid><description>La Directiva NIS2 (2022/2555) debía transponerse al derecho nacional antes del 2024-10-17. El Reglamento DORA (2022/2554) se aplica directamente desde el 2025-01-17. Para el operador de un sitio WordPress esto supone obligaciones concretas si el sitio se refiere a una entidad regulada. Lo explicamos sin alarmismo, con referencias a los textos de los actos.</description><pubDate>Sat, 25 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;nis2-y-dora-en-wordpress-qué-debe-cumplir-un-sitio-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nis2-y-dora-en-wordpress-qué-debe-cumplir-un-sitio-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;NIS2 y DORA en WordPress: qué debe cumplir un sitio en 2026&lt;/h2&gt;
&lt;p&gt;Dos actos de la UE definen en 2026 lo que se exige desde el lado de la ciberseguridad a un sitio WordPress que desarrolla actividad regulada en la Unión: la &lt;a href=&quot;https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX%3A32022L2555&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Directiva NIS2 (2022/2555)&lt;/a&gt; y el &lt;a href=&quot;https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX%3A32022R2554&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Reglamento DORA (2022/2554)&lt;/a&gt;. No son intercambiables. NIS2 es una directiva con un ámbito sectorial amplio, transpuesta al derecho nacional. DORA es un reglamento sectorial (finanzas), de aplicación directa. Ambos se aplican a WordPress si y solo si la entidad que opera el sitio entra en el ámbito.&lt;/p&gt;
&lt;p&gt;El artículo se conecta con el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pillar de servicios headless WordPress&lt;/a&gt;, donde se describe la capa técnica, y con el &lt;a href=&quot;/es/wcag-bfsg-eaa-wordpress-compliance-2026/&quot;&gt;pillar sobre WCAG, BFSG y EAA&lt;/a&gt;, porque la conformidad de accesibilidad y la de ciberseguridad caen cada vez más en la misma consulta de compras.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Plazo de transposición de NIS2: 2024-10-17. DORA aplica desde 2025-01-17.&lt;/li&gt;
&lt;li&gt;NIS2: 18 sectores, divididos en entidades esenciales e importantes.&lt;/li&gt;
&lt;li&gt;DORA: sector financiero más proveedores críticos de TIC.&lt;/li&gt;
&lt;li&gt;Requisitos: gestión de riesgos documentada, notificación de incidentes (24/72/30), auditorías.&lt;/li&gt;
&lt;li&gt;WordPress en sí mismo no está en el ámbito; lo está la &lt;strong&gt;entidad que opera el sitio&lt;/strong&gt;, si está regulada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tres-cosas-que-hay-que-saber-de-inmediato&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tres-cosas-que-hay-que-saber-de-inmediato&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tres cosas que hay que saber de inmediato&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Primero, NIS2 y DORA aplican a la entidad, no a la tecnología.&lt;/strong&gt; WordPress no es “compliant” ni “non-compliant” como CMS. Compliant o no lo es la entidad que opera el sitio. Si un hospital, un banco, un proveedor de cloud o un operador de e-commerce por encima del umbral entra en el ámbito, su sitio WordPress entra en el ámbito como parte de la infraestructura de esa entidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segundo, la transposición nacional de NIS2 está retrasada en muchos Estados miembros.&lt;/strong&gt; El plazo del 2024-10-17 ha vencido, pero varios países se encontraban en distintas fases del proceso legislativo después de esa fecha. El estado de la transposición varía entre Estados miembros; consulte la base de datos jurídica nacional pertinente antes de la auditoría final. Para el estado del Estado miembro polaco, el proyecto de modificación de la &lt;a href=&quot;https://isap.sejm.gov.pl/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;ley sobre el sistema nacional de ciberseguridad&lt;/a&gt; está disponible públicamente y su estado actual debe verificarse en &lt;a href=&quot;https://isap.sejm.gov.pl/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;ISAP&lt;/a&gt; antes de cualquier auditoría final. El estado a 2026-04 requiere una revisión jurídica separada; este artículo no sustituye el asesoramiento legal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tercero, DORA aplica directamente.&lt;/strong&gt; El reglamento no requiere transposición. Si una entidad financiera o un proveedor crítico de TIC opera un sitio WordPress, las obligaciones de DORA se aplican desde el 2025-01-17 con independencia del estado legislativo nacional.&lt;/p&gt;
&lt;h2 id=&quot;nis2-ámbito-subjetivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nis2-ámbito-subjetivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;NIS2: ámbito subjetivo&lt;/h2&gt;
&lt;p&gt;La Directiva NIS2 enumera 18 sectores. Los casos más habituales en los que WordPress entra en el ámbito:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Entidades esenciales (essential entities):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Energía (electricidad, gas, petróleo, calor, hidrógeno).&lt;/li&gt;
&lt;li&gt;Transporte (aéreo, ferroviario, marítimo, por carretera).&lt;/li&gt;
&lt;li&gt;Banca.&lt;/li&gt;
&lt;li&gt;Infraestructuras de los mercados financieros.&lt;/li&gt;
&lt;li&gt;Sanidad (hospitales, laboratorios de referencia, fabricantes de medicamentos, productos sanitarios).&lt;/li&gt;
&lt;li&gt;Agua potable y aguas residuales.&lt;/li&gt;
&lt;li&gt;Infraestructura digital (proveedores de DNS, registros de dominios, proveedores de cloud computing, prestadores de servicios de centros de datos, redes de distribución de contenidos, prestadores de servicios de confianza, proveedores de redes públicas de comunicaciones electrónicas).&lt;/li&gt;
&lt;li&gt;Gestión de servicios TIC (B2B).&lt;/li&gt;
&lt;li&gt;Administración pública (condiciones definidas en el art. 2).&lt;/li&gt;
&lt;li&gt;Espacio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Entidades importantes (important entities):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servicios postales y de mensajería.&lt;/li&gt;
&lt;li&gt;Gestión de residuos.&lt;/li&gt;
&lt;li&gt;Fabricación, transformación y distribución de productos químicos.&lt;/li&gt;
&lt;li&gt;Fabricación, transformación y distribución de alimentos.&lt;/li&gt;
&lt;li&gt;Fabricación en los sectores: médico, informático y electrónico, maquinaria, automóvil.&lt;/li&gt;
&lt;li&gt;Proveedores de servicios digitales (mercados en línea, motores de búsqueda, plataformas sociales).&lt;/li&gt;
&lt;li&gt;Organismos de investigación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Umbral básico: empresa mediana (50+ empleados o cifra de negocios anual o balance superior a 10 millones EUR). Microempresas y pequeñas empresas suelen quedar fuera del ámbito, con excepciones (por ejemplo, prestadores de servicios de confianza, registros de TLD, ciertos proveedores de DNS).&lt;/p&gt;
&lt;p&gt;La entidad esencial tiene obligaciones más estrictas. La entidad importante tiene los mismos requisitos técnicos pero con supervisión menos intensiva.&lt;/p&gt;
&lt;h2 id=&quot;dora-ámbito-subjetivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dora-ámbito-subjetivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;DORA: ámbito subjetivo&lt;/h2&gt;
&lt;p&gt;DORA aplica a unos 20 tipos de entidad financiera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entidades de crédito.&lt;/li&gt;
&lt;li&gt;Entidades de pago.&lt;/li&gt;
&lt;li&gt;Entidades de dinero electrónico.&lt;/li&gt;
&lt;li&gt;Empresas de servicios de inversión.&lt;/li&gt;
&lt;li&gt;Proveedores de servicios de criptoactivos.&lt;/li&gt;
&lt;li&gt;Depositarios centrales de valores.&lt;/li&gt;
&lt;li&gt;Entidades de contrapartida central.&lt;/li&gt;
&lt;li&gt;Centros de negociación (bolsas).&lt;/li&gt;
&lt;li&gt;Registros de operaciones.&lt;/li&gt;
&lt;li&gt;Entidades aseguradoras y reaseguradoras.&lt;/li&gt;
&lt;li&gt;Mediadores de seguros y reaseguros.&lt;/li&gt;
&lt;li&gt;Fondos de pensiones de empleo.&lt;/li&gt;
&lt;li&gt;Agencias de calificación crediticia.&lt;/li&gt;
&lt;li&gt;Auditores que auditen los estados financieros de entidades cubiertas por DORA.&lt;/li&gt;
&lt;li&gt;Administradores de índices de referencia críticos.&lt;/li&gt;
&lt;li&gt;Fondos de inversión (UCITS, AIFM).&lt;/li&gt;
&lt;li&gt;Proveedores de servicios de financiación participativa.&lt;/li&gt;
&lt;li&gt;Repositorios de titulizaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Más los &lt;strong&gt;proveedores críticos de TIC terceros&lt;/strong&gt; (Critical ICT Third-Party Providers, CTPP) designados por la supervisión europea. Es el mecanismo por el cual DORA arrastra a socios comerciales a su ámbito sin que estos se registren como entidad financiera.&lt;/p&gt;
&lt;p&gt;Un sitio WordPress operado por un banco, una aseguradora o un fondo de inversión entra en el ámbito de DORA como parte de los sistemas TIC de la entidad.&lt;/p&gt;
&lt;h2 id=&quot;qué-hay-que-hacer-en-concreto-el-núcleo-común&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hay-que-hacer-en-concreto-el-núcleo-común&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué hay que hacer en concreto: el núcleo común&lt;/h2&gt;
&lt;p&gt;NIS2 y DORA tienen un núcleo convergente de exigencias técnicas y organizativas. Implementación en WordPress:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gestión del riesgo cibernético.&lt;/strong&gt; Registro de riesgos documentado, procedimiento para su evaluación y aceptación, políticas de seguridad aprobadas por el consejo de administración. Son documentos, no solo configuración del servidor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Control de acceso y autenticación.&lt;/strong&gt; Autenticación multifactor (MFA) obligatoria para los administradores de WordPress. Contraseñas robustas obligatorias. Caducidad de sesión obligatoria. Todas las cuentas de administrador deben ser nominales, no compartidas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gestión de incidentes.&lt;/strong&gt; Procedimiento para la detección, clasificación y notificación de incidentes. Un incidente significativo bajo NIS2 es aquel con un impacto significativo en la prestación del servicio. Notificación al CSIRT o autoridad competente en 24 horas desde la detección (alerta temprana), 72 horas con evaluación inicial, un mes con informe final.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seguridad de la cadena de suministro.&lt;/strong&gt; Un plugin de WordPress, hosting, CDN, proveedor de correo transaccional, proveedor de SMS, proveedor de IA. Cada uno forma parte de la cadena. Hay que mantener un registro, evaluaciones de riesgo y cláusulas contractuales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Continuidad de negocio y recuperación ante desastres.&lt;/strong&gt; Backup, plan de continuidad, recuperación ante desastres, probados con regularidad, no solo ejecutados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formación del personal.&lt;/strong&gt; Exigida a nivel del consejo y de la organización en sentido amplio. Una “presentación interna” no basta; se requiere un plan de formación documentado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seguridad del proceso de desarrollo y mantenimiento.&lt;/strong&gt; Políticas sobre desarrollo de software, pruebas y gestión de vulnerabilidades. El core de WordPress se actualiza; los plugins también deben actualizarse, con un proceso de pruebas en staging antes de producción.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Criptografía.&lt;/strong&gt; Una política de criptografía, incluyendo TLS, cifrado de datos en reposo, firmas digitales. WordPress no cifra la base de datos por defecto; la solución es cifrar a nivel de sistema de ficheros o de base de datos.&lt;/p&gt;
&lt;h2 id=&quot;específico-de-dora-gestión-de-terceros-tic&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#específico-de-dora-gestión-de-terceros-tic&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Específico de DORA: gestión de terceros TIC&lt;/h2&gt;
&lt;p&gt;DORA tiene un capítulo V dedicado a la gestión de proveedores TIC. Exige:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un registro de todos los contratos con proveedores TIC.&lt;/li&gt;
&lt;li&gt;Clasificación de los contratos (críticos, no críticos).&lt;/li&gt;
&lt;li&gt;Cláusulas contractuales obligatorias en contratos con proveedores de funciones críticas.&lt;/li&gt;
&lt;li&gt;Procedimiento de finalización con plan de migración.&lt;/li&gt;
&lt;li&gt;Pruebas de penetración guiadas por amenazas (TLPT) al menos cada 3 años para entidades seleccionadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para el operador WordPress esto significa que el proveedor de hosting y los plugins críticos (security plugin, backup plugin, payment gateway plugin) entran en el registro TIC.&lt;/p&gt;
&lt;h2 id=&quot;específico-de-nis2-sanciones-y-supervisión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#específico-de-nis2-sanciones-y-supervisión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Específico de NIS2: sanciones y supervisión&lt;/h2&gt;
&lt;p&gt;La Directiva NIS2 establece sanciones administrativas que las transposiciones nacionales traducen en cuantías concretas. Los topes superiores en la propia directiva:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entidad esencial: hasta 10 millones EUR o el 2 por ciento de la cifra de negocios anual a nivel mundial, lo que sea mayor.&lt;/li&gt;
&lt;li&gt;Entidad importante: hasta 7 millones EUR o el 1,4 por ciento de la cifra de negocios anual a nivel mundial, lo que sea mayor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las transposiciones nacionales pueden introducir sus propios topes; verificar en la versión vigente de la ley en la jurisdicción correspondiente.&lt;/p&gt;
&lt;p&gt;Sanciones complementarias: suspensión temporal de la certificación, prohibiciones temporales de ejercer funciones directivas para la persona responsable. Esto es el cambio más notorio de NIS2: la dirección tiene responsabilidad personal por la gestión del riesgo cibernético.&lt;/p&gt;
&lt;h2 id=&quot;mapa-práctico-de-implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mapa-práctico-de-implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mapa práctico de implementación en WordPress&lt;/h2&gt;
&lt;p&gt;Cuatro categorías de trabajo, una auditoría:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa 1, infraestructura.&lt;/strong&gt; Hosting conforme. Backup off-site. TLS 1.3. WAF. Monitorización 24/7 o contrato con SOC. Política de actualización del core, themes, plugins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa 2, aplicación.&lt;/strong&gt; MFA para administradores. Contraseñas robustas. Registro de todas las acciones administrativas en un flujo separado. Anti-CSRF. Anti-XSS a nivel de plantillas. Validación de input. Límite de intentos de login.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa 3, organización.&lt;/strong&gt; Políticas de seguridad. Registro de riesgos. Plan de IR. Plan de BCDR. Registro de proveedores TIC. Procedimiento de notificación de incidentes al CSIRT/regulador. Formación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa 4, documentación y auditoría.&lt;/strong&gt; Documentación de procesos. Registros de auditoría. Auditoría externa o interna periódica. Retención conforme al RGPD.&lt;/p&gt;
&lt;p&gt;WordPress como CMS cubre alrededor del 30 por ciento de los requisitos técnicos “out of the box”, tras hardening y plugins alrededor del 60 por ciento. El 40 por ciento restante es organización, documentación y procedimientos.&lt;/p&gt;
&lt;h2 id=&quot;qué-sigue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-sigue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué sigue&lt;/h2&gt;
&lt;p&gt;Consecuencias prácticas para la elección del equipo que opera WordPress: una agencia que opera el sitio para una entidad cubierta por NIS2 o DORA entra ella misma en la cadena de suministro. Nuestra &lt;a href=&quot;/en/careers/&quot;&gt;página de carreras&lt;/a&gt; menciona la jurisdicción UE y el cumplimiento como estándar, porque es un filtro de procurement en 2026.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-este-artículo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-este-artículo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja este artículo&lt;/h2&gt;
&lt;p&gt;El artículo se conecta con el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pillar de servicios headless WordPress&lt;/a&gt; (capa técnica), con el &lt;a href=&quot;/es/wcag-bfsg-eaa-wordpress-compliance-2026/&quot;&gt;pillar sobre WCAG/BFSG/EAA&lt;/a&gt; (cumplimiento de accesibilidad en el mismo scoreboard de procurement), con la &lt;a href=&quot;/en/careers/&quot;&gt;página de carreras de WPPoland&lt;/a&gt; (señal de jurisdicción UE) y con el &lt;a href=&quot;/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/&quot;&gt;artículo sobre nearshore Polonia&lt;/a&gt; (jurisdicción UE como valor para el comprador occidental).&lt;/p&gt;</content:encoded><category>wordpress</category><category>seguridad</category><category>compliance</category><category>derecho-ue</category><category domain="tag">nis2</category><category domain="tag">dora</category><category domain="tag">cybersecurity</category><category domain="tag">wordpress</category><category domain="tag">compliance</category><category domain="tag">eu</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>WCAG 2.2, BFSG y la Ley Europea de Accesibilidad: el stack de cumplimiento WordPress para 2026</title><link>https://wppoland.com/es/wcag-bfsg-eaa-wordpress-compliance-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wcag-bfsg-eaa-wordpress-compliance-2026/</guid><description>WCAG 2.2 se convirtió en Recomendación del W3C el 2023-10-05. La Ley Europea de Accesibilidad (Directiva 2019/882) se aplica desde el 2025-06-28. La Barrierefreiheitsstärkungsgesetz alemana la transpone al derecho federal en la misma fecha. Este artículo es el mapa de implementación para un sitio WordPress en 2026.</description><pubDate>Thu, 23 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;wcag-22-bfsg-y-la-ley-europea-de-accesibilidad-el-stack-de-cumplimiento-wordpress-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wcag-22-bfsg-y-la-ley-europea-de-accesibilidad-el-stack-de-cumplimiento-wordpress-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WCAG 2.2, BFSG y la Ley Europea de Accesibilidad: el stack de cumplimiento WordPress para 2026&lt;/h2&gt;
&lt;p&gt;Tres documentos definen lo que un sitio WordPress tiene que hacer en 2026 para ser legalmente accesible en la Unión Europea: las &lt;a href=&quot;https://www.w3.org/TR/WCAG22/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Web Content Accessibility Guidelines 2.2&lt;/a&gt; del W3C, la &lt;a href=&quot;https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32019L0882&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Ley de Accesibilidad de la UE (Directiva 2019/882)&lt;/a&gt; y la &lt;a href=&quot;https://www.gesetze-im-internet.de/bfsg/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Barrierefreiheitsstärkungsgesetz&lt;/a&gt; alemana. No son intercambiables; se apilan. Este artículo es el mapa de implementación.&lt;/p&gt;
&lt;p&gt;El texto se vincula con el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pilar de servicio headless WordPress&lt;/a&gt; donde se describe la superficie técnica, y con la lista &lt;a href=&quot;/en/seo-patterns-for-headless-wordpress/&quot;&gt;patrones SEO para headless WordPress&lt;/a&gt; donde varios patrones de accesibilidad también afectan al SEO.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WCAG 2.2 es la Recomendación actual del W3C, publicada el 2023-10-05.&lt;/li&gt;
&lt;li&gt;La Ley Europea de Accesibilidad se aplica desde el 2025-06-28 en cada Estado miembro.&lt;/li&gt;
&lt;li&gt;La BFSG alemana implementa la EAA en derecho federal en la misma fecha.&lt;/li&gt;
&lt;li&gt;Las exenciones para microempresas existen pero son más estrictas de lo que se asume.&lt;/li&gt;
&lt;li&gt;Las sanciones bajo el parágrafo 37 de la BFSG alcanzan el rango superior de cinco cifras en euros.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;las-tres-capas-en-orden&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-tres-capas-en-orden&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las tres capas, en orden&lt;/h2&gt;
&lt;p&gt;Tres capas legales y técnicas se apilan para definir la obligación del sitio:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa uno, WCAG 2.2 (técnica).&lt;/strong&gt; El conjunto de criterios de éxito medibles que definen el contenido web accesible. Elaborado por la Web Accessibility Initiative del W3C. WCAG 2.2 fue publicada como Recomendación el 2023-10-05 e incorpora nueve nuevos criterios de éxito sobre WCAG 2.1, incluyendo apariencia del foco, movimientos de arrastre y ayuda consistente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa dos, la Ley Europea de Accesibilidad (UE).&lt;/strong&gt; Directiva 2019/882, adoptada en 2019, aplicable desde el 2025-06-28. Define qué productos y servicios deben ser accesibles y remite a la norma europea EN 301 549, que incorpora WCAG por referencia. La EAA no dice literalmente “siga WCAG 2.2”; remite a la norma armonizada europea, que actualmente incorpora WCAG 2.1 nivel AA. Las transposiciones nacionales pueden exigir WCAG 2.2.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa tres, transposición nacional (Estado miembro).&lt;/strong&gt; Cada Estado miembro aprueba su propia ley para transponer la EAA. La de Alemania es la BFSG, en vigor en la misma fecha de aplicación de la EAA. Otros Estados miembros transponen con nombres similares y requisitos similares (a veces más altos). El sitio debe cumplir con la ley de transposición en cada mercado en el que vende, no solo en el país de constitución.&lt;/p&gt;
&lt;p&gt;El orden importa. WCAG es el umbral técnico. La EAA es el envoltorio legal a nivel UE. La ley nacional es el instrumento local de aplicación. Las auditorías van en este orden: técnica primero, legal después, local al final.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-wcag-22-realmente-exige&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-wcag-22-realmente-exige&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que WCAG 2.2 realmente exige&lt;/h2&gt;
&lt;p&gt;WCAG 2.2 tiene 86 criterios de éxito repartidos en 13 directrices bajo 4 principios (Perceptible, Operable, Comprensible, Robusto). Tres niveles: A, AA, AAA. El estándar legal y contractual por defecto es &lt;strong&gt;AA&lt;/strong&gt;. AAA es aspiracional y no siempre práctico para sitios con mucho contenido.&lt;/p&gt;
&lt;p&gt;Los nueve nuevos criterios en WCAG 2.2 sobre WCAG 2.1:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Apariencia del foco (AA, nivel AA solo en 2.2)&lt;/li&gt;
&lt;li&gt;Foco no oscurecido mínimo (AA)&lt;/li&gt;
&lt;li&gt;Foco no oscurecido mejorado (AAA)&lt;/li&gt;
&lt;li&gt;Movimientos de arrastre (AA)&lt;/li&gt;
&lt;li&gt;Tamaño de objetivo mínimo (AA, 24 by 24 CSS pixels)&lt;/li&gt;
&lt;li&gt;Ayuda consistente (A)&lt;/li&gt;
&lt;li&gt;Entrada redundante (A)&lt;/li&gt;
&lt;li&gt;Autenticación accesible mínima (AA)&lt;/li&gt;
&lt;li&gt;Autenticación accesible mejorada (AAA)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para un sitio WordPress que ya apuntaba a WCAG 2.1 AA, el trabajo práctico en 2026 es verificar los nueve nuevos criterios, siendo el tamaño del objetivo y los movimientos de arrastre las brechas más comunes (iconos clicables pequeños, sliders solo arrastrables).&lt;/p&gt;
&lt;h2 id=&quot;eaa-alcance-exenciones-plazos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eaa-alcance-exenciones-plazos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;EAA: alcance, exenciones, plazos&lt;/h2&gt;
&lt;p&gt;La EAA cubre una lista definida de productos y servicios introducidos en el mercado desde el 2025-06-28. La lista relevante para la mayoría de operadores WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servicios bancarios al consumidor.&lt;/li&gt;
&lt;li&gt;Libros electrónicos y software dedicado de lectura.&lt;/li&gt;
&lt;li&gt;Servicios de comunicaciones electrónicas.&lt;/li&gt;
&lt;li&gt;Servicios de acceso a medios audiovisuales.&lt;/li&gt;
&lt;li&gt;Servicios de transporte de pasajeros (interfaces web y móviles).&lt;/li&gt;
&lt;li&gt;Servicios de e-commerce (la categoría general para la mayoría de tiendas WooCommerce).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La directiva define exenciones para microempresas: menos de 10 empleados Y volumen de negocios anual o balance total inferior a 2 millones de EUR. Estas exenciones se aplican a los proveedores de servicios; el umbral para fabricantes de productos es más estricto. La interpretación errónea común es “sitio pequeño, sin reglas”; la regla real es “operador pequeño, obligación más estrecha, exención más estrecha”.&lt;/p&gt;
&lt;p&gt;Período transitorio: los contratos de servicio celebrados antes del 2025-06-28 pueden continuar bajo los términos previos a la EAA hasta como máximo el 2030-06-28. Los terminales de autoservicio ya en uso pueden continuar hasta el final de su vida útil, con un techo rígido de 20 años.&lt;/p&gt;
&lt;h2 id=&quot;bfsg-la-implementación-alemana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bfsg-la-implementación-alemana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;BFSG: la implementación alemana&lt;/h2&gt;
&lt;p&gt;Alemania aprobó la &lt;a href=&quot;https://www.gesetze-im-internet.de/bfsg/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Barrierefreiheitsstärkungsgesetz&lt;/a&gt; (Ley de Refuerzo de la Accesibilidad) para transponer la EAA. Entró en vigor el 2025-06-28.&lt;/p&gt;
&lt;p&gt;Tres cosas que la BFSG añade a la base de la EAA:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Uno, aplicación a nivel federal.&lt;/strong&gt; La Bundesanstalt für Arbeitsschutz und Arbeitsmedizin y las autoridades federales de vigilancia del mercado supervisan el cumplimiento. Las estructuras de los Estados miembros varían; en Alemania, la supervisión federal es el mecanismo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dos, estructura de sanciones (parágrafo 37, BFSG).&lt;/strong&gt; Las sanciones por incumplimiento están definidas en el parágrafo 37 de la BFSG. Determinados tipos de infracción atraen multas en el rango superior de cinco cifras en euros por infracción. El incumplimiento repetido o sistémico se acumula.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tres, requisito de declaración de accesibilidad.&lt;/strong&gt; El sitio debe publicar una declaración de accesibilidad enlazada desde un lugar localizable (el pie de página es lo convencional). La declaración indica el nivel de conformidad, las excepciones reclamadas y un mecanismo de contacto para reclamaciones de accesibilidad.&lt;/p&gt;
&lt;p&gt;Los operadores que venden en Alemania sin constitución alemana siguen estando sujetos a la BFSG cuando sus productos o servicios se introducen en el mercado alemán. La defensa “no soy una empresa alemana” no existe.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-esto-significa-para-un-sitio-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-esto-significa-para-un-sitio-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que esto significa para un sitio WordPress&lt;/h2&gt;
&lt;p&gt;El trabajo de implementación se divide en cuatro columnas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tema y core.&lt;/strong&gt; Elija un tema marcado como accessibility-ready en WordPress.org y verifíquelo contra WCAG 2.2 AA. Audite la administración de WordPress, no solo el front-end; la BFSG cubre también la interfaz que usan los empleados si están sujetos a requisitos de empleo inclusivo. El core de WordPress es generalmente consciente de la accesibilidad (el &lt;a href=&quot;https://make.wordpress.org/accessibility/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;equipo de Accesibilidad&lt;/a&gt; está activo) pero los plugins y el código personalizado rompen el umbral con regularidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plugins.&lt;/strong&gt; Audite la salida front-end de cada plugin activo. Patrones concretos de fallo que vemos auditoría tras auditoría:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page builders (Elementor, Divi, WPBakery)&lt;/strong&gt;: emiten &lt;code&gt;&amp;#x3C;h1&gt;&lt;/code&gt; para el texto hero en cada sección, rompiendo la jerarquía de encabezados. Fallan WCAG 2.4.6 (Encabezados y etiquetas) y 1.3.1 (Información y relaciones). Solución: sobrescribir los niveles de encabezado en el template del tema, o migrar al editor de bloques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WooCommerce añadir al carrito por defecto en archivos&lt;/strong&gt;: solo icono con &lt;code&gt;aria-label&lt;/code&gt;, sin texto visible y sin indicador de foco visible. WCAG 2.4.7 (Foco visible) y 2.5.8 (Tamaño mínimo del objetivo, 24×24 píxeles CSS en WCAG 2.2). Solución: ampliar el área clicable a 24×24, anillo de foco visible con contraste 3:1, restaurar texto visible donde sea posible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins de slideshow (Slick, Owl Carousel, MetaSlider, Smart Slider)&lt;/strong&gt;: sin soporte para teclas de flecha, sin control de pausa en slides con rotación automática. Fallan WCAG 2.2.2 (Pausar, detener, ocultar) y 2.1.1 (Teclado). Solución: sustituir por una cuadrícula estática de imágenes donde sea posible; si es necesario, añadir botones visibles de pausa y anterior/siguiente con etiquetas adecuadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins de formularios (Contact Form 7, Gravity Forms, Ninja Forms)&lt;/strong&gt;: omiten asociaciones &lt;code&gt;&amp;#x3C;label for&gt;&lt;/code&gt;, usan el placeholder como única etiqueta. Fallan WCAG 1.3.1 y 3.3.2 (Etiquetas o instrucciones). Solución: &lt;code&gt;&amp;#x3C;label for=&quot;id&quot;&gt;&lt;/code&gt; explícito, mensajes de error vía &lt;code&gt;aria-describedby&lt;/code&gt;, campos obligatorios con &lt;code&gt;aria-required=&quot;true&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Audite también la administración si la usa personal no técnico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contenido y disciplina editorial.&lt;/strong&gt; La aplicación de WCAG a nivel editorial requiere reglas permanentes: cada imagen necesita texto alternativo, cada enlace texto descriptivo (no “haga clic aquí”), cada jerarquía de encabezados es secuencial, cada vídeo tiene subtítulos, cada PDF incrustado en una página se prueba en sí mismo. El CMS hace posible el cumplimiento técnico; el equipo editorial hace que ocurra de verdad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Declaración de accesibilidad y mecanismo de reclamación.&lt;/strong&gt; La declaración es obligatoria en Alemania bajo la BFSG. El mecanismo de reclamación (un correo de contacto o formulario) debe ser funcional, no vestigial. Las reclamaciones sobre accesibilidad deben ser acusadas y atendidas en un plazo razonable.&lt;/p&gt;
&lt;h2 id=&quot;por-qué-headless-wordpress-no-es-automáticamente-accesible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-headless-wordpress-no-es-automáticamente-accesible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué headless WordPress no es automáticamente accesible&lt;/h2&gt;
&lt;p&gt;Una build headless WordPress con un front Astro o Next.js no hereda accesibilidad del origen WordPress. El framework de front-end es responsable del HTML renderizado, del modelo de interacción por teclado, de la gestión del foco y de la semántica ARIA. Elegir el framework correcto ayuda (tanto Astro como Next.js tienen comunidades de accesibilidad fuertes) pero el trabajo debe hacerse de forma explícita.&lt;/p&gt;
&lt;p&gt;Según nuestro &lt;a href=&quot;/en/tech-radar/&quot;&gt;posición en rings del Tech Radar&lt;/a&gt;, Astro 5+ y Next.js 15 están ambos en el anillo Adopt. Ninguno es automáticamente conforme con WCAG 2.2. La auditoría de accesibilidad es un flujo de trabajo separado de la elección del framework.&lt;/p&gt;
&lt;p&gt;La build headless compra una cosa: control por ruta sobre el HTML renderizado, lo que hace que los parches de accesibilidad sean aterrizables y predecibles. Una build WordPress monolítica mediada por un page builder pesado es más difícil de remediar cuando el builder es el origen del marcado inaccesible.&lt;/p&gt;
&lt;h2 id=&quot;cadencia-de-auditoría-y-herramientas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cadencia-de-auditoría-y-herramientas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cadencia de auditoría y herramientas&lt;/h2&gt;
&lt;p&gt;Dos auditorías, dos cadencias:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automatizada, en cada ejecución de CI.&lt;/strong&gt; axe-core o pa11y ejecutándose contra una muestra representativa de rutas. Hace fallar la build ante cualquier violación nueva. Captura aproximadamente la mitad de los problemas WCAG; falla la mitad que requiere juicio humano (calidad del alt-text, intención del orden de foco, intención de los landmarks ARIA).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Manual, anualmente más en cambios mayores.&lt;/strong&gt; Tester de accesibilidad capacitado ejecutando una auditoría WCAG 2.2 AA completa con pruebas de tecnología asistiva (lector de pantalla, control por voz, solo teclado). El resultado es un informe de brechas vinculado a criterios de éxito específicos.&lt;/p&gt;
&lt;p&gt;Un sitio que solo ejecuta la auditoría automatizada no es conforme con WCAG 2.2 AA. Un sitio que solo ejecuta la auditoría manual deriva entre revisiones anuales. Ambas son necesarias.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-esto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-esto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja esto&lt;/h2&gt;
&lt;p&gt;Este pilar se ancla al clúster del &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;servicio headless WordPress&lt;/a&gt; como dimensión de cumplimiento. Para la elección de framework, ver la &lt;a href=&quot;/en/headless-wordpress-nextjs-vs-astro-2026/&quot;&gt;matriz de decisión Next.js vs Astro&lt;/a&gt;. Para riesgos de migración SEO (algunos patrones de accesibilidad afectan también al SEO, en particular la jerarquía de encabezados y el texto de los enlaces), ver la &lt;a href=&quot;/en/seo-patterns-for-headless-wordpress/&quot;&gt;lista de patrones SEO&lt;/a&gt;. Para el cumplimiento NIS2 y DORA, que aparecen a menudo en el mismo scorecard de adquisición, ver el &lt;a href=&quot;/en/nis2-dora-wordpress-compliance-2026/&quot;&gt;artículo dedicado a NIS2 y DORA en WordPress&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>accessibility</category><category>compliance</category><category>eu-law</category><category domain="tag">wcag-2-2</category><category domain="tag">eaa</category><category domain="tag">bfsg</category><category domain="tag">eu-accessibility-act</category><category domain="tag">wordpress</category><category domain="tag">compliance</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Cómo hacer visible tu sitio para la AI y los LLMs</title><link>https://wppoland.com/es/hacer-sitio-visible-para-ai-y-llms-2026/</link><guid isPermaLink="true">https://wppoland.com/es/hacer-sitio-visible-para-ai-y-llms-2026/</guid><description>Guía GEO práctica para 2026. Qué mueve de verdad las citas en ChatGPT, Claude, Perplexity y Google AI Overviews, qué es folklore y en qué orden implementar.</description><pubDate>Thu, 23 Apr 2026 09:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introducción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introducción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introducción&lt;/h2&gt;
&lt;p&gt;Tu sitio posiciona en Google. Los Core Web Vitals están en verde. El schema valida. Y aun así, cuando alguien pregunta a ChatGPT, Claude, Perplexity o Google AI Overviews sobre tu sector, tu marca no aparece. Ese hueco entre el SEO clásico y lo que las búsquedas con AI realmente citan es el problema que existe para resolver la Generative Engine Optimization.&lt;/p&gt;
&lt;p&gt;GEO no sustituye al SEO. Es una disciplina paralela, centrada en cómo los grandes modelos de lenguaje recuperan, interpretan y citan contenido, no en cómo los crawlers de búsqueda lo indexan y ordenan. Las técnicas se solapan en algunos puntos y divergen en otros, y el campo avanza más rápido que cualquier norma publicada. Esta guía recoge lo que funciona en la práctica, lo que es mito y el orden en el que un equipo de ingeniería solvente debería abordar cada palanca.&lt;/p&gt;
&lt;h2 id=&quot;por-qué-la-visibilidad-en-ai-ya-no-es-opcional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-la-visibilidad-en-ai-ya-no-es-opcional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué la visibilidad en AI ya no es opcional&lt;/h2&gt;
&lt;p&gt;En el primer trimestre de 2026, el tráfico mediado por AI es una fracción medible y creciente de los accesos cualificados en la mayoría de sitios con contenido relevante. ChatGPT Search está integrado en la barra de direcciones de Safari en iOS para quienes tienen la app instalada. Perplexity ha pasado de herramienta para power users a producto mainstream. Claude lee la web abierta a través de su herramienta de búsqueda. Google AI Overviews aparece en una gran parte de las búsquedas informativas en mercados anglófonos y se extiende a más idiomas cada trimestre.&lt;/p&gt;
&lt;p&gt;La consecuencia económica es directa. Incluso cuando un prospecto acaba comprando, registrándose o reservando consulta por búsqueda clásica, su lista corta fue filtrada antes por un LLM. Si no entras en esa lista, no compites. El SEO clásico sigue importando porque alimenta la misma infraestructura de crawling que usan muchos sistemas de AI. Pero el SEO solo ya no basta.&lt;/p&gt;
&lt;h2 id=&quot;ai-o-llms-una-nota-terminológica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ai-o-llms-una-nota-terminológica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿AI o LLMs? una nota terminológica&lt;/h2&gt;
&lt;p&gt;Ambos términos se usan en la práctica y la coherencia importa más que la elección. “Búsqueda con AI” es el término más amplio y orientado al usuario. Cubre chatbots, herramientas de RAG, AI Overviews y sistemas híbridos. “LLM” se refiere específicamente a los modelos de lenguaje que hay detrás. En esta guía usamos “AI” para la superficie de descubrimiento y “LLM” para la tecnología que la mueve. El objetivo de optimización es el mismo.&lt;/p&gt;
&lt;h2 id=&quot;el-ecosistema-de-crawlers-de-ai&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ecosistema-de-crawlers-de-ai&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ecosistema de crawlers de AI&lt;/h2&gt;
&lt;p&gt;Antes de tocar código, sabe a quién estás optimizando. A abril de 2026, los principales user agents son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPTBot&lt;/code&gt;, OpenAI, entrenamiento y retrieval offline.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OAI-SearchBot&lt;/code&gt;, búsqueda en vivo de ChatGPT.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ChatGPT-User&lt;/code&gt;, peticiones bajo demanda disparadas por un prompt.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ClaudeBot&lt;/code&gt; y &lt;code&gt;Claude-User&lt;/code&gt;, Anthropic.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PerplexityBot&lt;/code&gt; y &lt;code&gt;Perplexity-User&lt;/code&gt;, Perplexity AI.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Google-Extended&lt;/code&gt;, control de opt-out para el entrenamiento de Gemini.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CCBot&lt;/code&gt;, Common Crawl, alimenta a muchos LLMs menores.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Applebot-Extended&lt;/code&gt;, opt-out para el entrenamiento de Apple Intelligence.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Bytespider&lt;/code&gt;, ByteDance.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Meta-ExternalAgent&lt;/code&gt;, Meta AI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ninguno ejecuta JavaScript. Todos respetan robots.txt. La mayoría se identifican con honestidad. Una parte recoge contenido en el instante en que el usuario envía el prompt, lo que reduce el ciclo de días a segundos.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-no-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-no-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que no funciona&lt;/h2&gt;
&lt;p&gt;El espacio GEO está lleno de folklore. La mayor parte carece de respaldo empírico.&lt;/p&gt;
&lt;p&gt;Meta tags personalizados como &lt;code&gt;&amp;#x3C;meta name=&quot;ai-content-url&quot;&gt;&lt;/code&gt; o &lt;code&gt;&amp;#x3C;meta name=&quot;llms&quot;&gt;&lt;/code&gt; no tienen implementación conocida en ningún producto LLM en producción. Archivos como &lt;code&gt;/.well-known/ai.txt&lt;/code&gt; y &lt;code&gt;/ai.txt&lt;/code&gt; tienen propuestas competidoras y cero adopción. Los comentarios HTML dirigidos a bots son eliminados por todos los crawlers mainstream antes del procesamiento. Los conmutadores humano-o-AI exigen un clic, y los bots no hacen clic. El sniffing de user agent para servir contenido distinto a los LLMs vulnera la política de cloaking de Google y puede disparar acciones manuales. Las páginas dedicadas a AI no muestran trato diferenciado en citas. El JSON-LD y Schema.org puros los lee Microsoft Copilot a través de Bing y siguen influyendo en el SEO clásico, pero pruebas controladas muestran que ChatGPT, Claude y Perplexity ignoran en gran medida los datos estructurados al sintetizar respuestas.&lt;/p&gt;
&lt;p&gt;El patrón se repite siempre. Alguien propone una especificación, escribe un post, y otros posts lo citan. Antes de adoptar una técnica GEO, pregúntate si hay prueba de consumo real o solo prueba de que la propuesta existe.&lt;/p&gt;
&lt;h2 id=&quot;seis-técnicas-que-sí-funcionan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seis-técnicas-que-sí-funcionan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seis técnicas que sí funcionan&lt;/h2&gt;
&lt;p&gt;Ordenadas por impacto para un sitio de contenido típico.&lt;/p&gt;
&lt;h3 id=&quot;1-audita-primero-el-robotstxt&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-audita-primero-el-robotstxt&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Audita primero el robots.txt&lt;/h3&gt;
&lt;p&gt;Ninguna otra cosa funciona si estás bloqueando a los crawlers sin querer. Muchos sitios heredaron reglas disallow agresivas del pánico de 2023 sobre entrenamiento de AI. Decidir a quién permites y a quién bloqueas es tu decisión, pero debe ser explícita. Una base razonable para un negocio que quiere visibilidad en AI:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: GPTBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: OAI-SearchBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: ChatGPT-User&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: ClaudeBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: PerplexityBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: Google-Extended&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: CCBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si quieres visibilidad en ChatGPT sin que tu contenido sirva para entrenar modelos, permite &lt;code&gt;OAI-SearchBot&lt;/code&gt; y &lt;code&gt;ChatGPT-User&lt;/code&gt; y bloquea &lt;code&gt;GPTBot&lt;/code&gt;. OpenAI documenta esta separación. Apple, Google y Anthropic ofrecen controles equivalentes.&lt;/p&gt;
&lt;h3 id=&quot;2-sirve-hermanos-markdown-para-cada-página&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-sirve-hermanos-markdown-para-cada-página&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Sirve hermanos Markdown para cada página&lt;/h3&gt;
&lt;p&gt;El cambio técnico con mayor palanca de la lista. Expón una versión Markdown limpia de cada página en la misma URL con &lt;code&gt;.md&lt;/code&gt; añadido, por ejemplo &lt;code&gt;/blog/post&lt;/code&gt; y &lt;code&gt;/blog/post.md&lt;/code&gt;. La versión Markdown elimina navegación, pies, scripts de analítica, banners de cookies y todo lo que infla tokens sin aportar información.&lt;/p&gt;
&lt;p&gt;Mediciones independientes en varios sitios de contenido muestran de forma consistente reducciones de tokens del 70 al 85 por ciento cuando el Markdown sustituye al HTML renderizado. Un post de 15.000 tokens cae típicamente a 3.000. Importa porque, cuando un LLM descarga tu página para responder a un prompt, tiene un presupuesto de contexto finito. El contenido más pequeño y limpio cabe más íntegro y se cita con más fidelidad.&lt;/p&gt;
&lt;p&gt;En Astro, Next.js o cualquier framework static-first, generar endpoints &lt;code&gt;.md&lt;/code&gt; desde la misma content collection que alimenta la vista HTML es una mañana de trabajo. El Markdown debe incluir título, fecha de publicación, autor, un resumen breve, el cuerpo y las fuentes claramente marcadas.&lt;/p&gt;
&lt;h3 id=&quot;3-anuncia-la-versión-markdown&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-anuncia-la-versión-markdown&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Anuncia la versión Markdown&lt;/h3&gt;
&lt;p&gt;Un crawler de LLM que aterriza en tu HTML necesita descubrir que existe un hermano Markdown. Dos mecanismos complementarios cubren las dos clases de clientes.&lt;/p&gt;
&lt;p&gt;En la head del HTML:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text/markdown&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/blog/post.md&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En la cabecera de respuesta HTTP:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Link: &amp;#x3C;/blog/post.md&gt;; rel=&quot;alternate&quot;; type=&quot;text/markdown&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La etiqueta HTML llega a parsers que leen el DOM. La cabecera HTTP llega a agentes headless que hacen HEAD o GET y no parsean markup. Coste: una línea en el layout y una entrada en la configuración de cabeceras del CDN. Beneficio: los crawlers dejan de adivinar tu patrón de URL.&lt;/p&gt;
&lt;h3 id=&quot;4-negociación-de-contenido-en-accept-textmarkdown&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-negociación-de-contenido-en-accept-textmarkdown&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Negociación de contenido en Accept: text/markdown&lt;/h3&gt;
&lt;p&gt;La negociación de contenido HTTP está en el estándar desde 1997. Cuando un cliente envía &lt;code&gt;Accept: text/markdown&lt;/code&gt;, devuelve la representación Markdown desde la misma URL. Emparéjalo con &lt;code&gt;Vary: Accept&lt;/code&gt; para que los CDNs cacheen cada representación correctamente. Claude Code, Cursor y varios agentes de investigación ya envían esta cabecera por defecto. La negociación de contenido es el estándar de largo plazo más probable porque no exige nuevas especificaciones y reutiliza la pila HTTP existente. En Cloudflare Workers la implementación cabe en menos de veinte líneas.&lt;/p&gt;
&lt;h3 id=&quot;5-publica-llmstxt-y-llms-fulltxt&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-publica-llmstxt-y-llms-fulltxt&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Publica llms.txt y llms-full.txt&lt;/h3&gt;
&lt;p&gt;Dos archivos en la raíz del sitio hacen el trabajo.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/llms.txt&lt;/code&gt; es un índice Markdown curado. Lista las páginas más importantes agrupadas por tema con descripciones de una línea. Piénsalo como un README para un LLM al que le preguntaron por tu sitio.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/llms-full.txt&lt;/code&gt; concatena el contenido Markdown completo de tus páginas clave en un solo archivo. La analítica de varios editores muestra que recibe bastante más tráfico de LLM que el índice corto. Genera los dos en tiempo de build desde la misma content collection que ya mantienes y regenera en cada despliegue. Ningún gran proveedor de LLM se ha comprometido formalmente a leer estos archivos, pero aparecen en los logs con frecuencia suficiente para justificar el tiempo.&lt;/p&gt;
&lt;h3 id=&quot;6-invierte-en-la-calidad-del-contenido-visible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-invierte-en-la-calidad-del-contenido-visible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Invierte en la calidad del contenido visible&lt;/h3&gt;
&lt;p&gt;La mayor palanca y la más olvidada. Los LLMs sintetizan respuestas ponderando frases candidatas de páginas que recuperan. Las frases con información concreta y atribuible pesan más que las afirmaciones vagas. “Los estudios muestran que la visibilidad en AI importa” es casi inútil. “Pruebas independientes en 2026 encontraron que las citas directas de expertos nombrados elevan la tasa de cita alrededor del 43 por ciento” es lo que se cita.&lt;/p&gt;
&lt;p&gt;Tres movimientos elevan de forma consistente la tasa de cita en contenido antes poco citado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Citas directas de expertos nombrados.&lt;/li&gt;
&lt;li&gt;Estadísticas verificables con fuente claramente atribuida.&lt;/li&gt;
&lt;li&gt;Enlaces salientes autoritativos a fuentes primarias.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los tres son señales de contenido visibles. Ninguno está oculto. Para una agencia WordPress, una empresa SaaS o cualquier negocio con experiencia sectorial, la traducción práctica es: deja de escribir listados genéricos y empieza a escribir artículos que nombran versiones, fechas, personas y números concretos. Cita fuentes en el texto. Cita a tu equipo por nombre. Incluye el año y la versión de cada herramienta que menciones. Es buen periodismo y es GEO.&lt;/p&gt;
&lt;h2 id=&quot;checklist-combinado-seo-y-geo-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-combinado-seo-y-geo-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist combinado SEO y GEO para 2026&lt;/h2&gt;
&lt;p&gt;Rastreabilidad e indexación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El robots.txt permite tanto a crawlers clásicos como a los user agents de AI en los que quieras ser visible.&lt;/li&gt;
&lt;li&gt;Sitemap XML fresco y enviado a Google Search Console y Bing Webmaster Tools.&lt;/li&gt;
&lt;li&gt;Enlazado interno con estructura temática clara. Hub and spoke o mapas temáticos.&lt;/li&gt;
&lt;li&gt;Etiquetas canonical correctas en URLs duplicados o parametrizados.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On-page, sigue importando para personas y para el retrieval del LLM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Títulos y H1 descriptivos y alineados con la intención, en sentence case.&lt;/li&gt;
&lt;li&gt;Un H1 por página, jerarquía lógica de H2 y H3.&lt;/li&gt;
&lt;li&gt;Meta descripciones escritas para personas, sin keyword stuffing.&lt;/li&gt;
&lt;li&gt;Tipos Schema.org que encajen con el contenido, incluidos Article, FAQPage, Product, Organization, Person y HowTo.&lt;/li&gt;
&lt;li&gt;Alt de imagen describiendo la imagen, no la palabra clave.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Core Web Vitals. Los crawlers de AI no ejecutan JavaScript, pero la búsqueda clásica sí:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LCP por debajo de 2,5 segundos en móvil.&lt;/li&gt;
&lt;li&gt;CLS por debajo de 0,1.&lt;/li&gt;
&lt;li&gt;INP por debajo de 200 milisegundos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Específico de GEO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Endpoints Markdown para cada página de contenido.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;link rel=&quot;alternate&quot; type=&quot;text/markdown&quot;&gt;&lt;/code&gt; en cada layout.&lt;/li&gt;
&lt;li&gt;Cabecera HTTP &lt;code&gt;Link:&lt;/code&gt; a nivel de CDN.&lt;/li&gt;
&lt;li&gt;Negociación de contenido en &lt;code&gt;Accept: text/markdown&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/llms.txt&lt;/code&gt; y &lt;code&gt;/llms-full.txt&lt;/code&gt; en la raíz, regenerados en cada despliegue.&lt;/li&gt;
&lt;li&gt;Citas, fragmentos y estadísticas visibles en el propio contenido.&lt;/li&gt;
&lt;li&gt;Entidades nombradas, incluidas personas, productos, empresas, versiones y fechas, usadas de forma consistente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Medición:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logging server-side de User-Agent y Referer en el edge.&lt;/li&gt;
&lt;li&gt;Un dashboard que segmente el tráfico de crawlers de AI frente al humano y al de búsqueda clásica.&lt;/li&gt;
&lt;li&gt;Prompts de prueba mensuales en ChatGPT, Claude, Perplexity y Gemini para seguir menciones de marca.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;un-orden-de-implementación-pragmático&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#un-orden-de-implementación-pragmático&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Un orden de implementación pragmático&lt;/h2&gt;
&lt;p&gt;Para un sitio que no tiene nada de esto, trabaja en este orden. Cada paso aporta por sí solo.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Auditar y corregir el robots.txt. Sin esto nada funciona.&lt;/li&gt;
&lt;li&gt;Añadir &lt;code&gt;&amp;#x3C;link rel=&quot;alternate&quot; type=&quot;text/markdown&quot;&gt;&lt;/code&gt; apuntando al futuro endpoint Markdown. Puede desplegarse antes de que el endpoint exista.&lt;/li&gt;
&lt;li&gt;Construir la pipeline de renderizado Markdown. Empieza por el tipo de contenido con más tráfico y amplía.&lt;/li&gt;
&lt;li&gt;Añadir la cabecera de respuesta &lt;code&gt;Link:&lt;/code&gt; y negociación de contenido en &lt;code&gt;Accept: text/markdown&lt;/code&gt; en el CDN.&lt;/li&gt;
&lt;li&gt;Generar &lt;code&gt;/llms.txt&lt;/code&gt; y &lt;code&gt;/llms-full.txt&lt;/code&gt; desde la content collection en tiempo de build.&lt;/li&gt;
&lt;li&gt;Reescribir los artículos bandera con entidades nombradas, citas directas y estadísticas con fuente. Trabajo editorial continuo y con mayor impacto a largo plazo.&lt;/li&gt;
&lt;li&gt;Instrumentar analítica server-side para el tráfico de crawlers de AI.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Los pasos uno a cinco son ingeniería pura y caben en un sprint. El paso seis es editorial y compone a lo largo de trimestres. El paso siete te dice si algo de esto funcionó.&lt;/p&gt;
&lt;h2 id=&quot;cómo-medir-la-visibilidad-en-ai&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-medir-la-visibilidad-en-ai&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo medir la visibilidad en AI&lt;/h2&gt;
&lt;p&gt;La analítica tradicional no ve la mayor parte del tráfico de crawlers de AI. Al no ejecutar JavaScript, GA4 y Plausible se los pierden. Necesitas logging server-side.&lt;/p&gt;
&lt;p&gt;Captura en el edge: User-Agent completo, cabecera Referer, ruta solicitada, status HTTP devuelto y tamaño de respuesta. Segmenta por patrones de user agent como &lt;code&gt;GPTBot&lt;/code&gt;, &lt;code&gt;ClaudeBot&lt;/code&gt;, &lt;code&gt;PerplexityBot&lt;/code&gt;, &lt;code&gt;OAI-SearchBot&lt;/code&gt;, &lt;code&gt;Bytespider&lt;/code&gt;, &lt;code&gt;CCBot&lt;/code&gt;, &lt;code&gt;Applebot-Extended&lt;/code&gt; y &lt;code&gt;Google-Extended&lt;/code&gt; para construir un dashboard semanal.&lt;/p&gt;
&lt;p&gt;Complementa con tracking de menciones de marca. Una vez por semana, ejecuta un conjunto fijo de prompts en ChatGPT, Claude, Perplexity y Gemini y registra si se cita tu marca, en qué posición y con qué fragmento. Herramientas como Profound, Peec AI y Otterly automatizan ese trabajo. Una hoja de cálculo disciplinada cumple la misma función.&lt;/p&gt;
&lt;p&gt;Si un crawler descarga tu endpoint Markdown pero tu marca nunca aparece en el set de citas, el contenido es alcanzable pero no competitivo. Vuelve a la palanca editorial.&lt;/p&gt;
&lt;h2 id=&quot;objeciones-frecuentes-y-respuestas-honestas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#objeciones-frecuentes-y-respuestas-honestas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Objeciones frecuentes y respuestas honestas&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;¿Servir Markdown va a canibalizar mi tráfico SEO?&lt;/strong&gt; No. Google indexa el HTML canónico. El hermano Markdown se anuncia como representación &lt;code&gt;rel=&quot;alternate&quot;&lt;/code&gt;, lo que le dice a Google que no lo trate como duplicado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Esto se va a abusar?&lt;/strong&gt; Los LLMs evalúan candidatos a fuente por señales de confianza percibida, no por formato de archivo. Publicar Markdown no convierte contenido flojo en citable. La inversión protege del riesgo de ser ilegible, sin garantizar el retorno de ser citado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Debo bloquear los crawlers de AI?&lt;/strong&gt; Es una decisión de negocio. Si vives del tráfico directo, bloquear entrenamiento y permitir retrieval es un punto intermedio razonable. Si vives de la descubribilidad, no bloquees nada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Cuánto tardan los resultados?&lt;/strong&gt; La capa de ingeniería actúa en días, tan pronto como los crawlers vuelven a pasar. La capa editorial compone a lo largo de trimestres. Espera cambios medibles en las citas de AI entre cuatro y ocho semanas tras desplegar ambas capas a la vez.&lt;/p&gt;
&lt;h2 id=&quot;una-estrategia-que-envejece-bien&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#una-estrategia-que-envejece-bien&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Una estrategia que envejece bien&lt;/h2&gt;
&lt;p&gt;El campo GEO es inestable. Cada mes aparece una norma propuesta, un crawler nuevo o un cambio en cómo uno de los grandes LLMs pondera las citas. La estrategia que envejece bien no es perseguir cada tendencia, sino invertir en la capa que cualquier sistema de retrieval necesita: contenido limpio, bien estructurado y rico en citas, entregado en un formato barato de procesar.&lt;/p&gt;
&lt;p&gt;La fontanería técnica, es decir, hermanos Markdown, negociación de contenido y llms.txt, es coste de entrada. El trabajo editorial, es decir, entidades nombradas, citas directas, estadísticas verificables y fuentes autoritativas, es el foso. La competencia copia tu infraestructura en una semana. Cinco años de texto sustancioso firmado por expertos nombrados en tu empresa no los copia nadie.&lt;/p&gt;
&lt;p&gt;Monta la fontanería una vez. Dedica el resto del tiempo a escribir cosas que merezca la pena citar.&lt;/p&gt;</content:encoded><category>seo</category><category>ai-search</category><category domain="tag">geo</category><category domain="tag">visibilidad-llm</category><category domain="tag">busqueda-ai</category><category domain="tag">optimizacion-motores-generativos</category><category domain="tag">llms-txt</category><category domain="tag">negociacion-de-contenido</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Cloudflare Workers y WordPress: servir WooCommerce desde el edge</title><link>https://wppoland.com/es/cloudflare-workers-wordpress-woocommerce-edge/</link><guid isPermaLink="true">https://wppoland.com/es/cloudflare-workers-wordpress-woocommerce-edge/</guid><description>Cloudflare Workers ejecuta JavaScript y WebAssembly en cientos de centros de datos en más de 100 países. Combinar Workers con un origen WordPress saca la ruta de lectura del servidor WordPress y convierte WooCommerce en una tienda renderizada en el edge. Así funciona la arquitectura, dónde se rompe y qué medir antes de adoptarla.</description><pubDate>Wed, 22 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;cloudflare-workers-y-wordpress-servir-woocommerce-desde-el-edge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-workers-y-wordpress-servir-woocommerce-desde-el-edge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cloudflare Workers y WordPress: servir WooCommerce desde el edge&lt;/h2&gt;
&lt;p&gt;Cloudflare Workers ejecuta JavaScript en el borde de la red global de Cloudflare. WordPress ejecuta PHP en un único servidor de origen. Poner Workers delante de WordPress es la arquitectura que permite a una tienda WooCommerce heredar el rendimiento de la red edge sin reescribir el CMS. Las contrapartidas son reales y conviene nombrarlas explícitamente.&lt;/p&gt;
&lt;p&gt;Este artículo se ancla en el pilar &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;servicio de WordPress headless&lt;/a&gt; y se empareja con la &lt;a href=&quot;/en/headless-wordpress-isr-vs-ssr/&quot;&gt;decisión de renderizado ISR vs SSR&lt;/a&gt; y la &lt;a href=&quot;/en/economics-of-headless-wordpress-2026/&quot;&gt;economía del WordPress headless&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Workers gestiona la ruta de lectura, WordPress gestiona escrituras y autoría.&lt;/li&gt;
&lt;li&gt;El catálogo y el detalle de producto de WooCommerce se renderizan en el edge; el carrito y el checkout se quedan en el origen.&lt;/li&gt;
&lt;li&gt;La invalidación de caché es por webhook, no por tiempo.&lt;/li&gt;
&lt;li&gt;Cloudflare Pages limita el archivo _redirects a 2000 reglas, planifica en torno a eso.&lt;/li&gt;
&lt;li&gt;El plan gratuito de Workers limita el bundle comprimido a 1 MB; el plan de pago lo eleva.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;qué-es-realmente-cloudflare-workers&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-realmente-cloudflare-workers&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué es realmente Cloudflare Workers&lt;/h2&gt;
&lt;p&gt;Workers es un runtime de isolates V8 que corre JavaScript, TypeScript y WebAssembly dentro de la red edge de Cloudflare (la &lt;a href=&quot;https://www.cloudflare.com/network/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;página de red&lt;/a&gt; lista los centros de datos). No es Node.js, no es un contenedor Lambda y no es un sitio donde correr PHP. WordPress se queda en el origen; el Worker es un reverse proxy en JS delante.&lt;/p&gt;
&lt;p&gt;Algunas características que delimitan lo que se puede y no se puede hacer con Workers delante de WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sin PHP.&lt;/strong&gt; Un Worker no ejecuta &lt;code&gt;wp-load.php&lt;/code&gt;. Puede consumir &lt;code&gt;/wp-json/wp/v2/posts&lt;/code&gt; y &lt;code&gt;/wp-json/wc/v3/products&lt;/code&gt;, transformar la respuesta y devolver HTML o JSON. La instalación WordPress gestiona toda mutación autenticada, incluida la validación HMAC del callback de Bizum o la firma SHA-256 de Redsys, que conviene mantener cerca del plugin del gateway.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La CPU es el presupuesto que aprieta primero.&lt;/strong&gt; El plan gratuito permite alrededor de 10 ms de CPU por petición, el de pago sube cerca de 30 ms y Unbound va más lejos. Una página de producto ISR servida desde KV gasta casi nada; un template SSR que agrega cuatro llamadas a &lt;code&gt;/wp-json/&lt;/code&gt; y aplica IVA intracomunitario por país comunitario leyendo &lt;code&gt;cf-ipcountry&lt;/code&gt; puede rozar el techo del plan gratuito.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dos capas de almacenamiento, dos modelos de consistencia.&lt;/strong&gt; Workers KV es eventualmente consistente: lectura local rápida, las escrituras tardan hasta cerca de un minuto en propagarse y en ráfaga se limitan. D1 es SQLite en el edge con consistencia fuerte. Para WooCommerce en ES, KV sirve para listados de catálogo cacheados; el contador de stock vivo durante una campaña y la cola de envío a Verifactu, que necesita orden estricto, deben quedarse en el origen o en Durable Objects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El tamaño del bundle cuenta.&lt;/strong&gt; El script comprimido se sube a 1 MB en el plan gratuito y a 10 MB en el de pago. Una app Astro o Next.js completa, con bundles ES y CA y el cliente REST de WooCommerce, requiere el plan de pago.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Productos vecinos cubren formas similares.&lt;/strong&gt; Cloudflare Pages Functions corre en el mismo runtime y es el hogar ergonómicamente correcto para una app Astro o Next.js. Vercel Edge Functions y AWS Lambda@Edge resuelven la misma forma con modelos de coste distintos. Workers gana cuando WordPress ya está detrás del DNS de Cloudflare y el equipo quiere una sola plataforma para caché, WAF y renderizado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El código escrito contra APIs de la Web Platform (Fetch, Request, Response, Streams, Web Crypto) corre sin cambios. El código que depende de la biblioteca estándar de Node, módulos nativos o acceso al filesystem, no.&lt;/p&gt;
&lt;h2 id=&quot;la-arquitectura-en-dos-capas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-arquitectura-en-dos-capas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La arquitectura en dos capas&lt;/h2&gt;
&lt;p&gt;En un montaje Workers + WordPress, dos sistemas comparten responsabilidad:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Origen WordPress.&lt;/strong&gt; Autoría (Block Editor, REST API, WP-CLI), operaciones de escritura (crear, actualizar, eliminar entradas; creación de pedidos; registro de usuarios) y fuente de la verdad para contenido y datos de producto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edge Cloudflare Workers.&lt;/strong&gt; Renderizado de la ruta de lectura (generación de HTML), agregación de API (combinar varios endpoints REST de WordPress en una sola respuesta para el front), edge caching (por ruta, por etiqueta) y aspectos transversales (geo-routing, variantes A/B, reescritura de cabeceras).&lt;/p&gt;
&lt;p&gt;La frontera es nítida. Todo lo que muta estado vive en el origen WordPress. Todo lo que lee, renderiza o agrega puede vivir en Workers. Carrito y checkout se sientan en la línea fronteriza porque tienen estado pero son intensivos en lectura.&lt;/p&gt;
&lt;h2 id=&quot;patrones-concretos-de-woocommerce-que-migran-a-workers&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-concretos-de-woocommerce-que-migran-a-workers&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones concretos de WooCommerce que migran a Workers&lt;/h2&gt;
&lt;p&gt;Patrones de Workers delante de WooCommerce que hemos entregado o visto entregar limpiamente en tiendas españolas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caché edge para lecturas &lt;code&gt;/wp-json/&lt;/code&gt;.&lt;/strong&gt; Una ruta Worker hace match con &lt;code&gt;/wp-json/wc/v3/products*&lt;/code&gt; y sirve desde caché cuando la clave (URL más un pequeño conjunto de cabeceras vary) está fresca. Endpoints sensibles a stock como &lt;code&gt;/wp-json/wc/v3/products/&amp;#x3C;id&gt;&lt;/code&gt; reciben TTL más corto e invalidación por webhook en la acción &lt;code&gt;woocommerce_product_set_stock&lt;/code&gt;. El origen PHP deja de gestionar el fan-out de listados que viene de exportadores de feeds para Idealo y Google Shopping, scrapers de precios y crawlers automatizados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caché de página consciente del carrito.&lt;/strong&gt; La página de catálogo se cachea, pero el fragmento de mini-carrito no. El Worker lee la cookie &lt;code&gt;wp_woocommerce_session_*&lt;/code&gt;, va a buscar el fragmento al origen y cose la respuesta. El HTML del catálogo permanece cacheable entre todos los anónimos; el fragmento del carrito es por sesión y nunca se cachea. Mismo patrón sirve para inyectar el botón Bizum con el &lt;code&gt;merchantParameters&lt;/code&gt; ya firmado en un esqueleto público que sigue siendo estático.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transformación de imagen en el edge.&lt;/strong&gt; Las imágenes de producto se suben a la media library de WordPress en resolución completa. Una ruta Worker delante de &lt;code&gt;/wp-content/uploads/&lt;/code&gt; redimensiona, recodifica a AVIF y cachea en el edge. El origen deja de ejecutar Imagick en cada petición no cacheada, que durante una campaña en El Corte Inglés o Black Friday es una de las fuentes de CPU más ruidosas en una caja WooCommerce.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Redirecciones y variantes geo.&lt;/strong&gt; El Worker lee &lt;code&gt;cf-ipcountry&lt;/code&gt; y separa peninsular de Canarias, Ceuta y Melilla para mostrar la tarifa SEUR o MRW correcta y aplicar IGIC en lugar de IVA al 21 por ciento, o asigna cohorte A/B sin viaje a PHP. Canarias es territorio fiscal aparte y la calculadora del edge tiene que tratarlo como tal: el mismo SKU vale distinto según el destino. La misma lógica en WordPress obliga a pasar por &lt;code&gt;wp-load.php&lt;/code&gt; para leer &lt;code&gt;is_canarias_visitor()&lt;/code&gt; desde un plugin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reglas WAF más allá de WAF Pro.&lt;/strong&gt; Bloquear &lt;code&gt;POST&lt;/code&gt; a &lt;code&gt;/xmlrpc.php&lt;/code&gt;, limitar consultas &lt;code&gt;/?s=&lt;/code&gt; por ASN único, dropear peticiones que traigan &lt;code&gt;wp-config&lt;/code&gt; en el path, o validar la firma HMAC del callback de Bizum y la firma de Redsys antes de que lleguen a PHP. Workers da una capa programable sobre el WAF gestionado sin pagar slots de reglas Enterprise.&lt;/p&gt;
&lt;p&gt;Lo que se queda en el origen WordPress: guardados del Block Editor, creación de pedido desde checkout autenticado, callbacks de pasarelas (Redsys, Bizum, transferencia), proxy de envío a Verifactu y AEAT, sesiones de admin y el fan-out de webhooks que dispara invalidación en el Worker. El servidor PHP escala al volumen editorial y al volumen de pedidos, no al volumen de tráfico anónimo de catálogo.&lt;/p&gt;
&lt;h2 id=&quot;dónde-trazar-la-frontera&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-trazar-la-frontera&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde trazar la frontera&lt;/h2&gt;
&lt;p&gt;Tres categorías de ruta, tres reglas de renderizado distintas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estático o ISR en el edge.&lt;/strong&gt; Páginas de marketing, entradas de blog, archivos de categoría, páginas de detalle de producto. Cacheadas agresivamente con invalidación por webhook.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SSR en el edge sin caché.&lt;/strong&gt; Carrito, cuenta, dashboards, páginas de checkout que son personalizadas y dirigidas por sesión. Workers ejecuta el render en cada petición; WordPress provee los datos vía REST.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solo origen, sin Worker.&lt;/strong&gt; WP Admin (&lt;code&gt;/wp-admin/&lt;/code&gt;), el Block Editor y los endpoints REST del core de WordPress usados internamente para autoría. La configuración de rutas del Worker los excluye explícitamente de la capa edge.&lt;/p&gt;
&lt;p&gt;El error común es intentar mover el carrito a la caché edge. El carrito es estado por usuario; cachearlo entre usuarios es un incidente de seguridad esperando ocurrir. SSR en el edge es el modelo correcto: el Worker renderiza el HTML del carrito de ese usuario, pero no cachea el resultado.&lt;/p&gt;
&lt;h2 id=&quot;invalidación-de-caché-la-pieza-portante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#invalidación-de-caché-la-pieza-portante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Invalidación de caché, la pieza portante&lt;/h2&gt;
&lt;p&gt;ISR en el edge solo es correcto cuando la invalidación es correcta. El patrón que funciona:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Etiqueta cada respuesta cacheada.&lt;/strong&gt; Cada página renderizada se etiqueta con los IDs de entrada, IDs de término e IDs de producto de WordPress que referencia. La caché de Cloudflare Workers soporta purgado por etiquetas vía la API de caché.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Webhook en cada escritura de WordPress.&lt;/strong&gt; Publicación, cambio de slug, eliminación de entrada, actualización de stock, cambio de precio. Cada uno dispara un webhook a una ruta Workers que traduce “la entrada 8421 cambió” en “purga la etiqueta wp-post-8421” vía la API de Cloudflare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Revalidación por tiempo solo como salvaguarda.&lt;/strong&gt; Una ventana stale-while-revalidate de 1 hora cubre fallos de entrega de webhooks. No es el mecanismo principal. Un sitio que revalide cada 60 segundos reconstruye 60 veces por hora cada página; en 5000 páginas son 300000 renderizados innecesarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El orden importa: invalida y luego escribe.&lt;/strong&gt; Cuando una publicación de WordPress dispara el webhook, el Worker invalida la etiqueta y la siguiente petición reconstruye la página desde el origen ya actualizado. Si se invierte el orden, un render obsoleto se cuela en la caché y persiste hasta la siguiente invalidación.&lt;/p&gt;
&lt;h2 id=&quot;límites-a-planificar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#límites-a-planificar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Límites a planificar&lt;/h2&gt;
&lt;p&gt;Límites de plataforma documentados por Cloudflare:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tope de &lt;code&gt;_redirects&lt;/code&gt; en Cloudflare Pages&lt;/strong&gt;: 2000 reglas. Por encima, los deploys fallan. Lo seguimos en la pipeline de build y estamos actualmente en 1600.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tamaño del bundle del Worker&lt;/strong&gt;: 1 MB comprimido en el plan gratuito, mayor en planes de pago. Las rutas que entregan aplicaciones completas Astro o Next.js requieren el plan de pago.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiempo de CPU por petición&lt;/strong&gt;: 10 ms en el plan gratuito, 50 ms o más en los de pago. SSR con lógica de plantilla pesada cruza rápido el techo del plan gratuito; las respuestas cacheadas vía ISR consumen prácticamente nada de CPU.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subpeticiones por petición&lt;/strong&gt;: 50 en el plan gratuito, más en los de pago. La agregación REST de WordPress que se ramifica a varios endpoints choca con esto en páginas complejas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La respuesta arquitectónica habitual: diseña para el plan de pago, despliega en el plan de pago, trata el plan gratuito como sandbox de desarrollo.&lt;/p&gt;
&lt;h2 id=&quot;compatibilidad-con-astro-y-nextjs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#compatibilidad-con-astro-y-nextjs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Compatibilidad con Astro y Next.js&lt;/h2&gt;
&lt;p&gt;Según el &lt;a href=&quot;/en/tech-radar/&quot;&gt;veredictos de stack Q3 2026&lt;/a&gt;, tanto Astro 5+ como Next.js 15 entregan adaptadores oficiales de Cloudflare. El adaptador de Astro compila las rutas estáticas + SSR a Workers; el de Next.js hace lo mismo con el App Router. Ambos producen un artefacto de deploy que corre en Cloudflare Pages con Workers por debajo.&lt;/p&gt;
&lt;p&gt;La elección entre ellos está cubierta en la &lt;a href=&quot;/en/headless-wordpress-nextjs-vs-astro-2026/&quot;&gt;matriz de decisión Next.js vs Astro&lt;/a&gt;. Para una tienda WooCommerce orientada a contenido, Astro suele ser la opción por defecto porque el modelo static-first se mapea limpiamente al catálogo. Para un montaje más orientado a aplicación (cuenta, dashboard, personalización compleja), el modelo de server components de Next.js tiene la ventaja ergonómica.&lt;/p&gt;
&lt;p&gt;En cualquier caso, el origen WordPress queda inalterado. Workers + WordPress es un patrón arquitectónico, no una elección de framework.&lt;/p&gt;
&lt;h2 id=&quot;formas-de-fallo-que-conviene-conocer-antes-de-entregar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#formas-de-fallo-que-conviene-conocer-antes-de-entregar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Formas de fallo que conviene conocer antes de entregar&lt;/h2&gt;
&lt;p&gt;Algunas maneras concretas en que hemos visto un montaje Workers + WordPress romperse o sorprender al equipo en tiendas ES:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitación de escrituras KV en invalidación a ráfagas.&lt;/strong&gt; Una importación en bulk del ERP que toca 5000 SKUs dispara 5000 webhooks &lt;code&gt;woocommerce_update_product&lt;/code&gt;. El Worker traduce cada uno en una escritura KV por clave de SKU. El throughput de escritura del KV está limitado por namespace, las escrituras se encolan y la caché queda obsoleta durante minutos, con precios y stock que no coinciden con los enviados a Verifactu. El arreglo: hacer debounce en el lado WordPress y agrupar las invalidaciones, o cambiar el mapa por SKU por una sola llamada de purga por etiqueta contra la API de caché de Cloudflare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cold-start vs warm-start en locales de tráfico bajo.&lt;/strong&gt; Un isolate V8 reutilizado entre peticiones casi no añade coste de arranque. La primera petición a una región tras una ventana larga de inactividad paga 5 a 50 ms extra mientras el isolate arranca y el script se parsea. Para la ruta CA o EU de una tienda que sirva sobre todo desde Madrid y Barcelona, el p99 se ve peor que el p50. Monitores sintéticos desde varias localidades reparten el problema; el RUM lo desnuda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tope de 1 MB en el plan gratuito.&lt;/strong&gt; Una app Next.js 15 completa, con adaptador Cloudflare, &lt;code&gt;react-server-dom&lt;/code&gt;, bundles ES y CA, calculadora de IVA intracomunitario y tipo IGIC para Canarias y el cliente REST de WooCommerce, supera fácil 1 MB comprimido. El deploy falla en el upload, no en runtime. Se planifica para el de pago (10 MB) o se divide el render entre varios scripts Worker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fan-out de subpeticiones en páginas agregadas.&lt;/strong&gt; Una página de categoría que va a buscar el término, los productos, las categorías relacionadas, las breadcrumbs, el menú y la tabla de tarifas SEUR o MRW por código postal toca seis endpoints &lt;code&gt;/wp-json/&lt;/code&gt;. El plan gratuito tope subpeticiones a 50 por invocación Worker, el de pago a 1000. Capas de agregación que pre-componen la respuesta en el lado WordPress, o un endpoint GraphQL único vía WPGraphQL, mantienen el conteo predecible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fallos de entrega de webhooks dejando caché obsoleta.&lt;/strong&gt; WordPress dispara el webhook en la acción &lt;code&gt;shutdown&lt;/code&gt;; si el worker PHP-FPM expira o si la red cae entre la confirmación del callback Redsys y el &lt;code&gt;do_action&lt;/code&gt;, el webhook nunca llega al Worker. Un stale-while-revalidate de 1 hora basado en etiquetas atrapa esto; sin la salvaguarda, el render obsoleto persiste hasta la siguiente purga manual.&lt;/p&gt;
&lt;p&gt;Las fases de migración (auditoría, scaffolding REST y webhooks, build y cutover, observabilidad) están documentadas en el schema &lt;code&gt;howTo&lt;/code&gt; al inicio de este artículo. Las ejecutamos dentro de &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;nuestro servicio de WordPress headless&lt;/a&gt;. El precio es individual porque TTFB y TTI dependen de la carga de plugins del origen, del framework elegido y del perfil real de tráfico; el &lt;a href=&quot;/en/benchmarks/astro-vs-nextjs-tti-woocommerce/&quot;&gt;scaffold de benchmark&lt;/a&gt; documenta el protocolo de medición al que nos vinculamos.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-esto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-esto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja esto&lt;/h2&gt;
&lt;p&gt;Este artículo pilar se ancla en el clúster &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;servicio de WordPress headless&lt;/a&gt;. Para la elección de framework ver la &lt;a href=&quot;/en/headless-wordpress-nextjs-vs-astro-2026/&quot;&gt;matriz de decisión Next.js vs Astro&lt;/a&gt;. Para la elección de renderizado por ruta ver la &lt;a href=&quot;/en/headless-wordpress-isr-vs-ssr/&quot;&gt;decisión ISR vs SSR&lt;/a&gt;. Para riesgos de migración SEO ver la &lt;a href=&quot;/en/seo-patterns-for-headless-wordpress/&quot;&gt;checklist de patrones SEO de WordPress headless&lt;/a&gt;. Para el encuadre de costes ver la &lt;a href=&quot;/en/economics-of-headless-wordpress-2026/&quot;&gt;economía del WordPress headless 2026&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>headless</category><category>performance</category><category>infrastructure</category><category domain="tag">cloudflare-workers</category><category domain="tag">cloudflare-pages</category><category domain="tag">wordpress</category><category domain="tag">woocommerce</category><category domain="tag">edge-computing</category><category domain="tag">astro</category><category domain="tag">nextjs</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Cuánto cobran los ingenieros WordPress polacos en 2026: junior, mid, senior</title><link>https://wppoland.com/es/salarios-desarrolladores-wordpress-polacos-2026/</link><guid isPermaLink="true">https://wppoland.com/es/salarios-desarrolladores-wordpress-polacos-2026/</guid><description>La mediana B2B de senior en la IT polaca es de 24 360 PLN netos, mid 18 000 PLN, junior 9 125 PLN. Pero &quot;ingeniero WordPress&quot; no es una sola profesión. Lo que realmente pagan WordPress, WooCommerce, Astro y headless en 2026, con referencia a los informes de No Fluff Jobs y Just Join IT.</description><pubDate>Mon, 20 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;cuánto-cobran-los-ingenieros-wordpress-polacos-en-2026-junior-mid-senior&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuánto-cobran-los-ingenieros-wordpress-polacos-en-2026-junior-mid-senior&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuánto cobran los ingenieros WordPress polacos en 2026: junior, mid, senior&lt;/h2&gt;
&lt;p&gt;La pregunta “cuánto cobra un programador WordPress en Polonia” tiene en 2026 una respuesta honesta y varias deshonestas. La respuesta honesta exige dos informes abiertos a cualquiera: &lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Mercado laboral IT 2025/2026&lt;/a&gt; y &lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Just Join IT ¿Y este Eldorado? 2024/2025&lt;/a&gt;. La respuesta deshonesta omite que “ingeniero WordPress” en 2026 es una categoría laboral, no una profesión.&lt;/p&gt;
&lt;p&gt;Este artículo descompone los números en sus elementos. Se conecta con la &lt;a href=&quot;/en/careers/&quot;&gt;página de carreras de WPPoland&lt;/a&gt; y con la &lt;a href=&quot;/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/&quot;&gt;opinión sobre el mercado nearshore polaco&lt;/a&gt;, donde el mismo análisis se presenta para un comprador occidental.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Mediana B2B senior, IT polaca 2024: 24 360 PLN netos / mes (Just Join IT).&lt;/li&gt;
&lt;li&gt;Mediana B2B mid: 18 000 PLN. Junior: 9 125 PLN.&lt;/li&gt;
&lt;li&gt;“WordPress” por sí solo no está entre los top-15 requisitos del mercado polaco (No Fluff Jobs 2025).&lt;/li&gt;
&lt;li&gt;La que paga es la combinación: WordPress + React o Astro + Cloudflare Workers, más IA.&lt;/li&gt;
&lt;li&gt;El 72 por ciento de las colocaciones senior son B2B; el contrato fijo para senior en la IT polaca se está reduciendo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;las-cifras-que-cualquiera-puede-comprobar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-cifras-que-cualquiera-puede-comprobar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las cifras que cualquiera puede comprobar&lt;/h2&gt;
&lt;p&gt;Los dos informes citados arriba están disponibles públicamente. Repito sus datos clave sin parafrasear, porque la polémica solo tiene sentido con cifras exactas.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Just Join IT, ¿Y este Eldorado? 2024/2025&lt;/a&gt;:&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Nivel&lt;/th&gt;&lt;th&gt;Mediana B2B neta / mes&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Junior&lt;/td&gt;&lt;td&gt;9 125 PLN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mid&lt;/td&gt;&lt;td&gt;18 000 PLN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Senior&lt;/td&gt;&lt;td&gt;24 360 PLN&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Modo de trabajo en la IT polaca (datos en directo de Just Join IT):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Realmente remoto: 60,12 por ciento&lt;/li&gt;
&lt;li&gt;Híbrido: 32,47 por ciento&lt;/li&gt;
&lt;li&gt;Solo oficina: 7,41 por ciento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero las “ofertas listadas como remoto” son el 46,75 por ciento. La distancia entre el listado y la práctica real es el estándar del mercado polaco senior B2B: un contrato B2B en 2026 implica trabajo remoto, independientemente de cómo esté redactada la oferta.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Mercado laboral IT 2025/2026&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crecimiento de ofertas IT 2025 vs. 2024: +44 por ciento (pico +92,8 por ciento en septiembre).&lt;/li&gt;
&lt;li&gt;Cuota senior de las ofertas 2025: 59,7 por ciento (subiendo desde el 55,5 por ciento en 2024 y el 48,3 por ciento en 2023).&lt;/li&gt;
&lt;li&gt;Cuota junior: 5,3 por ciento.&lt;/li&gt;
&lt;li&gt;B2B en nivel senior: 72 por ciento.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Top-15 hard skills (porcentaje de todas las ofertas):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Python 23,1 por ciento&lt;/li&gt;
&lt;li&gt;SQL 22,3 por ciento&lt;/li&gt;
&lt;li&gt;Java 18,6 por ciento&lt;/li&gt;
&lt;li&gt;REST API 13,9 por ciento&lt;/li&gt;
&lt;li&gt;Docker 11,4 por ciento&lt;/li&gt;
&lt;li&gt;Kubernetes 10,9 por ciento&lt;/li&gt;
&lt;li&gt;JavaScript 10,9 por ciento&lt;/li&gt;
&lt;li&gt;TypeScript 9,2 por ciento&lt;/li&gt;
&lt;li&gt;React 8,4 por ciento&lt;/li&gt;
&lt;li&gt;Spring 8,3 por ciento&lt;/li&gt;
&lt;li&gt;.NET 7 por ciento&lt;/li&gt;
&lt;li&gt;PostgreSQL 6,8 por ciento&lt;/li&gt;
&lt;li&gt;Angular 5,6 por ciento&lt;/li&gt;
&lt;li&gt;API 5,6 por ciento&lt;/li&gt;
&lt;li&gt;Terraform 5,5 por ciento&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;WordPress no aparece en esta lista. Ni como etiqueta autónoma ni como parte de los top 15. Eso no significa que nadie lo use; significa que las agencias que publican en No Fluff Jobs no usan la palabra “WordPress” como skill keyword central.&lt;/p&gt;
&lt;h2 id=&quot;polémica-wordpress-no-es-una-especialización-en-el-mercado-polaco-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#polémica-wordpress-no-es-una-especialización-en-el-mercado-polaco-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Polémica: WordPress no es una especialización en el mercado polaco de 2026&lt;/h2&gt;
&lt;p&gt;Aquí empieza la polémica. WordPress está detrás del 43 por ciento de los sitios web del mundo según &lt;a href=&quot;https://automattic.com/2026/04/21/wordpress-operating-system-agentic-web/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Automattic&lt;/a&gt;, pero no es un keyword top-15 en el mercado laboral polaco. ¿Qué significa eso?&lt;/p&gt;
&lt;p&gt;Tres interpretaciones:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Primera, ingenua&lt;/strong&gt;: WordPress está infrarrepresentado en el mercado polaco, así que un senior WordPress cobra menos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segunda, numérica&lt;/strong&gt;: las ofertas anunciadas en agregadores de empleo son mayoritariamente enterprise y product engineering. Los sitios web construidos sobre WordPress contratan por contactos directos, agencias digitales, freelance.com y networking local. La ausencia de WordPress en el top 15 de No Fluff Jobs no es una conclusión sobre tarifas bajas. Es una conclusión sobre un canal distinto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tercera, orientada al stack&lt;/strong&gt;: en 2026, un senior WordPress que quiera cobrar la tarifa superior es un senior en WordPress + React o Astro + Cloudflare. WordPress por sí solo es un CMS cuyo conocimiento se da por hecho, pero no basta para justificar la mediana B2B senior. El stack del lado del frontend es lo que sube la tarifa.&lt;/p&gt;
&lt;p&gt;Los datos de Just Join IT lo confirman: JS por sí solo el 11,24 por ciento de las ofertas, Java el 10,49 por ciento, IA/ML el 0,85 por ciento pero con la franja salarial de crecimiento más rápido. WordPress tampoco aparece allí, porque Just Join IT no usa WordPress como tag de skill.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-hoy-paga-la-tarifa-superior-a-un-ingeniero-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-hoy-paga-la-tarifa-superior-a-un-ingeniero-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que hoy paga la tarifa superior a un “ingeniero WordPress”&lt;/h2&gt;
&lt;p&gt;En la práctica, en nuestra agencia y en el mercado que vemos en 2026, la tarifa superior B2B la paga la combinación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress como CMS / WooCommerce como motor de comercio.&lt;/li&gt;
&lt;li&gt;Astro 5+ o Next.js 15 como frontend headless (ambos en el anillo Adopt de nuestro &lt;a href=&quot;/en/tech-radar/&quot;&gt;posición en rings del Tech Radar&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Cloudflare Workers como capa edge.&lt;/li&gt;
&lt;li&gt;TypeScript en todo el stack.&lt;/li&gt;
&lt;li&gt;Familiaridad práctica con la Anthropic Claude API y con el Model Context Protocol en producción.&lt;/li&gt;
&lt;li&gt;Capacidad para conducir un proyecto con un cliente occidental en inglés.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si falta cualquiera de estos puntos, la tarifa cae entre un 20 y un 30 por ciento. El conjunto completo coloca al senior por encima de la mediana de Just Join IT de 24 360 PLN B2B netos, a veces muy por encima. Sin inglés a nivel de negocio, los proyectos occidentales quedan cerrados y la mediana vuelve a la base polaca.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-ha-bajado-lo-que-ha-subido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-ha-bajado-lo-que-ha-subido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que ha bajado, lo que ha subido&lt;/h2&gt;
&lt;p&gt;Tres cambios de mercado visibles en los datos de 2025 y 2024:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Las solicitudes por oferta cayeron un 45 por ciento.&lt;/strong&gt; No Fluff Jobs 2025 reporta una media de 24 candidaturas por oferta, frente a 44 en 2024. Es el fin de la era en que “un junior envía 200 CV al mes”. Un senior en el mercado en 2026 tiene mucha más palanca que un año antes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los puestos de IA crecen más rápido en las franjas salariales.&lt;/strong&gt; Just Join IT 2024 reporta que IA/ML representa solo el 0,85 por ciento de las ofertas, pero sus franjas crecen más deprisa. Un programador que combina IA con un dominio (comercio, content ops, agentes) entra en un escalón superior al del mero escritor de código.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El rol de “operador de LLM” desplaza los roles de coding puro.&lt;/strong&gt; Los programadores que saben extraer tareas hacia un modelo y orquestar flujos de trabajo cobran más que los programadores que escriben cada función a mano. Eso no significa que la artesanía desaparezca; significa que la tarifa de top va a quien orquesta, no a quien solo escribe.&lt;/p&gt;
&lt;h2 id=&quot;polémica-comparación-con-el-reino-unido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#polémica-comparación-con-el-reino-unido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Polémica: comparación con el Reino Unido&lt;/h2&gt;
&lt;p&gt;La tarifa diaria de un senior contractor en el Reino Unido suele ser superior a la mediana mensual polaca. Pero una tarifa diaria en libras es un proyecto puntual, mientras que la mediana B2B polaca en PLN es un contrato mensual estable. La comparación 1:1 no existe; mediana mensual y tarifa diaria son estructuralmente distintas.&lt;/p&gt;
&lt;p&gt;Lo que sí existe: un senior polaco con contrato B2B tiene en 2026 jurisdicción de la UE, sin coste de UK PAYE, y disponible en full-remote. Para un comprador británico tras el Brexit, son factores relevantes, al margen de la comparación directa de tarifas.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-este-artículo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-este-artículo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja este artículo&lt;/h2&gt;
&lt;p&gt;Este artículo conecta con la &lt;a href=&quot;/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/&quot;&gt;opinión sobre el mercado nearshore polaco&lt;/a&gt;, la &lt;a href=&quot;/en/careers/&quot;&gt;página de carreras de WPPoland&lt;/a&gt; y el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pilar de WordPress headless&lt;/a&gt;, donde el stack moderno se describe desde la parte técnica.&lt;/p&gt;
&lt;h2 id=&quot;preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preguntas frecuentes&lt;/h2&gt;
&lt;h3 id=&quot;sigue-siendo-wordpress-una-buena-elección-de-carrera-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sigue-siendo-wordpress-una-buena-elección-de-carrera-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Sigue siendo WordPress una buena elección de carrera en 2026?&lt;/h3&gt;
&lt;p&gt;Sí, si forma parte de un stack más amplio. WordPress por sí solo no es un keyword top-15 en el mercado polaco, pero WordPress + frontend moderno + edge + IA es la combinación que paga por encima de la mediana senior. Optar por WordPress puro sin modernizar en 2026 es una decisión defensiva, no ofensiva.&lt;/p&gt;
&lt;h3 id=&quot;tengo-más-oportunidades-como-ingeniero-wordpress-en-el-reino-unido-o-en-dach&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tengo-más-oportunidades-como-ingeniero-wordpress-en-el-reino-unido-o-en-dach&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Tengo más oportunidades como ingeniero WordPress en el Reino Unido o en DACH?&lt;/h3&gt;
&lt;p&gt;Las tarifas nominales son más altas, pero también lo son el coste de vida y los impuestos. Un contrato B2B polaco para un cliente occidental (full-remote, jurisdicción de la UE) suele ser más rentable que mudarse. Es matemática individual, no regla.&lt;/p&gt;
&lt;h3 id=&quot;vale-la-pena-empujar-a-un-junior-hacia-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#vale-la-pena-empujar-a-un-junior-hacia-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Vale la pena empujar a un junior hacia WordPress?&lt;/h3&gt;
&lt;p&gt;En 2026, no en solitario. Un junior que quiera empezar carrera en torno a WordPress debería entrar con un portafolio de stack moderno (TypeScript, React o Astro, Cloudflare Workers, Tailwind), donde WordPress sea uno de los elementos, no el tema central del CV. De lo contrario cae numéricamente en el 5,3 por ciento de cuota junior, donde la competencia es brutal.&lt;/p&gt;
&lt;h3 id=&quot;cambiarán-estas-cifras-en-2027&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambiarán-estas-cifras-en-2027&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Cambiarán estas cifras en 2027?&lt;/h3&gt;
&lt;p&gt;Probablemente sí. Just Join IT y No Fluff Jobs publican trimestralmente. Mantenemos el artículo concisamente actualizado y refrescamos las cifras cada trimestre. La versión actual está marcada como contentVersion 2026.1.&lt;/p&gt;
&lt;h3 id=&quot;de-dónde-vienen-estas-cifras&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#de-dónde-vienen-estas-cifras&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿De dónde vienen estas cifras?&lt;/h3&gt;
&lt;p&gt;De los dos informes enlazados al inicio del artículo: &lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Mercado laboral IT 2025/2026&lt;/a&gt; y &lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Just Join IT ¿Y este Eldorado? 2024/2025&lt;/a&gt;. Citamos sin parafrasear. No publicamos estimaciones propias sin enlace a la fuente.&lt;/p&gt;</content:encoded><category>wordpress</category><category>mercado</category><category>carrera</category><category domain="tag">polonia</category><category domain="tag">salarios</category><category domain="tag">no-fluff-jobs</category><category domain="tag">just-join-it</category><category domain="tag">senior</category><category domain="tag">b2b</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Ingenieros senior polacos como estándar nearshore post-Brexit</title><link>https://wppoland.com/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/</link><guid isPermaLink="true">https://wppoland.com/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/</guid><description>La ingeniería senior polaca es el estándar nearshore post-Brexit para compradores del Reino Unido y DACH. Los datos de mercado son concretos: 60 por ciento de cuota sénior, 60 por ciento de trabajo totalmente remoto, +44 por ciento de crecimiento de empleos IT en 2025. Esto es lo que esos números significan para contratar agencia.</description><pubDate>Sat, 18 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;ingenieros-senior-polacos-como-estándar-nearshore-post-brexit&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ingenieros-senior-polacos-como-estándar-nearshore-post-brexit&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ingenieros senior polacos como estándar nearshore post-Brexit&lt;/h2&gt;
&lt;p&gt;El mercado IT polaco ya no es el destino de arbitraje de costes que los compradores occidentales encontraron en 2018. Hoy es un mercado de alta densidad sénior con jurisdicción UE. La decisión de hacer nearshore a Polonia en 2026 es una decisión sobre calidad de ingeniería, no sobre ahorrar dinero.&lt;/p&gt;
&lt;p&gt;Este artículo defiende la tesis con datos públicos de mercado. Se empareja con el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pilar de servicio Headless WordPress&lt;/a&gt; y la &lt;a href=&quot;/en/careers/&quot;&gt;página de carreras de WPPoland&lt;/a&gt; como contraparte del lado de la contratación.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;La cuota sénior polaca de todas las vacantes IT alcanzó el 59,7 por ciento en 2025 (No Fluff Jobs).&lt;/li&gt;
&lt;li&gt;Las ofertas de empleo IT polacas crecieron un 44 por ciento interanual en 2025, con un pico del +92,8 por ciento en septiembre.&lt;/li&gt;
&lt;li&gt;El 60,12 por ciento del IT polaco trabaja efectivamente en remoto (datos en directo de Just Join IT).&lt;/li&gt;
&lt;li&gt;Los contratos B2B dominan a nivel sénior: 72 por ciento de las colocaciones sénior.&lt;/li&gt;
&lt;li&gt;La jurisdicción UE es hoy una señal de compra, no un valor por defecto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;el-mercado-del-60-por-ciento-sénior&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-mercado-del-60-por-ciento-sénior&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El mercado del 60 por ciento sénior&lt;/h2&gt;
&lt;p&gt;Según el &lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Rynek pracy IT 2025/2026&lt;/a&gt;, el 59,7 por ciento de todas las vacantes IT en la plataforma pidieron sénior en 2025, frente al 55,5 por ciento en 2024 y al 48,3 por ciento en 2023. Mid fue del 35 por ciento. Junior cayó al 5,3 por ciento.&lt;/p&gt;
&lt;p&gt;La forma es estructural. El IT polaco en 2026 no está formando juniors a gran escala; está pagando por séniors que entregan. Un comprador extranjero que contrata a un ingeniero polaco puede asumir estadísticamente seniority por defecto.&lt;/p&gt;
&lt;p&gt;El mismo informe nombra a los principales empleadores por volumen en 2025: Capgemini Polska (1368 vacantes abiertas), Link Group (1149), HSBC Technology Poland (1113), con AVENGA, Scalo, Antal, ITFS, Devire, Connectis_ y Mindbox SquareOne en el siguiente escalón. Estos son los lugares que compiten por los mismos ingenieros que un equipo occidental WordPress + headless también querría contratar.&lt;/p&gt;
&lt;h2 id=&quot;el-mercado-remoto-que-entrega-de-verdad-en-remoto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-mercado-remoto-que-entrega-de-verdad-en-remoto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El mercado remoto que entrega de verdad en remoto&lt;/h2&gt;
&lt;p&gt;Los &lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;datos en directo del Just Join IT 2024/2025&lt;/a&gt; reportan que el 60,12 por ciento del IT polaco trabaja efectivamente en remoto, el 32,47 por ciento en híbrido, solo el 7,41 por ciento exclusivamente en oficina. La cifra de “ofertas remotas disponibles” es más alta (Just Join IT lista el 46,75 por ciento como remoto, pero la práctica real lo supera porque los contratos sénior B2B son por defecto remotos, independientemente de la etiqueta del listado).&lt;/p&gt;
&lt;p&gt;Para un comprador del Reino Unido o DACH, eso significa que el solapamiento de zonas horarias y la cadencia de reuniones funcionan. Un ingeniero senior con base en Varsovia se solapa con Londres hasta las 17:00 hora UK y con Fráncfort durante toda la jornada laboral. La fricción del “¿es realmente remoto?” que tienen otros mercados nearshore está en gran medida ausente.&lt;/p&gt;
&lt;h2 id=&quot;estructura-salarial-sénior-b2b-bien-anclada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-salarial-sénior-b2b-bien-anclada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura salarial: sénior, B2B, bien anclada&lt;/h2&gt;
&lt;p&gt;El Just Join IT 2024 reporta las siguientes medianas netas B2B mensuales (en zlotis polacos):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Junior: 9 125 PLN&lt;/li&gt;
&lt;li&gt;Mid: 18 000 PLN&lt;/li&gt;
&lt;li&gt;Sénior: 24 360 PLN&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sénior B2B en torno a 5 800 EUR al mes está bien valorado para el nivel. No es el mercado más barato de Europa; Bulgaria y Ucrania son más baratos. Tampoco es ya el mercado nearshore más caro; las tarifas diarias de los contratistas sénior en el Reino Unido superan con regularidad los equivalentes mensuales polacos.&lt;/p&gt;
&lt;p&gt;La versión polémica: nadie en 2026 contrata IT polaco para ahorrar un 70 por ciento. El comprador que plantea la elección así está comprando al nivel de precio búlgaro y obteniendo la densidad búlgara de disponibilidad sénior. Un compromiso serio de WordPress + headless se cotiza como sénior, jurisdicción UE y totalmente capaz en remoto desde el primer día.&lt;/p&gt;
&lt;h2 id=&quot;la-jurisdicción-ue-es-hoy-una-partida-propia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-jurisdicción-ue-es-hoy-una-partida-propia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La jurisdicción UE es hoy una partida propia&lt;/h2&gt;
&lt;p&gt;Tras el Brexit, la “jurisdicción UE” dejó de ser un detalle contractual y se convirtió en una señal de compra. Los compradores británicos con operaciones multinacionales necesitan equipos de ingeniería bajo RGPD. Los compradores DACH necesitan proveedores alineados con NIS2 para cualquier trabajo en infraestructura crítica. Los servicios financieros necesitan preparación DORA, en vigor desde enero de 2025.&lt;/p&gt;
&lt;p&gt;Un equipo nearshore polaco:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opera bajo RGPD por defecto.&lt;/li&gt;
&lt;li&gt;Está dentro del alcance de NIS2 por transposición nacional.&lt;/li&gt;
&lt;li&gt;Está dentro del alcance de DORA cuando atiende a clientes de servicios financieros.&lt;/li&gt;
&lt;li&gt;Se sitúa en el mismo marco legal que las operaciones alemanas, francesas o italianas del comprador.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La línea “Jurisdicción UE” en nuestra &lt;a href=&quot;/en/careers/&quot;&gt;página de carreras&lt;/a&gt; no es texto de relleno; es la señal de procurement que nos hace pasar la revisión de compliance en clientes multinacionales.&lt;/p&gt;
&lt;h2 id=&quot;el-año-del-44-por-ciento-del-que-nadie-habla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-año-del-44-por-ciento-del-que-nadie-habla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El año del +44 por ciento del que nadie habla&lt;/h2&gt;
&lt;p&gt;El reset del mercado es el número menos reportado. El No Fluff Jobs 2025 reporta un crecimiento interanual del +44 por ciento en ofertas de empleo IT disponibles en 2025, con un pico del +92,8 por ciento en septiembre. Es la recuperación tras la contracción de 2023 y el inicio de un nuevo ciclo liderado por séniors.&lt;/p&gt;
&lt;p&gt;Tres implicaciones para los compradores extranjeros:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Primera&lt;/strong&gt;, el pool de talento no se está estancando. Las nuevas colocaciones sénior en 2025 se están cubriendo a un ritmo mayor que en 2024.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segunda&lt;/strong&gt;, las candidaturas por oferta cayeron (No Fluff Jobs reporta un promedio de 24 candidaturas por oferta en 2025, frente a 44 en 2024). Un ingeniero senior en Polonia en 2026 tiene más palanca que en 2024. Los compradores deberían esperar competir en calidad de relación, no en una oferta única.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tercera&lt;/strong&gt;, el reequilibrio de roles impulsado por IA es real: las ofertas AI/ML crecieron más rápido en términos salariales, mientras que los roles de coding-por-línea puro se comprimieron. Los senior generalists que combinan código + LLM + edge son el escalón mejor pagado.&lt;/p&gt;
&lt;h2 id=&quot;qué-significa-esto-para-comprar-engineering-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-significa-esto-para-comprar-engineering-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué significa esto para comprar engineering WordPress&lt;/h2&gt;
&lt;p&gt;Si está contratando una agencia WordPress en 2026, la comparación implícita ya no es “polaco barato vs británico caro”. La comparación implícita es “sénior polaco con jurisdicción UE vs mid doméstico con normas remotas irregulares”. En esa comparación, el sénior polaco gana en la mayoría de los scorecards de procurement.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/en/careers/&quot;&gt;Carreras en WPPoland&lt;/a&gt; lo refleja. Cada rol es sénior, jurisdicción UE, totalmente remoto, en B2B. Formamos parte del mismo mercado que Capgemini Polska y HSBC Technology Poland, y reclutamos del mismo pool. El resultado de agencia es la misma densidad de ingeniería senior que esas firmas obtienen para sus equipos internos.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-esto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-esto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja esto&lt;/h2&gt;
&lt;p&gt;Para el marco del lado de la agencia, ver el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pilar de servicio Headless WordPress&lt;/a&gt;. Para la opinión de ingeniería sobre elecciones de stack, ver el &lt;a href=&quot;/en/tech-radar/&quot;&gt;posición en rings del Tech Radar&lt;/a&gt; y la &lt;a href=&quot;/en/headless-wordpress-nextjs-vs-astro-2026/&quot;&gt;matriz de decisión Next.js vs Astro&lt;/a&gt;. Para un posicionamiento agentic-web escrito a partir del mismo conjunto de datos, ver el &lt;a href=&quot;/en/ai-llm-visibility-geo-playbook-2026/&quot;&gt;playbook de visibilidad de IA y LLM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para migraciones en España, vea &lt;a href=&quot;/es/migrar-magento-adobe-commerce-a-woocommerce-headless-2026/&quot;&gt;migrar Magento a WooCommerce headless&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>market</category><category>careers</category><category domain="tag">poland</category><category domain="tag">nearshore</category><category domain="tag">senior-engineering</category><category domain="tag">no-fluff-jobs</category><category domain="tag">just-join-it</category><category domain="tag">eu-jurisdiction</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Ataques a la cadena de suministro en plugins de WordPress: guía de auditoría y hardening tras el incidente del backdoor de Flippa</title><link>https://wppoland.com/es/wordpress-plugin-supply-chain-attack-audit-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-plugin-supply-chain-attack-audit-guide-2026/</guid><description>Treinta y un plugins cerrados después de que un comprador en Flippa instalara un backdoor en el primer commit SVN. Cómo auditar la propiedad de los plugins, detectar compromisos y endurecer los sitios frente a ataques de supply chain.</description><pubDate>Sat, 18 Apr 2026 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a id=&quot;introduction&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El 16 de abril de 2026, el WordPress Plugins Team cerró de forma permanente 31 plugins después de que un comprador que los había adquirido a través de Flippa instalara un backdoor en todo el portafolio. El primer commit SVN del atacante tras tomar posesión fue precisamente el código malicioso. Después esperó aproximadamente ocho meses antes de activarlo. El ataque fue descubierto por Austin Ginder de Anchor Hosting tras un aviso de seguridad detectado por uno de sus clientes en el panel de WordPress. El Plugins Team, liderado por el co-rep Francisco Torres, cerró las 31 fichas y forzó una actualización automática en cuestión de horas.&lt;/p&gt;
&lt;p&gt;Este fue el segundo ataque de supply chain al repositorio de WordPress.org en dos semanas. Ambos explotaron la misma brecha estructural: &lt;strong&gt;no existe revisión obligatoria de las transferencias de propiedad de plugins&lt;/strong&gt;. Para agencias y propietarios de sitios, esto no es la historia de un único portafolio comprometido. Es la historia de un patrón de ataque repetible que seguirá funcionando hasta que el repositorio cambie su política o el ecosistema cambie sus hábitos.&lt;/p&gt;
&lt;p&gt;Esta guía cubre tres preguntas que todo equipo técnico debería poder responder esta semana. Qué plugins de tu stack están en riesgo. Si alguno de tus sitios ya está comprometido. Qué puedes hacer hoy para reducir la superficie de ataque antes del próximo incidente.&lt;/p&gt;
&lt;h2 id=&quot;qué-ocurrió-en-el-incidente-del-backdoor-de-flippa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-ocurrió-en-el-incidente-del-backdoor-de-flippa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué ocurrió en el incidente del backdoor de Flippa&lt;/h2&gt;
&lt;p&gt;El atacante usó un patrón aburrido por diseño. Compró plugins pequeños y de bajo mantenimiento en un marketplace público, heredó los derechos de committer asociados a la ficha de cada plugin en wordpress.org e instaló un backdoor antes de que ningún usuario tuviera oportunidad de revisar el cambio de propiedad. La distancia temporal entre la instalación y la activación importa: &lt;strong&gt;ocho meses son suficientes para que el backdoor se propague en cada ciclo de actualización automática&lt;/strong&gt;, suficientes para que la mayoría de las agencias roten su personal, y suficientes para que los registros de la adquisición en Flippa desaparezcan de la primera página de los resultados de búsqueda.&lt;/p&gt;
&lt;p&gt;La respuesta del Plugins Team fue rápida. En cuestión de horas tras la divulgación de Ginder, los 31 plugins fueron cerrados y se desplegó una actualización automática forzada. Torres describió la respuesta como “extraordinaria”, y lo fue, según los estándares de coordinación voluntaria. Pero la respuesta también es el problema. Es reactiva. Depende de que un único investigador detecte una única anomalía en un único sitio. El repositorio no tiene un mecanismo para detectar el patrón cuando se planta, solo cuando se dispara.&lt;/p&gt;
&lt;h3 id=&quot;el-incidente-en-números&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-incidente-en-números&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El incidente en números&lt;/h3&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Valor&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Plugins cerrados&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo entre la instalación del backdoor y su activación&lt;/td&gt;&lt;td&gt;~8 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ubicación del backdoor en el historial SVN&lt;/td&gt;&lt;td&gt;Primer commit tras la transferencia de propiedad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo desde la divulgación hasta la actualización automática forzada&lt;/td&gt;&lt;td&gt;Pocas horas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Incidentes de supply chain en WordPress.org en abril de 2026&lt;/td&gt;&lt;td&gt;2 en dos semanas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mecanismo del repositorio para revisar transferencias de propiedad&lt;/td&gt;&lt;td&gt;Ninguno&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;por-qué-funciona-este-patrón-de-ataque&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-funciona-este-patrón-de-ataque&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué funciona este patrón de ataque&lt;/h2&gt;
&lt;p&gt;Tres condiciones estructurales convierten las adquisiciones al estilo Flippa en un vector fiable, y las tres tienen que ver con incentivos más que con código.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La propiedad de un plugin se trata como una transacción privada.&lt;/strong&gt; Cuando vendes un plugin en Flippa, el marketplace no tiene obligación de verificar la intención del comprador y WordPress.org tampoco tiene obligación de revisar la transferencia. El vendedor se va con dinero, el comprador se va con derechos de committer y la base de usuarios se queda con un nuevo mantenedor al que nunca dieron su consentimiento. Desde el punto de vista del repositorio, no ha pasado nada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los plugins pequeños son baratos de adquirir en bloque.&lt;/strong&gt; Un plugin con unos pocos miles de instalaciones activas se vende a un precio que un atacante motivado puede asumir sin esfuerzo. Adquiere 30 o 40 y la base de instalaciones combinada rivaliza con un único plugin de gama media, sin el escrutinio que conllevaría comprar uno popular. El atacante en el caso Flippa hizo exactamente esto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Las actualizaciones automáticas transportan el payload sin coste.&lt;/strong&gt; Una vez que el atacante posee la ficha, cualquier commit SVN que envíe se propagará a todos los sitios que tengan habilitadas las actualizaciones automáticas de plugins, lo cual, por motivos de seguridad, hacen la mayoría de las instalaciones modernas. El mismo canal que protege los sitios frente a vulnerabilidades se convierte en el canal que entrega el backdoor.&lt;/p&gt;
&lt;p&gt;El resultado es un ataque con alta tasa de éxito, un tiempo de permanencia largo y un coste inicial diminuto. Por eso este patrón se repetirá.&lt;/p&gt;
&lt;h2 id=&quot;el-patrón-de-supply-chain-en-2025-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-patrón-de-supply-chain-en-2025-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El patrón de supply chain en 2025-2026&lt;/h2&gt;
&lt;p&gt;El incidente de Flippa es el último dato de una tendencia que ha estado creciendo a lo largo de 2025. Koray Tugberk Gubur señalaba en un análisis reciente que los compromisos por transferencia de propiedad de plugins ya rivalizan con la distribución de plugins nulled como vector principal para introducir código malicioso en sitios WordPress. La razón es la misma en ambos casos: el atacante apunta al canal de distribución, no al código en sí.&lt;/p&gt;
&lt;p&gt;Lo que cambió en 2026 es la escala. Mientras que los incidentes anteriores afectaban a uno o dos plugins por vez, el atacante de Flippa armó un portafolio entero. Este giro es coherente con un patrón más amplio en los ecosistemas open source: npm, PyPI y los registros de crates.io han enfrentado campañas coordinadas similares en la misma ventana. WordPress no es singularmente vulnerable, pero su base de instalaciones - &lt;strong&gt;más del 40% de todos los sitios web del mundo&lt;/strong&gt; - convierte cada plugin comprometido en un activo desproporcionadamente valioso.&lt;/p&gt;
&lt;p&gt;Para los responsables de agencias, la lectura práctica es simple. Trata la selección de plugins como una decisión de cadena de suministro, no como una decisión de funcionalidad. Los plugins ya no son complementos inertes. Son una parte viva de la superficie de ataque del sitio, con un mantenedor, una cadencia de releases y un historial de propiedad que necesitas seguir.&lt;/p&gt;
&lt;h2 id=&quot;cómo-auditar-tus-sitios-wordpress-frente-al-riesgo-de-transferencia-de-propiedad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-auditar-tus-sitios-wordpress-frente-al-riesgo-de-transferencia-de-propiedad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo auditar tus sitios WordPress frente al riesgo de transferencia de propiedad&lt;/h2&gt;
&lt;p&gt;La auditoría siguiente es la línea base que un equipo técnico debería ejecutar esta semana sobre cada sitio del portafolio. Tras la primera pasada se puede automatizar. El objetivo es identificar plugins cuyo perfil de riesgo ha cambiado sin que nadie del equipo lo haya notado.&lt;/p&gt;
&lt;h3 id=&quot;paso-1-inventariar-todos-los-plugins-en-todos-los-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-inventariar-todos-los-plugins-en-todos-los-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1. Inventariar todos los plugins en todos los sitios&lt;/h3&gt;
&lt;p&gt;Empieza por una lista completa. WP-CLI lo facilita en un parque multisitio:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=name,status,version,update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugins.csv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta esto en cada sitio, consolida la salida y agrupa por slug de plugin. Quieres saber no solo qué hay instalado, sino a cuántos sitios alcanza cada plugin. Un plugin que vive en un único sitio es un riesgo contenido. Un plugin que vive en cien sitios es un evento de portafolio.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-obtener-el-historial-de-propiedad-desde-la-api-de-wordpressorg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-obtener-el-historial-de-propiedad-desde-la-api-de-wordpressorg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2. Obtener el historial de propiedad desde la API de WordPress.org&lt;/h3&gt;
&lt;p&gt;Para cada plugin de tu inventario, consulta la lista de committers desde la API de wordpress.org:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;https://api.wordpress.org/plugins/info/1.0/&amp;#x3C;slug&gt;.json&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;.added, .last_updated, .contributors&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Marca cualquier plugin cuya lista de committers haya cambiado en los últimos 18 meses. El campo &lt;code&gt;added&lt;/code&gt; indica la fecha del primer registro del plugin. El campo &lt;code&gt;contributors&lt;/code&gt; indica el conjunto actual de committers. Cruza esto con versiones archivadas de la misma página: el Wayback Machine tiene snapshots de la mayoría de páginas de plugins de hace años, para comprobar si los committers actuales coinciden con los anteriores a la transferencia.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-marcar-cambios-de-propiedad-sin-rastro-público&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-marcar-cambios-de-propiedad-sin-rastro-público&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3. Marcar cambios de propiedad sin rastro público&lt;/h3&gt;
&lt;p&gt;Un cambio de propiedad no es sospechoso por sí mismo. Las adquisiciones legítimas existen. Lo que importa es si la transferencia tiene rastro público. Un plugin comprado por Automattic, Elementor u otro proveedor conocido tendrá una nota de prensa, un post de blog, una entrada de changelog o las tres cosas. Un plugin transferido en silencio a un committer sin huella pública es el patrón que estás buscando.&lt;/p&gt;
&lt;h3 id=&quot;paso-4-leer-el-log-de-commits-svn-alrededor-de-la-fecha-de-transferencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-leer-el-log-de-commits-svn-alrededor-de-la-fecha-de-transferencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4. Leer el log de commits SVN alrededor de la fecha de transferencia&lt;/h3&gt;
&lt;p&gt;Para cualquier plugin que pase los pasos 1 a 3, inspecciona el historial SVN directamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;svn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --verbose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://plugins.svn.wordpress.org/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;slu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/trunk&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; svn-log.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Busca el commit inmediatamente posterior al cambio de propiedad. Si ese commit modifica archivos que nada tienen que ver con el conjunto de funcionalidades declarado del plugin - lógica de autenticación, URLs de actualización, cargadores remotos de código, &lt;code&gt;eval&lt;/code&gt;, &lt;code&gt;base64_decode&lt;/code&gt;, configuración del cliente HTTP - trátalo como un backdoor probable hasta demostrar lo contrario.&lt;/p&gt;
&lt;h3 id=&quot;paso-5-priorizar-por-número-de-instalaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-priorizar-por-número-de-instalaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5. Priorizar por número de instalaciones&lt;/h3&gt;
&lt;p&gt;Ordena tus plugins marcados por la cantidad de sitios que tocan en tu portafolio. Remedia primero los plugins de mayor impacto. Un único plugin en 50 sitios de cliente es un problema mayor que 10 plugins en 10 sitios sumados.&lt;/p&gt;
&lt;h3 id=&quot;script-de-auditoría-de-portafolio-en-una-pasada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#script-de-auditoría-de-portafolio-en-una-pasada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Script de auditoría de portafolio en una pasada&lt;/h3&gt;
&lt;p&gt;Combina los cinco primeros pasos en un único script reproducible que se ejecute sobre un parque multisitio y devuelva un CSV con los plugins marcados para revisión. Ejecútalo desde cualquier máquina que tenga &lt;code&gt;wp&lt;/code&gt;, &lt;code&gt;jq&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt; y &lt;code&gt;svn&lt;/code&gt; en el PATH, con una lista de sitios en &lt;code&gt;sites.txt&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/usr/bin/env bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -euo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; pipefail&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OUT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;audit-$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y-%m-%d).csv&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;site,slug,version,committers,last_updated,svn_last_commit&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$OUT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=name,version&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; 2&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/dev/null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; IFS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; version&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    info&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;https://api.wordpress.org/plugins/info/1.0/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}.json&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;{}&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    contribs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$info&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;[.contributors | keys[]] | join(&quot;|&quot;)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; 2&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/dev/null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    last&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$info&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;.last_updated // &quot;unknown&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    svnlast&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;svn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;https://plugins.svn.wordpress.org/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}/trunk&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; 2&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/dev/null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -E&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;^r[0-9]+&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; awk&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;{print $1,$3,$5}&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;unavailable&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$version&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$contribs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$last&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$svnlast&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$OUT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; sites.txt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Audit written to &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$OUT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El CSV resultante se pivota fácilmente en una hoja de cálculo. Ordena por &lt;code&gt;committers&lt;/code&gt; para agrupar plugins cuyo conjunto de mantenedores coincida en todo tu portafolio, y marca cualquier fila donde el committer de &lt;code&gt;svn_last_commit&lt;/code&gt; difiera del committer presente en el mismo plugin seis meses antes. Guarda la salida del mes anterior y haz un diff entre ambas para detectar los cambios de propiedad en el momento en que ocurren, y no en la siguiente pasada de auditoría.&lt;/p&gt;
&lt;p&gt;Para los equipos que ya tienen su propio stack de monitorización, los mismos datos alimentan directamente un exporter de Prometheus o una alerta programada por cron. El valor está en la cadencia. Un ataque por transferencia de propiedad cuenta con aproximadamente ocho meses de permanencia antes de activarse, así que un diff semanal detecta el cambio con mucho margen dentro de esa ventana, mientras que una revisión mensual le da al atacante demasiada pista. La economía del script es simple: &lt;strong&gt;una pasada de auditoría, unos minutos de cómputo por cada cien sitios, y el atacante pierde el presupuesto de sigilo que el incidente de Flippa demostró que necesita&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;cómo-detectar-un-backdoor-ya-instalado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-detectar-un-backdoor-ya-instalado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo detectar un backdoor ya instalado&lt;/h2&gt;
&lt;p&gt;La auditoría te da la lista de plugins que parecen arriesgados. La detección te da la lista de plugins que ya están comprometidos. Ambas importan, porque la actualización automática forzada del Plugins Team solo elimina el código actual del backdoor, no elimina lo que el backdoor ya hizo durante su tiempo de permanencia.&lt;/p&gt;
&lt;h3 id=&quot;indicadores-a-nivel-de-archivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-a-nivel-de-archivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores a nivel de archivo&lt;/h3&gt;
&lt;p&gt;Escanea los directorios de plugins de cada sitio en busca de las firmas estándar de backdoor. Son toscas, pero atrapan la mayoría de ataques automatizados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rEn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;eval\(|base64_decode\(|gzinflate\(|str_rot13\(|assert\(|create_function&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/plugins/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rEn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;file_get_contents\(.*http|curl_exec|fsockopen&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/plugins/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Un plugin limpio tendrá cero o muy pocas coincidencias. Un plugin comprometido suele presentar clústeres densos de estas llamadas en archivos que no tienen razón para acceder a la red. Compara las coincidencias con el código fuente público de la misma versión del plugin desde el mirror SVN: cualquier archivo que difiera del tarball publicado es un archivo a revisar.&lt;/p&gt;
&lt;h3 id=&quot;comprobaciones-de-anomalías-en-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprobaciones-de-anomalías-en-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprobaciones de anomalías en base de datos&lt;/h3&gt;
&lt;p&gt;Los backdoors a menudo escriben su persistencia en la base de datos para sobrevivir a una actualización del plugin. Ejecuta las siguientes comprobaciones en cada sitio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usuarios administradores creados durante la ventana de permanencia.&lt;/strong&gt; Consulta &lt;code&gt;wp_users&lt;/code&gt; y &lt;code&gt;wp_usermeta&lt;/code&gt; en busca de cualquier administrador creado durante el periodo sospechoso de permanencia. Cruza con tus registros de incorporación de personal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eventos programados desconocidos.&lt;/strong&gt; Ejecuta &lt;code&gt;wp cron event list&lt;/code&gt; y busca cualquier hook que no se pueda rastrear hasta un plugin o tema conocido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opciones modificadas.&lt;/strong&gt; Revisa &lt;code&gt;wp_options&lt;/code&gt; en busca de entradas con valores codificados en base64 o serializados sin un propietario reconocible. Áreas de riesgo particular incluyen &lt;code&gt;active_plugins&lt;/code&gt;, &lt;code&gt;siteurl&lt;/code&gt;, &lt;code&gt;home&lt;/code&gt; y cualquiera con nombre del tipo &lt;code&gt;*_cache&lt;/code&gt;, &lt;code&gt;*_data&lt;/code&gt;, &lt;code&gt;*_config&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;indicadores-de-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-de-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores de red&lt;/h3&gt;
&lt;p&gt;El backdoor necesita alcanzar su canal de comando y control en algún momento. Si tu stack de hosting expone logs de tráfico saliente, extrae las peticiones a dominios desconocidos desde los workers PHP del plugin durante la ventana de permanencia. El filtrado de salida es raro en hosting WordPress compartido pero habitual en plataformas gestionadas: &lt;strong&gt;comprueba si tu hosting puede entregarte estos datos antes de asumir que no tienes visibilidad&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;qué-arregla-y-qué-no-arregla-una-actualización-automática-forzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-arregla-y-qué-no-arregla-una-actualización-automática-forzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué arregla y qué no arregla una actualización automática forzada&lt;/h3&gt;
&lt;p&gt;El despliegue del Plugins Team es una forma rápida de eliminar el código malicioso del propio plugin. No hace lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eliminar los usuarios administradores que el atacante haya creado.&lt;/li&gt;
&lt;li&gt;Eliminar las tareas programadas que el backdoor haya registrado.&lt;/li&gt;
&lt;li&gt;Restaurar archivos que el backdoor haya modificado fuera del directorio del plugin.&lt;/li&gt;
&lt;li&gt;Limpiar opciones de base de datos que el backdoor haya escrito.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para cualquier sitio donde la detección devuelva una señal positiva, se requiere una respuesta completa de compromiso. Eso incluye rotar credenciales, reconstruir los usuarios de wp-admin desde una lista de confianza, regenerar las salt keys, revisar todas las tareas programadas y comparar archivos del core con un checksum limpio.&lt;/p&gt;
&lt;h2 id=&quot;hardening-frente-al-próximo-ataque-de-supply-chain&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hardening-frente-al-próximo-ataque-de-supply-chain&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hardening frente al próximo ataque de supply chain&lt;/h2&gt;
&lt;p&gt;La detección y la auditoría son defensivas. El hardening es donde una agencia realmente cambia su perfil de riesgo. Los siguientes controles son aditivos: adopta tantos como permita tu flujo de trabajo y aplícalos primero a las nuevas incorporaciones de clientes para que la sobrecarga se reparta en el tiempo.&lt;/p&gt;
&lt;h3 id=&quot;bloquear-las-versiones-de-plugins-en-el-hosting-gestionado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloquear-las-versiones-de-plugins-en-el-hosting-gestionado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloquear las versiones de plugins en el hosting gestionado&lt;/h3&gt;
&lt;p&gt;Cualquier sitio que actualice plugins de forma automática hereda el calendario del atacante. Para sitios de alto valor, toma control manual de la cadencia de actualizaciones. O bien deshabilita las actualizaciones automáticas por completo y haz una revisión mensual, o bien encamina las actualizaciones a través de un entorno de staging que ejecute pruebas de regresión antes de promover. Herramientas como ManageWP, MainWP o equivalentes self-hosted gestionan esto a escala de portafolio.&lt;/p&gt;
&lt;h3 id=&quot;suscribirse-a-señales-de-cambio-de-propiedad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#suscribirse-a-señales-de-cambio-de-propiedad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Suscribirse a señales de cambio de propiedad&lt;/h3&gt;
&lt;p&gt;No existe un feed oficial para los cambios de propiedad de plugins de WordPress, pero puedes aproximar uno. Monitoriza el log de commits SVN para cada plugin de tu stack y emite una alerta ante el primer commit de un nuevo committer. Un cron job sencillo que diferencie la lista de committers a diario es suficiente. Esto te da la señal de aviso que el repositorio debería estar proporcionando, antes de que el backdoor haya tenido tiempo de propagarse.&lt;/p&gt;
&lt;h3 id=&quot;implementar-monitorización-de-integridad-en-cada-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementar-monitorización-de-integridad-en-cada-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementar monitorización de integridad en cada sitio&lt;/h3&gt;
&lt;p&gt;La monitorización de integridad de archivos atrapa la segunda fase de la mayoría de los backdoors. Usa una herramienta que calcule el hash de cada archivo en &lt;code&gt;wp-content/&lt;/code&gt; de forma programada y emita una alerta ante cualquier cambio fuera de una ventana de actualización declarada. Wordfence, MalCare y wpseku incluyen esta funcionalidad. A nivel de servidor, el mismo comportamiento está disponible mediante AIDE, Tripwire u OSSEC.&lt;/p&gt;
&lt;h3 id=&quot;reducir-la-huella-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reducir-la-huella-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reducir la huella de plugins&lt;/h3&gt;
&lt;p&gt;Cada plugin que no instalas no puede ser comprometido. Audita tu portafolio en busca de plugins que aporten funcionalidades que podrías reemplazar con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unas pocas líneas de funcionalidad en el &lt;code&gt;functions.php&lt;/code&gt; del tema.&lt;/li&gt;
&lt;li&gt;Un comando de WP-CLI ejecutado de forma programada.&lt;/li&gt;
&lt;li&gt;Una configuración a nivel de servidor, como una regla &lt;code&gt;.htaccess&lt;/code&gt; o una directiva de Nginx.&lt;/li&gt;
&lt;li&gt;Una funcionalidad ya presente en el core que nadie ha activado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El objetivo no es cero plugins. El objetivo es que cada plugin instalado se gane su sitio. &lt;strong&gt;Menos plugins equivale a menor superficie de ataque&lt;/strong&gt; es una de las reglas más antiguas en seguridad de WordPress y sigue vigente.&lt;/p&gt;
&lt;h3 id=&quot;favorecer-plugins-con-buenas-señales-de-mantenimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#favorecer-plugins-con-buenas-señales-de-mantenimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Favorecer plugins con buenas señales de mantenimiento&lt;/h3&gt;
&lt;p&gt;Cuando instales algo, prefiere plugins con las siguientes señales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un mantenedor identificable con historial público fuera de la página del plugin.&lt;/li&gt;
&lt;li&gt;Una cadencia de commits de al menos un release por trimestre.&lt;/li&gt;
&lt;li&gt;Un issue tracker activo donde se respondan los reportes.&lt;/li&gt;
&lt;li&gt;Probado al menos contra el major release anterior de WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cualquier plugin que falle más de una de estas comprobaciones es candidato a ser adquirido por el próximo atacante. Trátalo como un riesgo futuro aunque hoy parezca limpio.&lt;/p&gt;
&lt;h3 id=&quot;escribir-una-política-de-selección-de-plugins-para-tu-agencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escribir-una-política-de-selección-de-plugins-para-tu-agencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escribir una política de selección de plugins para tu agencia&lt;/h3&gt;
&lt;p&gt;Convierte las reglas anteriores en parte del checklist de onboarding. Una política de una página que liste los criterios de plugins aprobados vale más que cualquier plugin de seguridad, porque previene el problema en lugar de detectarlo. Incluye una cláusula de revisión: &lt;strong&gt;cada plugin de la lista aprobada se revisa cada 12 meses&lt;/strong&gt; frente a las señales actuales de mantenedor.&lt;/p&gt;
&lt;h2 id=&quot;qué-puede-y-qué-no-puede-arreglar-wordpressorg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-puede-y-qué-no-puede-arreglar-wordpressorg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué puede y qué no puede arreglar WordPress.org&lt;/h2&gt;
&lt;p&gt;El Plugins Team tiene incentivos para cerrar esta brecha. También tiene la restricción de que cada cambio que introduzca debe escalar a un proceso de revisión voluntario sobre aproximadamente 60.000 plugins activos. Una retención obligatoria de dos semanas en los commits de nuevos committers, un feed público de cambios de propiedad o una revisión automática del diff del primer commit tras la transferencia son medidas plausibles. Ninguna se ha desplegado todavía.&lt;/p&gt;
&lt;p&gt;Hasta que la política cambie, la responsabilidad recae en cada agencia y en cada propietario de sitio. La respuesta al incidente del compromiso de Flippa fue, como dijo Torres, extraordinaria. No puede decirse lo mismo de la vulnerabilidad estructural que hizo posible el ataque. Trata el incidente de esta semana como un pronóstico. El próximo ya se está preparando.&lt;/p&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Los ataques de supply chain en plugins son la nueva línea base para la seguridad de WordPress en 2026. El incidente de Flippa cerró 31 plugins, pero el patrón de ataque que dejó al descubierto funciona contra cualquier plugin del repositorio con una base de usuarios pequeña, commits poco frecuentes y sin un mantenedor identificable. Audita tu portafolio esta semana. Detecta compromisos activos en cada plugin marcado. Endurece tu stack reduciendo la huella, bloqueando versiones y escribiendo una política que sobreviva a la rotación de personal. Ninguno de estos pasos es nuevo. Todos se vuelven obligatorios en el momento en que el atacante deja de ser hipotético y empieza a poseer 31 plugins de una sola vez.&lt;/p&gt;</content:encoded><category>security</category><category>guides</category><category domain="tag">security</category><category domain="tag">supply-chain</category><category domain="tag">plugins</category><category domain="tag">wordpress</category><category domain="tag">audit</category><enclosure url="https://wppoland.com/images/og/flippa.jpg" type="image/jpeg"/></item><item><title>Planes de precios de WordPress.com en 2026: qué obtienes realmente en cada nivel</title><link>https://wppoland.com/es/wordpress-com-pricing-plans-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-com-pricing-plans-2026/</guid><description>WordPress.com ofrece cinco niveles de planes en 2026, desde gratuito hasta empresarial. Esta guía detalla qué incluye cada nivel, dónde están los costes ocultos y cuándo WordPress autoalojado es la mejor inversión.</description><pubDate>Mon, 13 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;WordPress.com y WordPress.org son dos productos diferentes construidos sobre el mismo software. Esta distinción confunde a más personas que cualquier otra pregunta en el ecosistema WordPress. Antes de hablar de precios, esto debe quedar claro.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress.org&lt;/strong&gt; es el sistema de gestión de contenidos gratuito y de código abierto. Lo descargas, lo instalas en tu propio alojamiento y tienes control total. Pagas por el alojamiento y el registro del dominio. El software en sí no cuesta nada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress.com&lt;/strong&gt; es una plataforma alojada operada por Automattic (la empresa cofundada por el creador de WordPress, Matt Mullenweg). Ejecuta el software WordPress por ti, se encarga del alojamiento, las actualizaciones y la seguridad, y cobra una suscripción mensual o anual según las funcionalidades que necesites.&lt;/p&gt;
&lt;p&gt;Esta guía cubre la estructura de precios de WordPress.com en 2026, qué incluye realmente cada nivel, dónde están las limitaciones ocultas y cuándo WordPress autoalojado es la inversión más inteligente.&lt;/p&gt;
&lt;h2 id=&quot;planes-de-precios-de-wordpresscom-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#planes-de-precios-de-wordpresscom-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Planes de precios de WordPress.com en 2026&lt;/h2&gt;
&lt;p&gt;WordPress.com ofrece cinco niveles de planes. Cada uno desbloquea progresivamente más funcionalidades, almacenamiento y control.&lt;/p&gt;
&lt;h3 id=&quot;plan-gratuito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-gratuito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan gratuito&lt;/h3&gt;
&lt;p&gt;El nivel gratuito es genuinamente gratuito — no se requiere tarjeta de crédito. Incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un subdominio &lt;code&gt;tu-sitio.wordpress.com&lt;/code&gt; (sin dominio propio)&lt;/li&gt;
&lt;li&gt;Almacenamiento limitado&lt;/li&gt;
&lt;li&gt;Marca WordPress.com en tu sitio&lt;/li&gt;
&lt;li&gt;Acceso básico al editor de bloques&lt;/li&gt;
&lt;li&gt;Solo soporte comunitario&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Para quién es adecuado:&lt;/strong&gt; Blogs personales, proyectos estudiantiles, sitios de afición. Cualquiera que quiera probar el editor de WordPress antes de comprometerse con un plan de pago.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt; Sin dominio propio, anuncios de WordPress.com mostrados en tu sitio, sin acceso a temas premium, sin instalación de plugins, personalización limitada, sin opciones de monetización.&lt;/p&gt;
&lt;h3 id=&quot;plan-personal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-personal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan Personal&lt;/h3&gt;
&lt;p&gt;El nivel de pago básico elimina las limitaciones más evidentes del nivel gratuito:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dominio propio (incluido el primer año, los precios de renovación varían)&lt;/li&gt;
&lt;li&gt;Marca WordPress.com eliminada&lt;/li&gt;
&lt;li&gt;Almacenamiento aumentado&lt;/li&gt;
&lt;li&gt;Soporte por correo electrónico&lt;/li&gt;
&lt;li&gt;Personalización básica de diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Para quién es adecuado:&lt;/strong&gt; Blogs personales y portfolios sencillos que necesitan una URL profesional.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt; Sigue sin permitir la instalación de plugins o temas personalizados. Sin herramientas de SEO avanzadas. Flexibilidad de diseño limitada. Sin capacidad de comercio electrónico.&lt;/p&gt;
&lt;h3 id=&quot;plan-premium&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-premium&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan Premium&lt;/h3&gt;
&lt;p&gt;El plan de nivel intermedio añade funcionalidades de diseño y monetización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todo del plan Personal&lt;/li&gt;
&lt;li&gt;Acceso a temas premium&lt;/li&gt;
&lt;li&gt;Herramientas de diseño avanzadas y CSS personalizado&lt;/li&gt;
&lt;li&gt;Funcionalidades de monetización (WordAds, contenido de pago)&lt;/li&gt;
&lt;li&gt;Herramientas de integración con redes sociales&lt;/li&gt;
&lt;li&gt;Subida y alojamiento de vídeo&lt;/li&gt;
&lt;li&gt;Integración con Google Analytics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Para quién es adecuado:&lt;/strong&gt; Bloggers, freelancers y pequeños creadores que quieren flexibilidad de diseño y monetización básica sin gestionar su propio alojamiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt; Sigue sin permitir la instalación de plugins personalizados. Sin subida de temas de terceros. Sin WooCommerce. Control de SEO limitado en comparación con WordPress autoalojado con un plugin de SEO dedicado.&lt;/p&gt;
&lt;h3 id=&quot;plan-business&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-business&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan Business&lt;/h3&gt;
&lt;p&gt;Este es el nivel en el que WordPress.com se vuelve funcionalmente comparable a WordPress autoalojado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todo del plan Premium&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instalación de plugins personalizados&lt;/strong&gt; (el diferenciador clave)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subida de temas personalizados&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Acceso SFTP y a la base de datos&lt;/li&gt;
&lt;li&gt;Copias de seguridad automáticas del sitio con restauración en un clic&lt;/li&gt;
&lt;li&gt;Almacenamiento aumentado&lt;/li&gt;
&lt;li&gt;Soporte prioritario&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Para quién es adecuado:&lt;/strong&gt; Pequeñas empresas, sitios web profesionales y agencias que necesitan plugins específicos (formularios de contacto, herramientas de SEO, plugins de seguridad), pero quieren que Automattic gestione el alojamiento y la infraestructura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt; Aunque puedes instalar plugins, el entorno de alojamiento tiene restricciones. Algunos plugins que requieren acceso a nivel de servidor (ciertos plugins de caché, modificaciones del lado del servidor) pueden no funcionar. El rendimiento se basa en infraestructura compartida, no dedicada.&lt;/p&gt;
&lt;h3 id=&quot;plan-commerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-commerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan Commerce&lt;/h3&gt;
&lt;p&gt;El nivel de comercio electrónico construido para tiendas online:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todo del plan Business&lt;/li&gt;
&lt;li&gt;WooCommerce preinstalado&lt;/li&gt;
&lt;li&gt;Integraciones de procesamiento de pagos&lt;/li&gt;
&lt;li&gt;Herramientas de cálculo de envío e impuestos&lt;/li&gt;
&lt;li&gt;Temas premium para tiendas&lt;/li&gt;
&lt;li&gt;Herramientas de gestión de productos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Para quién es adecuado:&lt;/strong&gt; Tiendas online de pequeño a mediano tamaño que quieren WooCommerce sin gestionar su propia infraestructura de servidores.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt; Para tiendas de alto volumen con flujos de pago personalizados, configuraciones de productos complejas o integraciones intensivas con API, WooCommerce autoalojado en alojamiento dedicado suele ofrecer mejor rendimiento y costes más bajos a escala.&lt;/p&gt;
&lt;h2 id=&quot;cuánto-cuesta-wordpress-en-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuánto-cuesta-wordpress-en-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuánto cuesta WordPress en total&lt;/h2&gt;
&lt;p&gt;La suscripción al plan no es el único coste. Así es como se ve el coste total real:&lt;/p&gt;























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Componente de coste&lt;/th&gt;&lt;th&gt;WordPress.com (Business)&lt;/th&gt;&lt;th&gt;WordPress autoalojado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Plataforma / alojamiento&lt;/td&gt;&lt;td&gt;Suscripción al plan (anual)&lt;/td&gt;&lt;td&gt;Alojamiento gestionado de calidad (anual)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Dominio&lt;/td&gt;&lt;td&gt;Incluido el 1.er año, luego renovación&lt;/td&gt;&lt;td&gt;Registrador de dominios (anual)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Certificado SSL&lt;/td&gt;&lt;td&gt;Incluido&lt;/td&gt;&lt;td&gt;Incluido en la mayoría de alojamientos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Plugins premium&lt;/td&gt;&lt;td&gt;Igual que autoalojado&lt;/td&gt;&lt;td&gt;Por plugin (muchos son gratuitos)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Temas premium&lt;/td&gt;&lt;td&gt;Incluidos en el plan&lt;/td&gt;&lt;td&gt;Compra única o gratuito&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Alojamiento de correo electrónico&lt;/td&gt;&lt;td&gt;Compra separada&lt;/td&gt;&lt;td&gt;Compra separada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo de desarrollador&lt;/td&gt;&lt;td&gt;Mínimo (plataforma gestionada)&lt;/td&gt;&lt;td&gt;Configuración y mantenimiento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Copias de seguridad&lt;/td&gt;&lt;td&gt;Incluidas&lt;/td&gt;&lt;td&gt;Plugin o función del alojamiento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Seguridad&lt;/td&gt;&lt;td&gt;Incluida&lt;/td&gt;&lt;td&gt;Plugin + endurecimiento del alojamiento&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para sitios sencillos (blog, portfolio, folleto), los planes de WordPress.com suelen ser rentables porque agrupan alojamiento, seguridad y copias de seguridad en una única suscripción.&lt;/p&gt;
&lt;p&gt;Para sitios empresariales que necesitan plugins específicos, funcionalidad personalizada o control avanzado de SEO, WordPress autoalojado en alojamiento gestionado de calidad (Cloudways, Kinsta, WP Engine) ofrece frecuentemente mejor valor. El coste total de propiedad a lo largo de tres años tiende a favorecer el autoalojamiento para cualquier sitio que supere el nivel Premium.&lt;/p&gt;
&lt;h2 id=&quot;wordpresscom-vs-wordpress-autoalojado-cuál-cuesta-menos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpresscom-vs-wordpress-autoalojado-cuál-cuesta-menos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress.com vs WordPress autoalojado: cuál cuesta menos&lt;/h2&gt;
&lt;p&gt;El punto de inflexión depende de la complejidad:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress.com es más barato cuando:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Necesitas un sitio sencillo con menos de 10 páginas&lt;/li&gt;
&lt;li&gt;No necesitas plugins o temas personalizados&lt;/li&gt;
&lt;li&gt;No tienes desarrollador ni interés técnico&lt;/li&gt;
&lt;li&gt;Valoras el alojamiento sin mantenimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;WordPress autoalojado es más barato cuando:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Necesitas más de 2-3 plugins premium&lt;/li&gt;
&lt;li&gt;Quieres control total sobre caché, CDN y configuración del servidor&lt;/li&gt;
&lt;li&gt;Planeas escalar contenido (100+ páginas, multilingue, enfocado en SEO)&lt;/li&gt;
&lt;li&gt;Quieres ser propietario de tus datos e infraestructura sin dependencia de plataforma&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para una comparación cuantitativa de WordPress con otras plataformas, consulta nuestra &lt;a href=&quot;/es/wordpress-vs-wix-squarespace-2026-comprehensive-comparison/&quot;&gt;comparación WordPress vs Wix vs Squarespace&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;costes-ocultos-y-limitaciones-de-wordpresscom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-ocultos-y-limitaciones-de-wordpresscom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes ocultos y limitaciones de WordPress.com&lt;/h2&gt;
&lt;h3 id=&quot;precios-de-renovación-de-dominio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#precios-de-renovación-de-dominio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Precios de renovación de dominio&lt;/h3&gt;
&lt;p&gt;WordPress.com incluye un dominio gratuito el primer año en los planes de pago. El precio de renovación tras el primer año varía según el TLD y suele ser más alto que comprar el mismo dominio directamente en un registrador como Cloudflare Registrar o Namecheap.&lt;/p&gt;
&lt;h3 id=&quot;restricciones-de-plugins-en-niveles-inferiores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#restricciones-de-plugins-en-niveles-inferiores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Restricciones de plugins en niveles inferiores&lt;/h3&gt;
&lt;p&gt;Los planes Free, Personal y Premium no permiten la instalación de plugins personalizados. Esto significa sin Rank Math, sin WooCommerce (excepto en el nivel Commerce), sin formularios personalizados, sin analítica avanzada. Las herramientas integradas son funcionales, pero limitadas en comparación con el ecosistema de plugins.&lt;/p&gt;
&lt;h3 id=&quot;límites-de-almacenamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#límites-de-almacenamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Límites de almacenamiento&lt;/h3&gt;
&lt;p&gt;Cada nivel tiene un tope de almacenamiento. Para sitios con muchos contenidos multimedia (portfolios de fotografía, contenido de vídeo), los límites de almacenamiento pueden convertirse en una restricción. WordPress autoalojado no tiene límite de almacenamiento inherente — pagas por lo que tu servidor proporciona.&lt;/p&gt;
&lt;h3 id=&quot;complejidad-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#complejidad-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Complejidad de la migración&lt;/h3&gt;
&lt;p&gt;Mudarse de WordPress.com a autoalojado requiere exportación de contenido, migración de DNS y potencialmente rediseñar plantillas si usaste temas específicos de WordPress.com. La migración es factible, pero no trivial. Elegir autoalojamiento desde el principio evita este coste.&lt;/p&gt;
&lt;h3 id=&quot;limitaciones-de-seo-en-niveles-inferiores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones-de-seo-en-niveles-inferiores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones de SEO en niveles inferiores&lt;/h3&gt;
&lt;p&gt;Sin plugins personalizados, el control de SEO en WordPress.com se limita a meta tags básicas. Sin marcado de schema personalizado, sin configuración avanzada de mapa del sitio, sin datos estructurados más allá de lo que WordPress.com genera automáticamente. Para sitios que compiten en búsqueda orgánica, esta es una restricción significativa.&lt;/p&gt;
&lt;h2 id=&quot;plan-empresarial-de-wordpresscom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-empresarial-de-wordpresscom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan empresarial de WordPress.com&lt;/h2&gt;
&lt;p&gt;Para grandes organizaciones, WordPress.com ofrece alojamiento de nivel empresarial a través de &lt;strong&gt;WordPress VIP&lt;/strong&gt;. Este es un producto separado de los niveles estándar, diseñado para empresas de medios de comunicación con alto tráfico, sitios corporativos del Fortune 500 y agencias gubernamentales.&lt;/p&gt;
&lt;p&gt;WordPress VIP proporciona:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Infraestructura dedicada con SLAs de disponibilidad garantizados&lt;/li&gt;
&lt;li&gt;Autorización FedRAMP para despliegues gubernamentales&lt;/li&gt;
&lt;li&gt;Revisión de código personalizada y pipelines de despliegue&lt;/li&gt;
&lt;li&gt;Gestión de cuenta dedicada y soporte técnico&lt;/li&gt;
&lt;li&gt;Certificaciones avanzadas de seguridad y cumplimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los precios de WordPress VIP son personalizados y significativamente más altos que los planes estándar de WordPress.com. Compite con Sitecore y Adobe Experience Manager, no con proveedores de alojamiento estándar.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-elegir-wordpresscom-vs-autoalojado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-elegir-wordpresscom-vs-autoalojado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo elegir WordPress.com vs autoalojado&lt;/h2&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Escenario&lt;/th&gt;&lt;th&gt;Recomendación&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Blog personal, sin presupuesto&lt;/td&gt;&lt;td&gt;WordPress.com Free&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Portfolio profesional&lt;/td&gt;&lt;td&gt;WordPress.com Personal o Premium&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pequeña empresa (sitio de presentación)&lt;/td&gt;&lt;td&gt;Autoalojado o WordPress.com Business&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sitio con mucho contenido (50+ páginas, enfoque SEO)&lt;/td&gt;&lt;td&gt;WordPress autoalojado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Comercio electrónico (menos de 100 productos)&lt;/td&gt;&lt;td&gt;WordPress.com Commerce o WooCommerce autoalojado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Comercio electrónico (100+ productos, checkout personalizado)&lt;/td&gt;&lt;td&gt;WooCommerce autoalojado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Empresarial / medios con alto tráfico&lt;/td&gt;&lt;td&gt;WordPress VIP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agencia gestionando múltiples sitios de clientes&lt;/td&gt;&lt;td&gt;Autoalojado (menor TCO, control total)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;cómo-migrar-de-wordpresscom-a-autoalojado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-migrar-de-wordpresscom-a-autoalojado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo migrar de WordPress.com a autoalojado&lt;/h2&gt;
&lt;p&gt;Si empiezas en WordPress.com y superas la plataforma, la migración sigue este proceso:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Exporta contenido&lt;/strong&gt; desde WordPress.com (Herramientas &gt; Exportar &gt; Exportar todo)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configura WordPress autoalojado&lt;/strong&gt; en el proveedor de alojamiento elegido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importa contenido&lt;/strong&gt; usando el plugin WordPress Importer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migra los medios&lt;/strong&gt; (imágenes, archivos subidos) al nuevo servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualiza el DNS&lt;/strong&gt; para apuntar tu dominio al nuevo alojamiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configura redirecciones&lt;/strong&gt; si cambian las estructuras de URL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instala y configura plugins&lt;/strong&gt; (SEO, caché, seguridad, copias de seguridad)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba a fondo&lt;/strong&gt; antes de cancelar la suscripción de WordPress.com&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El proceso suele llevar unas pocas horas para sitios pequeños y un día para sitios más grandes con contenido extenso. Para una guía de migración detallada, consulta nuestra &lt;a href=&quot;/es/wordpress-migration-complete-guide-2024/&quot;&gt;guía de migración de WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>wordpress</category><category>business</category><category domain="tag">wordpress-com</category><category domain="tag">pricing</category><category domain="tag">hosting</category><category domain="tag">cms-comparison</category><category domain="tag">website-cost</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-flip.jpg" type="image/jpeg"/></item><item><title>La encuesta The Admin Bar 2026 sobre agencias WordPress: hallazgos clave que todo propietario de agencia deberia conocer</title><link>https://wppoland.com/es/admin-bar-2026-wordpress-agency-survey-results/</link><guid isPermaLink="true">https://wppoland.com/es/admin-bar-2026-wordpress-agency-survey-results/</guid><description>622 propietarios de agencias WordPress de 51 países compartieron sus datos de ingresos, precios, barreras de crecimiento y adopcion de IA. Estos son los hallazgos más importantes de la encuesta 2026 de The Admin Bar.</description><pubDate>Sun, 12 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Admin Bar acaba de publicar los resultados de su encuesta anual sobre agencias WordPress para 2026. Con 622 encuestados de 51 países y un promedio de 12.8 años de experiencia en la industria, esta es una de las radiografias más completas del panorama de agencias WordPress disponible hoy en dia.&lt;/p&gt;
&lt;p&gt;Los datos cuentan una historia clara: la experiencia aporta estabilidad pero no impulso, cobrar menos de $5,000 es una trampa de rentabilidad, los ingresos recurrentes separan a las agencias prosperas de las que luchan, y la adopcion de IA esta creando una brecha de rendimiento cada vez mayor. Para cualquiera que dirija un negocio WordPress en 2026, estos números merecen una atencion detallada.&lt;/p&gt;
&lt;p&gt;Cada año, la comunidad WordPress espera esta encuesta porque proporciona datos concretos en una industria que a menudo se mueve por intuicion y consejos anecdoticos. La edicion de este ano es particularmente reveladora porque captura un mercado en transicion, moldeado por la disrupcion de la IA, las expectativas cambiantes de los clientes y la creciente importancia del cumplimiento de accesibilidad.&lt;/p&gt;
&lt;h2 id=&quot;quienes-respondieron-la-encuesta-2026-y-por-que-importa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#quienes-respondieron-la-encuesta-2026-y-por-que-importa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Quienes respondieron la encuesta 2026 y por que importa&lt;/h2&gt;
&lt;p&gt;El encuestado tipico dirige una operación pequeña. El tamaño medio del equipo es de solo 1 persona, con una media de 2.4. Estos son predominantemente operadores individuales y microagencias, lo que hace que los datos financieros sean especialmente relevantes para freelancers y propietarios de pequeños estudios que conforman la columna vertebral del ecosistema WordPress.&lt;/p&gt;
&lt;p&gt;El encuestado promedio lleva 12.8 años en la industria, con una mediana de 11 años. Esta no es una encuesta de novatos. Son profesionales experimentados que han superado multiples cambios de mercado, desde el auge de los constructores de páginas hasta la transicion a Gutenberg, y ahora la revolucion de la IA.&lt;/p&gt;
&lt;p&gt;La distribucion por experiencia revela un patron interesante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las agencias con 0-5 años en el negocio mostraron el &lt;strong&gt;crecimiento más fuerte con un 59.8%&lt;/strong&gt; pero la rentabilidad consistente más baja con un 28.6%&lt;/li&gt;
&lt;li&gt;Las agencias con 6-10 años tuvieron un crecimiento del 49.4% con un 42.3% de rentabilidad&lt;/li&gt;
&lt;li&gt;Las agencias con 11-15 años reportaron un crecimiento del 42.7% y un 43.5% de rentabilidad&lt;/li&gt;
&lt;li&gt;Las agencias con 16+ años tuvieron tasas de crecimiento de solo el 43.8% pero una rentabilidad que alcanza el 45.9%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El patron es inconfundible. Las agencias más nuevas crecen más rápido porque parten de una base más pequeña y tienen más hambre de cuota de mercado. Pero ese crecimiento a menudo llega a costa de la rentabilidad. Las agencias establecidas crecen más lentamente pero han aprendido a conservar lo que ganan. La experiencia aporta estabilidad. No garantiza impulso.&lt;/p&gt;
&lt;p&gt;Para las agencias en el rango de 6-15 anos, estos datos sugieren un periodo de transicion critico donde el crecimiento se ralentiza pero la rentabilidad aun no ha madurado completamente. Esta es la zona donde las decisiones estrategicas sobre precios, servicios y modelo de negocio importan mas.&lt;/p&gt;
&lt;h2 id=&quot;el-umbral-de-5000-que-separa-a-las-agencias-rentables-del-resto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-umbral-de-5000-que-separa-a-las-agencias-rentables-del-resto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El umbral de $5,000 que separa a las agencias rentables del resto&lt;/h2&gt;
&lt;p&gt;Quizas el hallazgo más accionable de toda la encuesta es el umbral de rentabilidad vinculado al precio por proyecto.&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Precio promedio por proyecto&lt;/th&gt;&lt;th&gt;Consistentemente rentable&lt;/th&gt;&lt;th&gt;Raramente o nunca rentable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;$100-$999&lt;/td&gt;&lt;td&gt;25.0%&lt;/td&gt;&lt;td&gt;37.5%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$1,000-$2,499&lt;/td&gt;&lt;td&gt;30.0%&lt;/td&gt;&lt;td&gt;13.6%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$2,500-$4,999&lt;/td&gt;&lt;td&gt;36.8%&lt;/td&gt;&lt;td&gt;11.8%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$5,000-$9,999&lt;/td&gt;&lt;td&gt;56.8%&lt;/td&gt;&lt;td&gt;2.7%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$10,000-$19,999&lt;/td&gt;&lt;td&gt;50.0%&lt;/td&gt;&lt;td&gt;3.1%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Por debajo de $5,000, aproximadamente una de cada tres agencias logra rentabilidad consistente. A partir de $5,000, sube a casí una de cada dos. La categoria “raramente rentable” practicamente desaparece por encima de $5k, cayendo a menos del 3%.&lt;/p&gt;
&lt;p&gt;Si estas fijando precios de proyectos WordPress por debajo de $5,000, los datos sugieren que estas luchando cuesta arriba hacia la rentabilidad sin importar lo eficiente que sea tu flujo de trabajo.&lt;/p&gt;
&lt;p&gt;Esto no significa que cada agencia deba duplicar sus precios inmediatamente. Pero si significa que las agencias atrapadas en el rango de $1,000-$3,000 necesitan un camino claro hacia proyectos de mayor valor. Ese camino tipicamente implica especializacion, mejor posicionamiento o avanzar hacia entregables más complejos como plugins personalizados, implementaciónes de WooCommerce o contratos de desarrollo continuos.&lt;/p&gt;
&lt;p&gt;Las agencias que cobran $5,000+ no necesariamente hacen más trabajo. Hacen trabajo diferente para clientes diferentes. Resuelven problemas más grandes, se dirigen a empresas con presupuestos mayores y se posicionan como especialistas en lugar de generalistas.&lt;/p&gt;
&lt;h2 id=&quot;por-que-los-ingresos-recurrentes-son-la-linea-más-clara-entre-luchar-y-prosperar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-ingresos-recurrentes-son-la-linea-más-clara-entre-luchar-y-prosperar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los ingresos recurrentes son la linea más clara entre luchar y prosperar&lt;/h2&gt;
&lt;p&gt;La correlacion entre ingresos recurrentes y rentabilidad es la senal más fuerte de todo el conjunto de datos.&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Porcentaje de ingresos recurrentes&lt;/th&gt;&lt;th&gt;Consistentemente rentable&lt;/th&gt;&lt;th&gt;Raramente o nunca rentable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;0%&lt;/td&gt;&lt;td&gt;25.0%&lt;/td&gt;&lt;td&gt;58.3%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1-24%&lt;/td&gt;&lt;td&gt;29.7%&lt;/td&gt;&lt;td&gt;16.7%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;25-49%&lt;/td&gt;&lt;td&gt;47.4%&lt;/td&gt;&lt;td&gt;9.7%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;50-74%&lt;/td&gt;&lt;td&gt;47.8%&lt;/td&gt;&lt;td&gt;4.5%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;75%+&lt;/td&gt;&lt;td&gt;46.9%&lt;/td&gt;&lt;td&gt;6.2%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Las agencias sin ingresos recurrentes son no rentables casí el 60% de las veces. Una vez que los ingresos recurrentes alcanzan el 25% del total, la tasa de no rentabilidad cae por debajo del 10%.&lt;/p&gt;
&lt;p&gt;La marca del 25% es el punto de inflexion. Obtener una cuarta parte de tus ingresos de planes de mantenimiento, planes de soporte, hosting o contratos fijos cambia fundamentalmente el perfil financiero de un negocio WordPress.&lt;/p&gt;
&lt;p&gt;La implicacion practica es directa. Si construyes 10 sitios web al año a $5,000 cada uno, necesitas al menos $12,500 en ingresos recurrentes anuales para cruzar ese umbral del 25%. Eso podria ser tan simple como 25 clientes pagando $42/mes por un plan de mantenimiento WordPress. Las cuentas son alcanzables para cualquier agencia establecida, pero muchas aun operan sin flujos de ingresos recurrentes.&lt;/p&gt;
&lt;p&gt;Lo que hace tan poderosos a los ingresos recurrentes no es solo el ingreso en si. Es la previsibilidad. Cuando sabes que una cantidad base de ingresos llegara cada mes independientemente de las ventas de nuevos proyectos, puedes tomar mejores decisiones de contratacion, invertir en marketing y aceptar proyectos que se alineen con tus fortalezas en lugar de perseguir cada oportunidad por desesperacion financiera.&lt;/p&gt;
&lt;h2 id=&quot;las-agencias-con-modelo-de-retencion-superan-a-todos-los-demás-modelos-de-precios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-agencias-con-modelo-de-retencion-superan-a-todos-los-demás-modelos-de-precios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las agencias con modelo de retencion superan a todos los demás modelos de precios&lt;/h2&gt;
&lt;p&gt;Al comparar los modelos de precios en rentabilidad, escala de ingresos y crecimiento:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Modelo de precios&lt;/th&gt;&lt;th&gt;Consistentemente rentable&lt;/th&gt;&lt;th&gt;Ingresos $100k+&lt;/th&gt;&lt;th&gt;Crecio en 2025&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Retencion&lt;/td&gt;&lt;td&gt;51.2%&lt;/td&gt;&lt;td&gt;59.0%&lt;/td&gt;&lt;td&gt;56.6%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Productizado&lt;/td&gt;&lt;td&gt;44.4%&lt;/td&gt;&lt;td&gt;51.1%&lt;/td&gt;&lt;td&gt;55.6%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Basado en valor&lt;/td&gt;&lt;td&gt;46.2%&lt;/td&gt;&lt;td&gt;27.3%&lt;/td&gt;&lt;td&gt;50.0%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Precio fijo&lt;/td&gt;&lt;td&gt;36.4%&lt;/td&gt;&lt;td&gt;35.5%&lt;/td&gt;&lt;td&gt;47.4%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Por hora&lt;/td&gt;&lt;td&gt;39.8%&lt;/td&gt;&lt;td&gt;34.9%&lt;/td&gt;&lt;td&gt;42.2%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Las agencias basadas en retencion lideran en cada categoria. Sin embargo, vale la pena senalar que el modelo en si puede no ser el principal impulsor. Las agencias más fuertes y maduras gravitan naturalmente hacia acuerdos de retencion. El modelo de retencion es probablemente tanto causa como sintoma de salud empresarial.&lt;/p&gt;
&lt;h2 id=&quot;marketing-proactivo-vs-boca-a-boca-pasivo-la-brecha-de-ingresos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marketing-proactivo-vs-boca-a-boca-pasivo-la-brecha-de-ingresos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marketing proactivo vs. boca a boca pasivo: la brecha de ingresos&lt;/h2&gt;
&lt;p&gt;La encuesta traza una linea clara entre las agencias que dependen de la generacion proactiva de leads (marketing de contenidos, publicidad pagada, alcance directo, alianzas) y las que dependen del boca a boca pasivo.&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Umbral de ingresos&lt;/th&gt;&lt;th&gt;Canales proactivos&lt;/th&gt;&lt;th&gt;Boca a boca pasivo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Menos de $50k&lt;/td&gt;&lt;td&gt;26.2%&lt;/td&gt;&lt;td&gt;45.6%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mas de $100k&lt;/td&gt;&lt;td&gt;50.3%&lt;/td&gt;&lt;td&gt;31.8%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mas de $200k&lt;/td&gt;&lt;td&gt;24.8%&lt;/td&gt;&lt;td&gt;11.6%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Las agencias proactivas tienen más del doble de probabilidad de superar los $200,000 en ingresos (24.8% vs. 11.6%). El boca a boca funciona lo suficientemente bien para empezar, pero tiene un techo. Las agencias que quieren escalar más alla de seis cifras necesitan estrategias de marketing deliberadas.&lt;/p&gt;
&lt;p&gt;Este hallazgo desafia una creencia profundamente arraigada en la comunidad WordPress: que el buen trabajo habla por si solo y las recomendaciónes son el único marketing que necesitas. Los datos dicen lo contrario. Las recomendaciónes son efectivas hasta cierto punto, pero son inherentemente incontrolables e impredecibles. No puedes escalar lo que no puedes controlar.&lt;/p&gt;
&lt;p&gt;El marketing proactivo no tiene que significar campanas publicitarias costosas. Para las agencias WordPress, a menudo significa publicar casos de estudio, contribuir a la comunidad WordPress, dar charlas en WordCamps, construir una biblioteca de contenido alrededor de tu nicho o formar alianzas estrategicas con proveedores de servicios complementarios. La diferencia clave es la intencionalidad. Las agencias proactivas deciden cuantos leads quieren y construyen sistemas para generarlos, en lugar de esperar a que suene el telefono.&lt;/p&gt;
&lt;h2 id=&quot;por-que-la-concentracion-de-clientes-mata-la-rentabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-la-concentracion-de-clientes-mata-la-rentabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que la concentracion de clientes mata la rentabilidad&lt;/h2&gt;
&lt;p&gt;Depender de unos pocos clientes grandes se siente seguro hasta que los datos demuestran lo contrario.&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Top 3 clientes como % de ingresos&lt;/th&gt;&lt;th&gt;Alcanzo $200k+&lt;/th&gt;&lt;th&gt;Consistentemente rentable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Menos del 25%&lt;/td&gt;&lt;td&gt;26.2%&lt;/td&gt;&lt;td&gt;51.0%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;25-49%&lt;/td&gt;&lt;td&gt;14.1%&lt;/td&gt;&lt;td&gt;41.6%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;50-74%&lt;/td&gt;&lt;td&gt;8.2%&lt;/td&gt;&lt;td&gt;33.9%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;75%+&lt;/td&gt;&lt;td&gt;5.4%&lt;/td&gt;&lt;td&gt;29.4%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Las agencias donde los 3 principales clientes representan menos del 25% de los ingresos tienen casí cinco veces más probabilidad de alcanzar $200k que aquellas con más del 75% de concentracion. La diversificacion de clientes no es solo gestión de riesgos. Se correlaciona directamente con mayores ingresos y rentabilidad.&lt;/p&gt;
&lt;h2 id=&quot;la-adopcion-de-ia-esta-creando-una-economia-wordpress-a-dos-velocidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-adopcion-de-ia-esta-creando-una-economia-wordpress-a-dos-velocidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La adopcion de IA esta creando una economia WordPress a dos velocidades&lt;/h2&gt;
&lt;p&gt;Los datos sobre la percepcion de la IA revelan la brecha de rendimiento más amplia de toda la encuesta.&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Percepcion de la IA&lt;/th&gt;&lt;th&gt;Crecio en 2025&lt;/th&gt;&lt;th&gt;Decrecio en 2025&lt;/th&gt;&lt;th&gt;Optimista sobre 2026&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Significativamente positiva&lt;/td&gt;&lt;td&gt;58.5%&lt;/td&gt;&lt;td&gt;12.3%&lt;/td&gt;&lt;td&gt;80.0%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Algo positiva&lt;/td&gt;&lt;td&gt;48.0%&lt;/td&gt;&lt;td&gt;17.3%&lt;/td&gt;&lt;td&gt;60.9%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Neutral&lt;/td&gt;&lt;td&gt;43.6%&lt;/td&gt;&lt;td&gt;21.8%&lt;/td&gt;&lt;td&gt;47.1%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Negativa&lt;/td&gt;&lt;td&gt;28.4%&lt;/td&gt;&lt;td&gt;43.3%&lt;/td&gt;&lt;td&gt;13.4%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Las agencias que ven la IA como significativamente positiva crecieron a más del doble de la tasa de las agencias negativas hacia la IA (58.5% vs. 28.4%). En cuanto al declive, el 43.3% de las agencias negativas hacia la IA reportaron contraccion, comparado con solo el 12.3% de las positivas hacia la IA.&lt;/p&gt;
&lt;p&gt;La brecha de optimismo es aun más llamativa: el 80% de las agencias positivas hacia la IA son optimistas sobre 2026, comparado con solo el 13.4% de las que tienen una vision negativa de la IA. Ya sea que la IA sea la causa directa del crecimiento o un indicador de liderazgo visionario, la correlacion es innegable.&lt;/p&gt;
&lt;p&gt;Vale la pena considerar que significa “adoptar la IA” en la practica para una agencia WordPress. Podria significar usar asistentes de codificacion con IA para acelerar el desarrollo, aprovechar la IA para la creación de contenido o el análisis SEO, automatizar tareas repetitivas como actualizaciones de plugins y escaneo de seguridad, u ofrecer funciones impulsadas por IA a los clientes como un servicio premium.&lt;/p&gt;
&lt;p&gt;Las agencias que ven la IA de forma positiva son probablemente las mismás que experimentan con nuevas herramientas, adoptan nuevos flujos de trabajo y se adelantan a las expectativas de los clientes. La percepcion sobre la IA puede estar midiendo adaptabilidad y apertura al cambio tanto como el impacto directo de las herramientas de IA en el rendimiento empresarial.&lt;/p&gt;
&lt;h2 id=&quot;servicios-de-accesibilidad-la-oportunidad-de-crecimiento-más-infrautilizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#servicios-de-accesibilidad-la-oportunidad-de-crecimiento-más-infrautilizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Servicios de accesibilidad: la oportunidad de crecimiento más infrautilizada&lt;/h2&gt;
&lt;p&gt;Solo alrededor del 25% de las agencias WordPress ofrece servicios de accesibilidad. Sin embargo, las que lo hacen muestran resultados dramaticamente mejores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2.4 veces más probabilidad&lt;/strong&gt; de superar $200k en ingresos (26.6% vs. 11.0%)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mayor rentabilidad&lt;/strong&gt;: 47.6% consistentemente rentable vs. 38.1%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mas resilientes&lt;/strong&gt;: solo el 13.1% decrecio en 2025, comparado con el 21.7% de las agencias que no ofrecen accesibilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con las regulaciones de accesibilidad endureciendose a nivel global (incluyendo la Ley Europea de Accesibilidad que entro en vigor en 2025), esto representa tanto un imperativo etico como una oportunidad de mercado significativa que la mayoria de las agencias esta dejando pasar.&lt;/p&gt;
&lt;h2 id=&quot;el-agotamiento-se-correlaciona-con-precios-bajos-no-con-exceso-de-trabajo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-agotamiento-se-correlaciona-con-precios-bajos-no-con-exceso-de-trabajo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El agotamiento se correlaciona con precios bajos, no con exceso de trabajo&lt;/h2&gt;
&lt;p&gt;Los datos sobre agotamiento desafian la narrativa comun de que el burnout proviene de trabajar demasiadas horas.&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Rango de ingresos&lt;/th&gt;&lt;th&gt;Agotamiento como principal barrera de crecimiento&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Menos de $50k&lt;/td&gt;&lt;td&gt;15.1%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$50k-$99k&lt;/td&gt;&lt;td&gt;15.0%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$100k-$199k&lt;/td&gt;&lt;td&gt;8.8%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$200k+&lt;/td&gt;&lt;td&gt;3.3%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Con ingresos por debajo de $50k, el 15.1% cita el agotamiento como su principal barrera de crecimiento. A partir de $200k+, cae a solo el 3.3%. La encuesta también revela una brecha de genero: las mujeres citaron el agotamiento en un 16.9% vs. el 8.1% de los hombres, lo que las hace el doble de propensas a identificarlo como su principal obstaculo.&lt;/p&gt;
&lt;p&gt;El agotamiento se parece mucho a un problema de precios bajos. Cuando cobras mas, puedes permitirte aceptar menos proyectos, contratar ayuda e invertir en sistemas. La presion financiera de las operaciones de bajos ingresos es en si misma un impulsor del agotamiento.&lt;/p&gt;
&lt;h2 id=&quot;que-significa-esto-para-las-agencias-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-esto-para-las-agencias-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa esto para las agencias WordPress en 2026&lt;/h2&gt;
&lt;p&gt;La encuesta de The Admin Bar pinta un cuadro claro de lo que separa a las agencias WordPress prosperas de las que luchan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cobra más de $5,000 por proyecto.&lt;/strong&gt; Por debajo de ese umbral, la rentabilidad consistente es improbable sin importar la eficiencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construye ingresos recurrentes de al menos el 25% del ingreso total.&lt;/strong&gt; Los planes de mantenimiento, hosting y contratos de retencion transforman la estabilidad financiera.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diversifica tu base de clientes.&lt;/strong&gt; Si tus 3 principales clientes representan más de la mitad de tus ingresos, estas construyendo sobre terreno inestable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invierte en marketing proactivo.&lt;/strong&gt; El boca a boca tiene un techo. El contenido, las alianzas y el alcance directo lo superan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adopta las herramientas de IA.&lt;/strong&gt; La brecha de rendimiento entre agencias positivas y negativas hacia la IA es demasiado grande para ignorarla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Considera agregar servicios de accesibilidad.&lt;/strong&gt; Es un mercado desatendido, cada vez más exigido por ley y fuertemente correlacionado con mayores ingresos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aborda el agotamiento a través de los precios, no solo la gestión del tiempo.&lt;/strong&gt; Mayores ingresos por proyecto reducen la presion de volumen que genera el agotamiento.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Los datos de la encuesta confirman patrones que muchos propietarios de agencias experimentados ya perciben intuitivamente: que competir por precio es un juego perdido, que la estabilidad financiera requiere flujos de ingresos predecibles y que las agencias que invierten en su propio crecimiento y capacidades se estan distanciando aun más de las que permanecen inmóviles.&lt;/p&gt;
&lt;p&gt;El mercado de agencias WordPress no se esta reduciendo. Pero se esta dividiendo. Por un lado, agencias rentables que cobran tarifas premium, mantienen bases de clientes diversificadas, invierten en marketing proactivo, adoptan la IA y ofrecen servicios de alto valor como la accesibilidad. Por el otro, agencias indiferenciadas que compiten por precio, dependen de recomendaciónes impredecibles, se resisten al cambio y se agotan bajo el peso de demasiados proyectos de bajo margen.&lt;/p&gt;
&lt;p&gt;La brecha entre estos dos grupos se esta ampliando, y la encuesta 2026 hace visible esa brecha en números concretos por primera vez.&lt;/p&gt;
&lt;p&gt;Los resultados completos de la encuesta, incluyendo datos CSV descargables, estan disponibles en la &lt;a href=&quot;https://theadminbar.com/2026-survey/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;página de la encuesta 2026 de The Admin Bar&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>business</category><category domain="tag">wordpress-agency</category><category domain="tag">survey</category><category domain="tag">agency-growth</category><category domain="tag">recurring-revenue</category><category domain="tag">ai-in-wordpress</category><enclosure url="https://wppoland.com/images/og/admin-bar-2026-survey.jpg" type="image/jpeg"/></item><item><title>Migrar Magento Adobe Commerce a WooCommerce headless en 2026</title><link>https://wppoland.com/es/migrar-magento-adobe-commerce-a-woocommerce-headless-2026/</link><guid isPermaLink="true">https://wppoland.com/es/migrar-magento-adobe-commerce-a-woocommerce-headless-2026/</guid><description>Cuándo migrar de Magento Adobe Commerce a WooCommerce headless en 2026: criterios, ruta técnica y errores típicos del retail español.</description><pubDate>Thu, 09 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;España tiene una historia particular con Magento. Desde mediados de la década de 2010, marcas de moda, electrónica y distribución especializada construyeron sus tiendas sobre esta plataforma porque ofrecía algo que ningún otro sistema open source daba: un modelo de catálogo serio, atributos configurables y una capacidad real para soportar operaciones de varios millones de euros al año. Hoy, en 2026, la pregunta que llega a nuestra mesa con frecuencia es distinta. ¿Tiene sentido seguir invirtiendo en Adobe Commerce o ha llegado el momento de migrar a WooCommerce headless?&lt;/p&gt;
&lt;p&gt;La respuesta honesta no es un sí absoluto. Es un sí condicionado, y este artículo explica exactamente cuándo lo es y cuándo no.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Magento Open Source sigue siendo código mantenido, pero la rama 2.4 LTS ha alcanzado su fin de soporte oficial y Adobe Commerce concentra ahora las inversiones serias.&lt;/li&gt;
&lt;li&gt;Adobe Commerce 2.4.7 se publicó en abril de 2024 como nueva rama de mantenimiento; las licencias y la complejidad operativa siguen pesando.&lt;/li&gt;
&lt;li&gt;WooCommerce, con una cuota estimada del 8 al 10 por ciento del comercio electrónico mundial según BuiltWith y W3Techs, ha madurado lo suficiente como para sustentar retail medio.&lt;/li&gt;
&lt;li&gt;La combinación de WooCommerce más un frontend Astro 5 o Next.js 15 sobre Cloudflare Workers entrega tiempos de respuesta competitivos sin la carga operativa de Magento.&lt;/li&gt;
&lt;li&gt;No todo Magento debe migrar: B2B con flujos específicos de Adobe, catálogos por encima de 100.000 SKU activos y arquitecturas multi-website complejas suelen quedarse donde están.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;por-qué-magento-fue-dominante-en-españa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-magento-fue-dominante-en-españa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué Magento fue dominante en España&lt;/h2&gt;
&lt;p&gt;Para entender la decisión de 2026 hay que mirar la historia. Cuando Magento 1 emergió como referencia open source para comercio electrónico, España estaba reconstruyendo su mercado online tras la crisis financiera. Las marcas que sobrevivieron necesitaban una plataforma capaz de gestionar catálogos amplios, varias divisas, configuraciones de IVA por comunidad autónoma y la complejidad logística del retail peninsular. Magento ofrecía exactamente eso. Empresas integradoras de Madrid, Barcelona y Valencia construyeron equipos especializados, y en muchos casos esos equipos siguen activos.&lt;/p&gt;
&lt;p&gt;En mayo de 2018, Adobe adquirió Magento por aproximadamente 1.680 millones de dólares. La operación no fue una sorpresa para quien observaba el sector: Adobe necesitaba una pieza de comercio en su Experience Cloud y Magento aportaba un ecosistema maduro. La consecuencia, sin embargo, sí marcó el rumbo. La plataforma se reorganizó en dos productos: Magento Open Source, gratuita y sostenida por la comunidad, y Adobe Commerce, la edición de pago con funcionalidades empresariales como B2B, segmentación avanzada y Page Builder mejorado.&lt;/p&gt;
&lt;p&gt;Después llegó la fecha que muchos retailers todavía recuerdan con incomodidad. El 30 de junio de 2020, Magento 1 alcanzó su fin de vida. Decenas de tiendas españolas tuvieron que migrar a Magento 2 con plazos ajustados, presupuestos imprevistos y una sensación clara de que el control sobre la plataforma se había desplazado. Esa migración forzada de 2020 es, en muchos casos, el origen del cansancio que hoy lleva a evaluar alternativas.&lt;/p&gt;
&lt;h2 id=&quot;qué-cambió-entre-2020-y-2025&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-cambió-entre-2020-y-2025&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué cambió entre 2020 y 2025&lt;/h2&gt;
&lt;p&gt;En cinco años, el panorama se ha movido más de lo que parece. Tres cambios concretos importan.&lt;/p&gt;
&lt;p&gt;Primero, el coste sostenido de Adobe Commerce. La licencia anual sigue calculándose sobre ingresos brutos y, sumada a la infraestructura especializada que la plataforma exige, supone una partida fija que muchos retailers medianos cuestionan cuando comparan con sus márgenes reales.&lt;/p&gt;
&lt;p&gt;Segundo, la complejidad acumulada del ecosistema Magento. Los módulos de terceros, las personalizaciones del checkout, los conectores con ERPs locales como Sage o A3 y las integraciones con pasarelas de pago españolas como Redsys forman una capa que, tras varios años, pocos equipos saben mover sin dolor. La deuda técnica acumulada se vuelve un argumento por sí mismo.&lt;/p&gt;
&lt;p&gt;Tercero, la maduración de las alternativas. WooCommerce, que en 2018 se consideraba apto solo para tiendas pequeñas, ha incorporado HPOS para escalar pedidos, mejoras serias en la API REST y un ecosistema de extensiones que cubre la mayoría de los flujos de retail medio. Su cuota global, estimada por BuiltWith y W3Techs entre el 8 y el 10 por ciento del comercio electrónico mundial, es difícil de ignorar. Y, sobre todo, ha llegado la era headless: separar el frontend del backend permite que la velocidad y la experiencia ya no dependan de la pesadez tradicional de un monolito PHP.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-migrar-tiene-sentido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-migrar-tiene-sentido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo migrar tiene sentido&lt;/h2&gt;
&lt;p&gt;La decisión de migrar no debe basarse en moda ni en presión comercial. Hay cinco criterios concretos que, cuando se cumplen al menos tres, justifican plantear el cambio.&lt;/p&gt;
&lt;p&gt;El primero es el catálogo. Si tu tienda gestiona menos de 50.000 SKU activos, con atributos relativamente estables y categorías que no cambian a diario, WooCommerce funciona sin esfuerzo extraordinario. La barrera práctica donde la curva de complejidad se inclina suele estar alrededor de esa cifra.&lt;/p&gt;
&lt;p&gt;El segundo es el equipo. Si mantener tu Magento exige depender de uno o dos integradores externos porque dentro de la empresa nadie domina la plataforma, estás en una situación frágil. WooCommerce vive sobre WordPress, y la oferta de talento WordPress en España es sustancialmente mayor. La trazabilidad humana del proyecto mejora con la migración.&lt;/p&gt;
&lt;p&gt;El tercero es la velocidad percibida. Si tus tiempos de carga en móvil están por encima de tres segundos en LCP a pesar de optimizaciones de Varnish y FPM, la arquitectura tradicional de Magento ha tocado techo para tu caso. Un frontend headless en Astro o Next.js, servido desde Cloudflare Workers, entrega HTML en milisegundos y libera la experiencia del peso del backend.&lt;/p&gt;
&lt;p&gt;El cuarto es el roadmap. Si tu plan a tres años incluye experiencias de cliente más ricas, integración con apps móviles propias, contenido editorial y comercio mezclados, o experimentación rápida con landings, el modelo headless da una libertad que el frontend tradicional de Magento no concede.&lt;/p&gt;
&lt;p&gt;El quinto es el coste real. No el coste de licencia aislado, sino la suma de licencia, hosting especializado, contratos de mantenimiento y horas de desarrollador. Cuando ese total anual supera ampliamente lo que una alternativa headless equivalente costaría en operación, el ROI de migrar deja de ser teórico.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-magento-debe-quedarse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-magento-debe-quedarse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo Magento debe quedarse&lt;/h2&gt;
&lt;p&gt;Aquí viene la parte que no se dice tanto. No toda tienda Magento necesita migrar. Hay cuatro situaciones donde recomendamos honestamente quedarse.&lt;/p&gt;
&lt;p&gt;La primera es B2B con funciones específicas de Adobe Commerce. Si usas en serio Company Accounts, Shared Catalogs, Quick Order o Requisition Lists, replicar todo eso en WooCommerce significa construir mucho a mano. El esfuerzo puede no compensar.&lt;/p&gt;
&lt;p&gt;La segunda son los catálogos grandes. Por encima de 100.000 SKU activos, especialmente si tus atributos son numerosos y tus filtros frontales son intensivos, Magento sigue siendo la opción más natural. WooCommerce puede llegar ahí, pero exige integraciones con motores de búsqueda externos y un nivel de optimización que ya equivale, en complejidad, a mantener Magento.&lt;/p&gt;
&lt;p&gt;La tercera es la arquitectura multi-website con segmentación avanzada por país, idioma y moneda compartiendo un único stock central. Magento tiene esa capa diseñada de raíz; WooCommerce la simula con plugins, y la diferencia se nota.&lt;/p&gt;
&lt;p&gt;La cuarta es el momento del negocio. Si tu tienda está en plena temporada alta, en proceso de financiación o en una transición organizativa, no es el momento. Una migración de comercio mal calibrada puede costar varios meses de ingresos. La ventana correcta existe, pero hay que saber elegirla.&lt;/p&gt;
&lt;h2 id=&quot;la-ruta-de-migración-a-woocommerce-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ruta-de-migración-a-woocommerce-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La ruta de migración a WooCommerce headless&lt;/h2&gt;
&lt;p&gt;Cuando la decisión es migrar, la ruta tiene cuatro fases bien diferenciadas. Hablamos de migración real, no de redibujar templates.&lt;/p&gt;
&lt;p&gt;La primera fase es la auditoría. Inventario completo del catálogo, atributos, conjuntos de atributos, categorías, productos configurables, productos agrupados, reglas de catálogo, reglas de carrito, métodos de envío, pasarelas de pago integradas, zonas fiscales, customer groups y cualquier personalización del checkout. Esta fase produce el mapa de todo lo que existe y la decisión explícita sobre qué se conserva, qué se simplifica y qué se elimina.&lt;/p&gt;
&lt;p&gt;La segunda fase es el data mapping. Cada entidad de Magento se traduce a una entidad de WooCommerce. Productos simples y configurables se mapean a productos simples y variables. Los atributos personalizados pasan a taxonomías o meta. Los conjuntos de atributos, que en Magento son una pieza estructural, se aplanan en WooCommerce porque no existen como tales. Aquí ya empieza a aparecer la deuda implícita del modelo origen.&lt;/p&gt;
&lt;p&gt;La tercera fase son los scripts de migración. Recomendamos siempre escribir código propio en lugar de depender ciegamente de plugins genéricos. Un script controlado lee la base de datos de Magento, transforma los datos y escribe en WooCommerce respetando las relaciones, los SKU canónicos y los pedidos históricos. Los pedidos no se descartan: se importan con sus estados originales, sus líneas de productos, sus impuestos calculados y sus referencias al cliente. Si decides no migrar pedidos por debajo de cierta antigüedad, esa decisión se documenta y se comunica.&lt;/p&gt;
&lt;p&gt;La cuarta fase es la estrategia SEO y de redirecciones. Magento genera URLs con patrones específicos, y cualquier cambio sin redirección 301 mata posiciones ganadas durante años. Cada URL antigua mapea a una nueva URL en WooCommerce, y se mantiene un fichero de redirecciones gestionado a nivel de Cloudflare o de Workers. Es la fase menos visible y la que más tráfico orgánico salva. Hablamos de ella con más detalle en &lt;a href=&quot;/en/seo-patterns-for-headless-wordpress/&quot;&gt;patrones SEO para WordPress headless&lt;/a&gt; y en &lt;a href=&quot;/es/cloudflare-workers-wordpress-woocommerce-edge/&quot;&gt;WooCommerce sobre Cloudflare Workers en el edge&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-normalmente-sale-mal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-normalmente-sale-mal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que normalmente sale mal&lt;/h2&gt;
&lt;p&gt;Hemos visto muchas migraciones, propias y ajenas. Cinco errores se repiten con incomodidad.&lt;/p&gt;
&lt;p&gt;Mapeo de SKU. En Magento es habitual que los productos configurables tengan un SKU padre y los productos simples asociados tengan SKUs hijos. WooCommerce trabaja con productos variables y variaciones, donde la lógica del SKU no es idéntica. Quien no se sienta a mapear esta correspondencia con calma acaba con duplicados, productos huérfanos y reportes de stock que mienten.&lt;/p&gt;
&lt;p&gt;Migración de hashes de cliente. Las contraseñas en Magento se almacenan con un algoritmo distinto al de WordPress. No se pueden traducir. Las opciones son dos: forzar un reset masivo, comunicado por email con antelación, o implementar un puente que valide la contraseña contra el hash original al primer login y la reescriba en formato WordPress nativo. Ambas son válidas, pero exigen una decisión consciente.&lt;/p&gt;
&lt;p&gt;Traducción de conjuntos de atributos. Como ya hemos dicho, los attribute sets de Magento no existen en WooCommerce. Quien no aplane esa estructura con criterio acaba con productos que carecen de atributos clave en frontend, y con filtros que devuelven resultados incompletos. El aplanamiento pide un análisis serio del modelo de catálogo, no un script automático.&lt;/p&gt;
&lt;p&gt;Configuración de zonas fiscales. España es relativamente directa: IVA general, reducido y superreducido. Pero Canarias usa IGIC, no IVA. Ceuta y Melilla tienen IPSI. Si la tienda vende a estos territorios, las zonas fiscales en WooCommerce deben replicar la lógica con cuidado. Más de una migración ha cobrado IVA peninsular en pedidos canarios durante semanas antes de que alguien lo notara.&lt;/p&gt;
&lt;p&gt;Preservación de URL rewrites. Magento mantiene una tabla de url_rewrite que es, en la práctica, el historial vivo de SEO de la tienda. Una migración que ignora esta tabla pierde redirecciones internas que se acumulan a lo largo de años. Hay que extraerla, normalizarla y traducirla a redirecciones gestionadas en el nuevo entorno. Volvemos a remitir a &lt;a href=&quot;/en/seo-patterns-for-headless-wordpress/&quot;&gt;patrones SEO para WordPress headless&lt;/a&gt; por su valor concreto en este punto.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-ofrecemos-en-wppoland&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-ofrecemos-en-wppoland&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que ofrecemos en WPPoland&lt;/h2&gt;
&lt;p&gt;En WPPoland llevamos años construyendo arquitecturas headless para clientes con expectativas reales sobre rendimiento y mantenimiento. Nuestro enfoque parte siempre de la auditoría honesta, no de la propuesta de migración por defecto. Si tu Magento debe quedarse, lo decimos. Si la migración tiene sentido, diseñamos la ruta completa, ejecutamos los scripts, definimos la estrategia de redirecciones y dejamos un frontend Astro o Next.js servido desde Cloudflare Workers que entrega LCP por debajo del segundo en móvil. La oferta detallada está en nuestra &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;página pilar de WordPress headless&lt;/a&gt;, y los matices técnicos los desarrollamos en &lt;a href=&quot;/en/headless-wordpress-for-woocommerce/&quot;&gt;WooCommerce headless con WordPress&lt;/a&gt; y &lt;a href=&quot;/en/headless-wordpress-nextjs-vs-astro-2026/&quot;&gt;Next.js frente a Astro para WordPress headless en 2026&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Trabajamos con equipos sénior que entienden el contexto español: pasarelas locales, ERPs habituales, particularidades fiscales y la cultura concreta del retail peninsular. Más sobre el modelo en &lt;a href=&quot;/es/ingenieros-senior-polacos-estandar-nearshore-post-brexit/&quot;&gt;ingenieros sénior polacos como estándar nearshore en 2026&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-este-artículo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-este-artículo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja este artículo&lt;/h2&gt;
&lt;p&gt;Este texto forma parte de un cluster mayor sobre WordPress empresarial y comercio electrónico moderno. Si vas a planificar una migración, te interesa también nuestro análisis de &lt;a href=&quot;/en/headless-wordpress-isr-vs-ssr/&quot;&gt;ISR frente a SSR en WordPress headless&lt;/a&gt; para entender qué modelo de renderizado encaja con tu volumen y tu volatilidad de catálogo. Y si la conversación incluye cumplimiento, lee &lt;a href=&quot;/es/nis2-dora-wordpress-compliance-2026/&quot;&gt;NIS2 y DORA aplicados a WordPress en 2026&lt;/a&gt; y &lt;a href=&quot;/es/wcag-bfsg-eaa-wordpress-compliance-2026/&quot;&gt;WCAG, BFSG y EAA para WordPress en 2026&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La pregunta no es si Magento Adobe Commerce sigue siendo una plataforma seria. Lo es. La pregunta es si sigue siendo la plataforma adecuada para tu negocio en 2026. Para una parte del retail español, la respuesta honesta apunta hacia WooCommerce headless. Para otra parte, no. Lo único que no recomendamos es decidir sin haber medido.&lt;/p&gt;</content:encoded><category>wordpress</category><category>commerce</category><category>migracion</category><category domain="tag">magento</category><category domain="tag">adobe-commerce</category><category domain="tag">woocommerce</category><category domain="tag">headless</category><category domain="tag">migracion</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>¿Cuándo reconstruir tu sitio web? 7 señales de que necesita modernización</title><link>https://wppoland.com/es/cuando-reconstruir-sitio-web-guia-2026/</link><guid isPermaLink="true">https://wppoland.com/es/cuando-reconstruir-sitio-web-guia-2026/</guid><description>Descubre cuándo una reconstrucción de sitio web es necesaria. 7 señales técnicas y de negocio medibles que indican que tu sitio necesita modernización en 2026.</description><pubDate>Tue, 07 Apr 2026 08:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;tu-sitio-web-pierde-clientes-cada-día&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tu-sitio-web-pierde-clientes-cada-día&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tu sitio web pierde clientes cada día&lt;/h2&gt;
&lt;p&gt;Un sitio web que tarda más de 3 segundos en cargar pierde el &lt;strong&gt;53% de los visitantes&lt;/strong&gt; antes de que vean cualquier contenido. Esto no es una opinión — son datos de la investigación de Google de 2026. Si el sitio web de tu empresa fue creado hace más de 2-3 años, probablemente está alejando clientes en lugar de atraerlos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reconstruir tu sitio web&lt;/strong&gt; no es un lujo — es una decisión de negocio que impacta directamente en los ingresos. Aquí tienes 7 señales medibles de que tu sitio necesita modernización.&lt;/p&gt;
&lt;h2 id=&quot;7-señales-de-que-tu-web-necesita-reconstrucción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-señales-de-que-tu-web-necesita-reconstrucción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7 señales de que tu web necesita reconstrucción&lt;/h2&gt;
&lt;h3 id=&quot;1-core-web-vitals-en-zona-roja&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-core-web-vitals-en-zona-roja&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Core Web Vitals en zona roja&lt;/h3&gt;
&lt;p&gt;Google mide tres métricas: LCP (tiempo de carga), CLS (estabilidad visual) e INP (capacidad de respuesta de interacción). Si alguna de ellas no alcanza el umbral “bueno” en &lt;a href=&quot;https://pagespeed.web.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;PageSpeed Insights&lt;/a&gt;, tu sitio está perdiendo posiciones en los resultados de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;2-tasa-de-rebote-superior-al-60&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-tasa-de-rebote-superior-al-60&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Tasa de rebote superior al 60%&lt;/h3&gt;
&lt;p&gt;Una bounce rate alta en la página principal significa que los visitantes no encuentran lo que buscan o el sitio no inspira confianza. Un UX moderno y una jerarquía de información clara pueden reducir esta métrica un 30-50%.&lt;/p&gt;
&lt;h3 id=&quot;3-el-sitio-no-es-responsivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-el-sitio-no-es-responsivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. El sitio no es responsivo&lt;/h3&gt;
&lt;p&gt;En 2026, &lt;strong&gt;más del 65% del tráfico&lt;/strong&gt; proviene de dispositivos móviles. Un sitio que no funciona de forma fluida en un smartphone es invisible para la mayoría de los clientes potenciales.&lt;/p&gt;
&lt;h3 id=&quot;4-stack-tecnológico-obsoleto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-stack-tecnológico-obsoleto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Stack tecnológico obsoleto&lt;/h3&gt;
&lt;p&gt;PHP 7.4 alcanzó el fin de vida en 2022. Si tu sitio WordPress funciona con una versión antigua de PHP, plugins desactualizados o un tema sin soporte, cada día es un riesgo de hackeo y pérdida de datos.&lt;/p&gt;
&lt;h3 id=&quot;5-visibilidad-decreciente-en-google&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-visibilidad-decreciente-en-google&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Visibilidad decreciente en Google&lt;/h3&gt;
&lt;p&gt;Los algoritmos de búsqueda en 2026 priorizan velocidad, accesibilidad y calidad de contenido. Un sitio con deuda técnica pierde posiciones constantemente frente a competidores modernizados.&lt;/p&gt;
&lt;h3 id=&quot;6-sin-conformidad-wcag-21&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-sin-conformidad-wcag-21&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Sin conformidad WCAG 2.1&lt;/h3&gt;
&lt;p&gt;El European Accessibility Act (EAA) exige que los sitios web comerciales cumplan el estándar WCAG 2.1 AA. El incumplimiento no solo excluye a usuarios con discapacidad — es un riesgo legal y daño reputacional.&lt;/p&gt;
&lt;h3 id=&quot;7-el-sitio-no-genera-leads&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-sitio-no-genera-leads&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El sitio no genera leads&lt;/h3&gt;
&lt;p&gt;Si el formulario de contacto es difícil de encontrar, faltan CTAs claros y el camino de conversión es poco intuitivo, el sitio no cumple su función empresarial fundamental.&lt;/p&gt;
&lt;h2 id=&quot;qué-incluye-una-reconstrucción-profesional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-incluye-una-reconstrucción-profesional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué incluye una reconstrucción profesional&lt;/h2&gt;
&lt;p&gt;Una &lt;a href=&quot;https://wppoland.com/es/reconstruccion-y-modernizacion-de-sitio-web/&quot;&gt;reconstrucción y modernización de sitio web&lt;/a&gt; efectiva combina tres capas: técnica, visual y de contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa técnica&lt;/strong&gt;: migración a PHP 8.4+, optimización de base de datos, implementación de object cache (Redis), configuración de CDN y cabeceras de seguridad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa visual&lt;/strong&gt;: nuevo diseño alineado con tendencias 2026, layout responsivo, accesibilidad WCAG 2.1 AA, rutas de conversión optimizadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa de contenido&lt;/strong&gt;: auditoría y consolidación de contenido, eliminación de contenido delgado, actualizaciones de metadatos SEO, implementación de datos estructurados Schema.org.&lt;/p&gt;
&lt;h2 id=&quot;reconstrucción-sin-perder-seo--es-posible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reconstrucción-sin-perder-seo--es-posible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reconstrucción sin perder SEO — es posible&lt;/h2&gt;
&lt;p&gt;El mayor miedo a la modernización es perder posiciones en Google. Una reconstrucción profesional &lt;strong&gt;protege y mejora&lt;/strong&gt; la visibilidad mediante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mapeo y redirección 301 de todas las URLs,&lt;/li&gt;
&lt;li&gt;migración de metadatos, datos estructurados y enlaces internos,&lt;/li&gt;
&lt;li&gt;envío del sitemap a Google Search Console,&lt;/li&gt;
&lt;li&gt;monitorización de errores de indexación durante los primeros 30 días.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;acumulación-de-deuda-técnica-por-qué-el-código-antiguo-cuesta-más-cada-mes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acumulación-de-deuda-técnica-por-qué-el-código-antiguo-cuesta-más-cada-mes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acumulación de deuda técnica: por qué el código antiguo cuesta más cada mes&lt;/h2&gt;
&lt;p&gt;La deuda técnica es el impuesto oculto que tu empresa paga por cada mes que pospones una reconstrucción. Empieza de forma pequeña. Un plugin dejó de recibir actualizaciones. El autor del tema abandonó el proyecto. Tu proveedor de alojamiento te presionó para actualizar PHP, pero lo fuiste aplazando porque el sitio “funcionaba bien.”&lt;/p&gt;
&lt;p&gt;Dos años después, el balance queda así.&lt;/p&gt;
&lt;p&gt;PHP 7.4 alcanzó el fin del soporte de seguridad en noviembre de 2022. PHP 8.0 siguió en noviembre de 2023. Si tu instalación de WordPress todavía corre en cualquiera de estas versiones, hay scanners automatizados sondeando tu sitio ahora mismo buscando exploits que nunca serán parcheados. No son amenazas teóricas. Inyección de malware, robo de credenciales, inyección de spam SEO y ransomware que afectan a sitios de pequeñas empresas se documentan diariamente.&lt;/p&gt;
&lt;p&gt;Más allá de la seguridad, las versiones antiguas de PHP arrastran el rendimiento. PHP 8.4 procesa la misma solicitud de WordPress aproximadamente un 30 a 40 por ciento más rápido que PHP 7.4. Esta mejora no cuesta nada extra una vez que migras, pero reduce significativamente el tiempo de respuesta de tu servidor (TTFB).&lt;/p&gt;
&lt;p&gt;Los plugins abandonados crean una segunda capa de riesgo. Cuando el autor de un plugin deja de mantener su código, también deja de parchear vulnerabilidades conocidas. Peor aún, el plugin puede volverse incompatible con versiones más nuevas del núcleo de WordPress, convirtiendo cada actualización de WordPress en un riesgo.&lt;/p&gt;
&lt;p&gt;La compatibilidad con navegadores es la tercera capa. Los navegadores modernos han eliminado el soporte para funcionalidades CSS y JavaScript que eran comunes hace cinco años, mientras añadían nuevas APIs poderosas que tu tema antiguo no puede aprovechar.&lt;/p&gt;
&lt;h2 id=&quot;fallos-en-core-web-vitals-cómo-google-mide-el-rendimiento-de-tu-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fallos-en-core-web-vitals-cómo-google-mide-el-rendimiento-de-tu-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fallos en Core Web Vitals: cómo Google mide el rendimiento de tu sitio&lt;/h2&gt;
&lt;p&gt;Google introdujo Core Web Vitals como señales de ranking en 2021 y ha ido aumentando su peso en el algoritmo desde entonces. En 2026, un sitio que falla estos umbrales no solo es más lento para los usuarios. Es algorítmicamente desprioritizado en los resultados de búsqueda en favor de competidores más rápidos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LCP (Largest Contentful Paint)&lt;/strong&gt; mide la rapidez con la que carga el contenido principal de una página. El umbral “bueno” de Google es 2,5 segundos o más rápido. Los fallos de LCP vienen típicamente de imágenes no optimizadas en formato JPEG en lugar de AVIF o WebP, imágenes sin atributos de ancho y alto, scripts que bloquean el renderizado, o alojamiento sin CDN.&lt;/p&gt;
&lt;p&gt;Cada 100 milisegundos adicionales de tiempo de carga reduce las conversiones en aproximadamente un 1 por ciento en sitios de e-commerce según los datos de investigación de Google. Un sitio con LCP de 4 segundos versus LCP de 1,5 segundos está estadísticamente perdiendo un 25 por ciento de conversiones potenciales solo por la velocidad de la página.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CLS (Cumulative Layout Shift)&lt;/strong&gt; mide la estabilidad visual. El umbral para “bueno” es una puntuación por debajo de 0,1. Los desplazamientos de diseño ocurren cuando los elementos se mueven después de que la página comienza a renderizarse: imágenes sin dimensiones definidas, fuentes web que cambian después de la carga (flash of unstyled text), anuncios o banners de cookies que aparecen tarde, y JavaScript que inyecta contenido dinámicamente encima del doblez.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;INP (Interaction to Next Paint)&lt;/strong&gt; mide la rapidez con la que tu página responde a cualquier interacción del usuario. El umbral “bueno” es inferior a 200 milisegundos. Un INP alto indica normalmente JavaScript excesivo en el hilo principal o temas de WordPress mal optimizados que cargan grandes bundles de JavaScript incluso en páginas donde esos scripts no son necesarios.&lt;/p&gt;
&lt;h2 id=&quot;degradación-de-la-experiencia-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#degradación-de-la-experiencia-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Degradación de la experiencia móvil&lt;/h2&gt;
&lt;p&gt;Google opera indexación mobile-first desde 2019. Esto significa que Google evalúa la versión móvil de tu sitio al decidir cómo clasificarlo. Si tu experiencia móvil está degradada, tus rankings reflejan esa degradación para todos los usuarios.&lt;/p&gt;
&lt;p&gt;Los objetivos táctiles son un problema frecuentemente ignorado. Las directrices de Google específican que los elementos interactivos deben tener un tamaño mínimo de 44 por 44 píxeles. Los menús de navegación construidos para hover de ratón no funcionan en dispositivos táctiles. Un usuario en un smartphone no puede pasar el ratón sobre un elemento de menú padre para revelar un desplegable.&lt;/p&gt;
&lt;p&gt;Los problemas de configuración del viewport en sitios más antiguos hacen que el texto se renderice a 10 píxeles cuando el usuario espera 16, forzando una interacción de pinch-to-zoom que Google penaliza explícitamente en su evaluación de compatibilidad móvil.&lt;/p&gt;
&lt;p&gt;El tratamiento de imágenes en móvil es otro factor significativo. Servir una imagen de 2500 píxeles de ancho a un smartphone con una pantalla de 390 píxeles desperdicia ancho de banda y ralentiza el tiempo de carga. Las implementaciónes modernas de WordPress usando formatos AVIF y WebP pueden reducir la carga de imágenes en un 60 a 80 por ciento sin ninguna pérdida de calidad visible.&lt;/p&gt;
&lt;h2 id=&quot;erosión-de-posiciones-seo-cómo-los-sitios-desactualizados-pierden-rankings-gradualmente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#erosión-de-posiciones-seo-cómo-los-sitios-desactualizados-pierden-rankings-gradualmente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Erosión de posiciones SEO: cómo los sitios desactualizados pierden rankings gradualmente&lt;/h2&gt;
&lt;p&gt;El declive de ranking por deuda técnica rara vez es repentino. Es una erosión lenta que se vuelve visible en tus datos de Google Search Console a lo largo de 6 a 12 meses.&lt;/p&gt;
&lt;p&gt;Las penalizaciones de contenido thin amplifican este efecto. Los sitios WordPress heredados suelen tener decenas de páginas de archivo de etiquetas, páginas de archivo basadas en fechas y páginas de autores que ya no contribuyen. Estas páginas contienen poco contenido único, diluyen tu presupuesto de crawl y señalan baja calidad de contenido al algoritmo.&lt;/p&gt;
&lt;p&gt;El desperdicio de presupuesto de crawl es un problema relacionado. En un sitio WordPress antiguo con mala estructura de URL, IDs de sesión en URLs y contenido duplicado de variaciones de parámetros generadas por plugins, Googlebot desperdicia su asignación en URLs de bajo valor en lugar de descubrir e indexar tu contenido importante.&lt;/p&gt;
&lt;p&gt;El contenido duplicado de plugins heredados es otro asesino silencioso de SEO. Los plugins más antiguos de e-commerce y de portafolio crean múltiples URLs para el mismo contenido sin etiquetas canonical, dividiendo el link equity y confundiendo a los motores de búsqueda.&lt;/p&gt;
&lt;h2 id=&quot;el-proceso-de-reconstrucción-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-proceso-de-reconstrucción-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El proceso de reconstrucción paso a paso&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Auditoría técnica y de contenido.&lt;/strong&gt; Antes de escribir una sola línea de nuevo código, una reconstrucción profesional comienza con una auditoría completa. Esto incluye hacer crawl del sitio existente para mapear todas las URLs, identificar cadenas de redirección, encontrar enlaces rotos y documentar todas las integraciones de terceros.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Estrategia y arquitectura de información.&lt;/strong&gt; Los hallazgos de la auditoría informan un documento de estrategia del sitio que define la nueva estructura de URL, jerarquía de navegación, tipos de contenido, objetivos de conversión y requisitos técnicos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Diseño.&lt;/strong&gt; La fase de diseño produce primero wireframes (para validar el layout y la jerarquía de contenido) y luego mockups de alta fidelidad, incluyendo revisión de accesibilidad contra los criterios WCAG 2.1 AA antes de que se escriba cualquier código.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 4: Desarrollo.&lt;/strong&gt; El desarrollo moderno de WordPress usa un entorno de staging que espeja el de producción. La compatibilidad con PHP 8.4 se prueba para cada plugin en el stack.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 5: Migración de contenido.&lt;/strong&gt; El contenido se migra a la nueva estructura con todos los metadatos intactos: títulos, meta descripciones, etiquetas Open Graph, marcado Schema.org, texto alternativo de imágenes y URLs canónicas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 6: Mapeo de URLs y redirecciones 301.&lt;/strong&gt; Cada URL que cambia recibe una regla de redirección documentada. Las redirecciones que faltan significan que los enlaces de otros sitios web, marcadores y URLs indexadas se convierten en callejones sin salida.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 7: Pruebas pre-lanzamiento.&lt;/strong&gt; Las pruebas cubren todas las reglas de redirección, formularios, flujos de checkout, integraciones de terceros, puntuaciones de Core Web Vitals, conformidad WCAG y verificación de metadatos SEO página por página.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 8: Lanzamiento y monitorización de 30 días.&lt;/strong&gt; Los 30 días siguientes al lanzamiento requieren monitorización activa: revisiones diarias de Google Search Console para errores 404, anomalías de indexación y comparación de tendencias de tráfico orgánico con la línea base pre-lanzamiento.&lt;/p&gt;
&lt;h2 id=&quot;el-coste-de-no-reconstruir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-coste-de-no-reconstruir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El coste de no reconstruir&lt;/h2&gt;
&lt;p&gt;La objeción más común a una reconstrucción es el coste. Lo que ese cálculo normalmente omite es el coste de no reconstruir.&lt;/p&gt;
&lt;p&gt;Un sitio con LCP deficiente y mala experiencia móvil convierte aproximadamente a la mitad de la tasa de un sitio bien optimizado. Si tu sitio actual genera 10 formularios de consulta por mes a partir de 1.000 visitantes mensuales, un sitio reconstruido con la mitad de la tasa de rebote y el doble de la tasa de conversión significa 20 consultas del mismo tráfico. Esas 10 consultas adicionales por mes significan que la inversión en reconstrucción típicamente se amortiza en 6 a 12 meses.&lt;/p&gt;
&lt;p&gt;Los costes de violación de seguridad son más difíciles de cuantificar, pero potencialmente mucho mayores. Un sitio WordPress comprometido a través de un plugin desactualizado puede usarse para enviar spam, distribuir malware a tus visitantes, minar criptomonedas en tu servidor o ser retenido para ransomware. Los costes de la eliminación profesional de malware, el tiempo de inactividad por suspensión del alojamiento, el daño reputacional y las posibles multas RGPD pueden superar con creces el coste de una reconstrucción proactiva.&lt;/p&gt;
&lt;p&gt;El tiempo de mantenimiento de desarrolladores en código heredado se acumula de forma invisible. Un sitio con PHP 7.4 y 20 plugins desactualizados requiere actualizaciones cuidadosas y que consumen mucho tiempo. Las horas acumuladas de desarrollador gastadas en mantener un sitio antiguo frágil frecuentemente superan el coste de reconstruirlo en un stack moderno en dos a tres años.&lt;/p&gt;
&lt;h2 id=&quot;cómo-elegir-un-socio-de-reconstrucción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-elegir-un-socio-de-reconstrucción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo elegir un socio de reconstrucción&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Portfolio y experiencia relevante.&lt;/strong&gt; Pide ejemplos de sitios similares al tuyo en industria, escala y funcionalidad. Busca evidencias de migraciones complejas, no solo de nuevas construcciones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capacidad de auditoría técnica.&lt;/strong&gt; Un socio de reconstrucción que no puede producir una auditoría técnica profesional de tu sitio actual antes de comenzar el trabajo no está equipado para planificar la migración correctamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Experiencia en migración SEO.&lt;/strong&gt; Pregunta específicamente cómo gestionan los cambios de URL, las redirecciones 301 y la monitorización del ranking post-lanzamiento. Esta es el área donde las reconstrucciones más frecuentemente salen mal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soporte post-lanzamiento.&lt;/strong&gt; Una reconstrucción no está terminada en el lanzamiento. Pregunta qué soporte está incluido para el período de monitorización de 30 días.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comúnicación y transparencia.&lt;/strong&gt; Un buen socio comunica claramente sobre los intercambios de decisiones, explica por qué está recomendando elecciones técnicas específicas y te involucra en decisiones que afectan tu contenido y UX.&lt;/p&gt;
&lt;h2 id=&quot;siguiente-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#siguiente-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Siguiente paso&lt;/h2&gt;
&lt;p&gt;Comprueba tu sitio en &lt;a href=&quot;https://pagespeed.web.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;PageSpeed Insights&lt;/a&gt;. Si identificaste al menos 3 de las 7 señales descritas, es hora de actuar.&lt;/p&gt;
&lt;p&gt;Ayudo a empresas a planificar y ejecutar &lt;a href=&quot;/es/website-redesign-and-modernization/&quot;&gt;reconstrucciones y modernizaciones de sitios web&lt;/a&gt; que protegen los rankings de búsqueda, mejoran las tasas de conversión y construyen sobre una base técnica que no necesitará otra reconstrucción de emergencia en dos años. &lt;a href=&quot;/es/contacto/&quot;&gt;Contáctame&lt;/a&gt; para una auditoría técnica gratuita y un plan de reconstrucción adaptado a los objetivos de tu negocio.&lt;/p&gt;</content:encoded><category>wordpress</category><category>development</category><category domain="tag">reconstruccion-web</category><category domain="tag">modernizacion</category><category domain="tag">core-web-vitals</category><category domain="tag">rediseño</category><category domain="tag">ux</category><enclosure url="https://wppoland.com/images/og/rebuilding-website.jpg" type="image/jpeg"/></item><item><title>Headless WordPress, Next.js frente a Astro 2026: la matriz de decisión de un ingeniero sénior</title><link>https://wppoland.com/es/headless-wordpress-nextjs-vs-astro-2026/</link><guid isPermaLink="true">https://wppoland.com/es/headless-wordpress-nextjs-vs-astro-2026/</guid><description>Next.js y Astro están ambos en el anillo Adopt de nuestro Tech Radar Q3 2026. Decidir entre ellos para un front-end headless de WordPress no es una cuestión de gusto. Es una cuestión sobre superficie interactiva, coste de construcción y en qué mercado de contratación te encuentras.</description><pubDate>Sun, 05 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;headless-wordpress-nextjs-frente-a-astro-2026-la-matriz-de-decisión-de-un-ingeniero-sénior&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#headless-wordpress-nextjs-frente-a-astro-2026-la-matriz-de-decisión-de-un-ingeniero-sénior&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Headless WordPress, Next.js frente a Astro 2026: la matriz de decisión de un ingeniero sénior&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/en/tech-radar/&quot;&gt;Astro 5+ y Next.js 15 están en el anillo Adopt de nuestro Tech Radar Q3 2026&lt;/a&gt;. Ambos enviados a producción. Ambos estables. Ambos nuestros para recomendar sin reservas. La pregunta que aterriza en briefings de cliente cada semana, “¿deberíamos ir con Astro o Next.js para nuestro front headless de WordPress?”, se lee como una cuestión de gusto. No lo es.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Ir headless no es una elección de moda; es el momento en que tu equipo deja de pagar por la abstracción equivocada.”&lt;/p&gt;
&lt;p&gt;Lee Robinson, VP DX en Vercel, &lt;a href=&quot;https://vercel.com/frontier&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;keynote del Frontier 2025&lt;/a&gt;, 2025-09-10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El encuadre correcto de la misma decisión: ¿estás pagando por la abstracción equivocada con React en un sitio de contenido, o estás pagando por la abstracción equivocada con islas cuando tu producto es interactivo? La respuesta depende de lo que la página realmente hace, no de qué framework tuvo la mejor keynote este trimestre.&lt;/p&gt;
&lt;h2 id=&quot;tldr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Astro 5+ por defecto para sitios pesados en contenido donde los Core Web Vitals están vinculados a los ingresos.&lt;/li&gt;
&lt;li&gt;Next.js 15 por defecto para UI de producto pesadas en aplicación con React Server Components y streaming.&lt;/li&gt;
&lt;li&gt;Ambos pueden leer el mismo endpoint REST o GraphQL de WordPress; al back-end no le importa.&lt;/li&gt;
&lt;li&gt;Contrata para la carga de trabajo. React (y Next.js) tiene una mayor reserva de talento en Polonia; Astro es una reserva más pequeña y selectiva.&lt;/li&gt;
&lt;li&gt;Las pilas mixtas son válidas. Marketing en Astro, dashboard en Next.js, un origen de WordPress por debajo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;qué-hay-detrás-de-la-elección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hay-detrás-de-la-elección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué hay detrás de la elección&lt;/h2&gt;
&lt;p&gt;Astro y Next.js resuelven problemas diferentes aunque ambos puedan renderizar WordPress headless.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Astro 5+&lt;/strong&gt; es un kit de herramientas de renderizado multipágina que por defecto envía cero JavaScript al cliente. Cada página es HTML por defecto. Los componentes interactivos se incorporan vía “islas”. El resultado de construcción para sitios de contenido es pequeño y rápido en cachés frías. Astro está en nuestro &lt;a href=&quot;/en/tech-radar/astro-5/&quot;&gt;anillo Adopt&lt;/a&gt; por esa razón.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Next.js 15&lt;/strong&gt; es un kit de herramientas de aplicación React-first. Ahora envía React 19 Server Components en producción, con streaming e hidratación selectiva. En páginas pesadas en contenido ya no es la penalización de bundle por defecto que era hace unos años. Está en nuestro &lt;a href=&quot;/en/tech-radar/nextjs-15-app-router-rsc/&quot;&gt;anillo Adopt&lt;/a&gt; para UI pesadas en aplicación.&lt;/p&gt;
&lt;p&gt;La historia de WordPress headless es la misma en ambos: WordPress es el back-end editorial, el front renderiza desde la REST API o GraphQL. La elección es a qué renderizador confías qué carga de trabajo.&lt;/p&gt;
&lt;h2 id=&quot;matriz-de-decisión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#matriz-de-decisión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Matriz de decisión&lt;/h2&gt;




























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Pregunta&lt;/th&gt;&lt;th&gt;Astro 5+&lt;/th&gt;&lt;th&gt;Next.js 15&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Principalmente contenido de formato largo, blog, marketing&lt;/td&gt;&lt;td&gt;Por defecto&lt;/td&gt;&lt;td&gt;Posible, ya no equivocado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Dashboards autenticados, formularios complejos&lt;/td&gt;&lt;td&gt;Posible, más trabajo&lt;/td&gt;&lt;td&gt;Por defecto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;UI pesada en tiempo real, websockets&lt;/td&gt;&lt;td&gt;Evitar&lt;/td&gt;&lt;td&gt;Por defecto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Catálogo de WooCommerce, páginas de producto SSR&lt;/td&gt;&lt;td&gt;Ambos sirven&lt;/td&gt;&lt;td&gt;Ambos sirven&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Equipo editorial grande usando WordPress&lt;/td&gt;&lt;td&gt;Ambos sirven&lt;/td&gt;&lt;td&gt;Ambos sirven&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pequeña superficie interactiva&lt;/td&gt;&lt;td&gt;Astro gana&lt;/td&gt;&lt;td&gt;Next.js funciona, menos óptimo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gran superficie interactiva&lt;/td&gt;&lt;td&gt;Astro lucha contra ti&lt;/td&gt;&lt;td&gt;Next.js gana&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edge SSR con bajo TTFB&lt;/td&gt;&lt;td&gt;Ambos corren en Cloudflare Workers&lt;/td&gt;&lt;td&gt;Ambos corren en Cloudflare Workers&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Contratar séniores en mercado polaco&lt;/td&gt;&lt;td&gt;Reserva más pequeña&lt;/td&gt;&lt;td&gt;Reserva más grande&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TypeScript, Tailwind, design tokens&lt;/td&gt;&lt;td&gt;Primera clase en ambos&lt;/td&gt;&lt;td&gt;Primera clase en ambos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;qué-nos-dice-el-mercado-de-contratación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-nos-dice-el-mercado-de-contratación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué nos dice el mercado de contratación&lt;/h2&gt;
&lt;p&gt;El argumento de que “React gana porque más gente sabe React” es real pero suena rancio sin números.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nofluffjobs.com/insights/raport-rynek-pracy-it/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;No Fluff Jobs Rynek pracy IT 2025/2026&lt;/a&gt; reporta React en el 8.4 por ciento de todas las ofertas de TI en Polonia en 2025 y TypeScript en el 9.2 por ciento. JavaScript por sí solo aparece en el 10.9 por ciento. Astro todavía no es una palabra clave de hard skill del top-15 en ningún informe polaco.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://justjoin.it/raport-wynagrodzen&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Just Join IT, Co z tym Eldorado? 2024/2025&lt;/a&gt; muestra a JavaScript por delante con el 11.24 por ciento de las ofertas, Java con el 10.49 por ciento, AI/ML todavía pequeño en el 0.85 por ciento pero creciendo más rápido en términos salariales. Las medianas sénior B2B en roles JS siguen la mediana sénior de 24360 PLN netos al mes.&lt;/p&gt;
&lt;p&gt;¿La versión polémica? Un sénior que conoce Astro es más raro que un sénior que conoce Next.js. Eso no es razón para elegir Next.js por defecto. Es razón para ser explícito al elegir Astro y dimensionar el compromiso para que dos séniores no se vayan al mismo tiempo.&lt;/p&gt;
&lt;h2 id=&quot;tres-escenarios-reales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tres-escenarios-reales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tres escenarios reales&lt;/h2&gt;
&lt;h3 id=&quot;escenario-uno-sitio-pesado-en-contenido-que-aún-crece&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-uno-sitio-pesado-en-contenido-que-aún-crece&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario uno, sitio pesado en contenido que aún crece&lt;/h3&gt;
&lt;p&gt;Un editor que corre WordPress con 3000 artículos y 50000 usuarios mensuales. El tráfico móvil se inclina hacia dispositivos antiguos. El equipo editorial necesita el bucle previsualizar-y-publicar de WordPress sin cambios. La conversión es tiempo de lectura y registros por correo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elección: Astro 5+.&lt;/strong&gt; Las islas zero-JS mantienen el LCP de caché fría por debajo de un segundo en dispositivos clase Moto-G. WordPress sigue siendo el back-end editorial. El front se reconstruye al publicar. Cloudflare Workers sirven desde la edge de la UE.&lt;/p&gt;
&lt;h3 id=&quot;escenario-dos-b2b-saas-con-sitio-de-marketing-y-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-dos-b2b-saas-con-sitio-de-marketing-y-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario dos, B2B SaaS con sitio de marketing y dashboard&lt;/h3&gt;
&lt;p&gt;Una empresa SaaS que corre WordPress para marketing y una aplicación React separada para el producto. Las páginas de marketing tienen que posicionar en búsqueda orgánica y convertir; el dashboard de producto tiene estado autenticado y actualizaciones en tiempo real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elección: mixto.&lt;/strong&gt; Astro para la superficie de marketing, Next.js 15 para el dashboard. Comparten el mismo origen de WordPress para contenido, la misma tubería de despliegue Cloudflare Workers y los mismos tipos TypeScript. Dos construcciones, una pila de conocimiento.&lt;/p&gt;
&lt;h3 id=&quot;escenario-tres-tienda-woocommerce-headless-con-recomendaciones-personalizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-tres-tienda-woocommerce-headless-con-recomendaciones-personalizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario tres, tienda WooCommerce headless con recomendaciones personalizadas&lt;/h3&gt;
&lt;p&gt;Una tienda WooCommerce con 200 productos, recomendaciones personalizadas, stock en tiempo real y un flujo de checkout que habla con varias pasarelas de pago. La redacción sigue siendo WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elección: Next.js 15 con React Server Components.&lt;/strong&gt; El SSR con streaming mantiene rápida la carga percibida. Los Server Components dejan que el catálogo se renderice del lado del servidor sin inundar al cliente con JS. WooCommerce REST o Store API atrás. Cloudflare Workers aloja el front.&lt;/p&gt;
&lt;h2 id=&quot;la-parte-polémica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-parte-polémica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La parte polémica&lt;/h2&gt;
&lt;p&gt;Poner un solo framework por defecto para todo es una bandera roja de ingeniero sénior. El comprador que oye “siempre usamos Next.js” oye una tienda optimizada para una herramienta, no para su problema. El comprador que oye “siempre usamos Astro” oye lo inverso. Un equipo sénior elige por la carga de trabajo, dice por qué y escribe la decisión.&lt;/p&gt;
&lt;p&gt;Hemos escrito la nuestra dos veces: una en el &lt;a href=&quot;/en/tech-radar/&quot;&gt;nuestro Tech Radar (Q3 2026)&lt;/a&gt;, otra en el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pilar Headless WordPress&lt;/a&gt;. Cuando la carga de trabajo cambia, el radar se mueve y actualizamos ambos.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-esto-en-el-clúster&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-esto-en-el-clúster&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja esto en el clúster&lt;/h2&gt;
&lt;p&gt;Este artículo apoya el &lt;a href=&quot;/en/services/headless-wordpress/&quot;&gt;pilar de servicio Headless WordPress&lt;/a&gt;. Para contexto más amplio, mira el &lt;a href=&quot;/en/ai-llm-visibility-geo-playbook-2026/&quot;&gt;playbook de visibilidad AI y LLM&lt;/a&gt; sobre cómo hacer cualquiera de estos fronts realmente encontrable, y el &lt;a href=&quot;/en/llmo-strategic-summary/&quot;&gt;resumen estratégico LLMO&lt;/a&gt; sobre cómo esa visibilidad se traduce en citas de motores generativos.&lt;/p&gt;
&lt;h2 id=&quot;preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preguntas frecuentes&lt;/h2&gt;
&lt;h3 id=&quot;es-astro-realmente-más-rápido-que-nextjs-en-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#es-astro-realmente-más-rápido-que-nextjs-en-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Es Astro realmente más rápido que Next.js en producción?&lt;/h3&gt;
&lt;p&gt;Para sitios pesados en contenido con baja interactividad, sí, mensurablemente así en cachés frías y en móvil de gama media. Para UI de producto pesadas en aplicación, Next.js 15 con React Server Components cierra la mayor parte de la brecha. La métrica correcta es total blocking time e INP bajo tráfico realista, no benchmarks sintéticos.&lt;/p&gt;
&lt;h3 id=&quot;deberíamos-esperar-a-las-server-actions-de-astro-o-a-las-server-functions-de-nextjs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deberíamos-esperar-a-las-server-actions-de-astro-o-a-las-server-functions-de-nextjs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Deberíamos esperar a las server actions de Astro o a las server functions de Next.js?&lt;/h3&gt;
&lt;p&gt;Ambas llegan en 2026. Espera solo si tu construcción depende de un flag de característica específico. El patrón es lo bastante estable para que las versiones futuras iteren sobre él, no lo rompan.&lt;/p&gt;
&lt;h3 id=&quot;cloudflare-workers-corre-los-dos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-workers-corre-los-dos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Cloudflare Workers corre los dos?&lt;/h3&gt;
&lt;p&gt;Sí. Astro y Next.js compilan ambos a un runtime compatible con Workers. Nuestro &lt;a href=&quot;/en/tech-radar/cloudflare-workers-pages/&quot;&gt;Tech Radar pone Cloudflare Workers + Pages en Adopt&lt;/a&gt; por esa razón: coste predecible, jurisdicción de la UE, TTFB más bajo en nuestro tráfico europeo.&lt;/p&gt;
&lt;h3 id=&quot;dónde-publicáis-vuestros-benchmarks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-publicáis-vuestros-benchmarks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Dónde publicáis vuestros benchmarks?&lt;/h3&gt;
&lt;p&gt;El primer protocolo de benchmark, Astro 5 frente a Next.js 15 TTI en una tienda WooCommerce de 50 productos, vive en &lt;a href=&quot;/en/benchmarks/astro-vs-nextjs-tti-woocommerce/&quot;&gt;/en/benchmarks/astro-vs-nextjs-tti-woocommerce/&lt;/a&gt;. La metodología está publicada; los números son explícitamente preliminares hasta que la corrida reproducible termine en el Q3 2026. No publicamos números que no podemos reproducir.&lt;/p&gt;
&lt;h3 id=&quot;cómo-empiezo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-empiezo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Cómo empiezo?&lt;/h3&gt;
&lt;p&gt;Cuéntanos la carga de trabajo. ¿Tiempo de lectura y posicionamiento? Nos inclinaremos por Astro. ¿Estado autenticado y tiempo real? Nos inclinaremos por Next.js 15. ¿Ambos? Pila mixta en un origen. El compromiso es sénior B2B, jurisdicción de la UE, precio individual.&lt;/p&gt;</content:encoded><category>wordpress</category><category>headless</category><category domain="tag">astro</category><category domain="tag">nextjs</category><category domain="tag">headless-wordpress</category><category domain="tag">react-server-components</category><category domain="tag">cloudflare-workers</category><category domain="tag">tech-radar</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>WordPress 7.0 vs Astro 6 tras la adquisición de Cloudflare - ¿quién gana en 2026?</title><link>https://wppoland.com/es/wordpress-7-vs-astro-6-cloudflare-comparacion-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-7-vs-astro-6-cloudflare-comparacion-2026/</guid><description>WordPress 7.0 con AI Client vs Astro 6 tras la adquisición de Cloudflare. Comparativa de velocidad, coste, SEO y seguridad. Mi opinión tras 20 años como desarrollador WP - cuándo migrar y cuándo quedarse.</description><pubDate>Sat, 04 Apr 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;No, WordPress no se está muriendo. Pero en 2026, para el 70 % de los sitios web empresariales, Astro 6 + Cloudflare es simplemente más barato, más rápido y más seguro.&lt;/strong&gt; Esto no es clickbait - es la conclusión tras 20 años trabajando con WordPress y más de 500 proyectos completados.&lt;/p&gt;
&lt;p&gt;He probado ambas plataformas esta semana. WordPress 7.0 RC1 con AI Client frente a Astro 6.1 en Cloudflare Pages. La diferencia en PageSpeed y costes de hosting es abrumadora. Tiempo de carga: WordPress 2,1 segundos vs Astro 280 milisegundos. Coste anual de hosting: WordPress 600+ EUR vs Astro 0 EUR (plan gratuito de Cloudflare).&lt;/p&gt;
&lt;p&gt;Pero los números no lo son todo. En este artículo mostraré cuándo WordPress 7.0 sigue ganando, cuándo Astro 6 es la mejor opción y cuándo tiene sentido combinar ambos en una solución híbrida.&lt;/p&gt;
&lt;h2 id=&quot;wordpress-70---qué-obtenemos-realmente-el-9-de-abril&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-70---qué-obtenemos-realmente-el-9-de-abril&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress 7.0 - qué obtenemos realmente el 9 de abril&lt;/h2&gt;
&lt;p&gt;WordPress 7.0 es la actualización más importante en años. Pero hay que separar el marketing de la realidad.&lt;/p&gt;
&lt;h3 id=&quot;ai-client-y-abilities-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ai-client-y-abilities-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;AI Client y Abilities API&lt;/h3&gt;
&lt;p&gt;AI Client es &lt;strong&gt;infraestructura&lt;/strong&gt;, no un redactor de IA listo para usar. WordPress 7.0 ofrece una API unificada para comunicarse con modelos de IA - Claude, GPT, Gemini. Requiere una clave de API externa y configuración. Abilities API permite a los agentes de IA descubrir y utilizar la funcionalidad de WordPress de forma programática.&lt;/p&gt;
&lt;p&gt;Es un paso importante, pero no una revolución para el usuario medio. Los beneficios los verán principalmente los desarrolladores que construyan plugins basados en IA.&lt;/p&gt;
&lt;h3 id=&quot;colaboración-en-tiempo-real-gutenberg-fase-3&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#colaboración-en-tiempo-real-gutenberg-fase-3&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Colaboración en tiempo real (Gutenberg Fase 3)&lt;/h3&gt;
&lt;p&gt;Colaboración en tiempo real en el editor de bloques - varios editores trabajan simultáneamente en la misma página. Es una función que llevábamos esperando desde el inicio de Gutenberg. En la práctica funciona bien para equipos editoriales, pero requiere una conexión estable al servidor.&lt;/p&gt;
&lt;h3 id=&quot;panel-de-administración-renovado-y-nuevos-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#panel-de-administración-renovado-y-nuevos-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Panel de administración renovado y nuevos bloques&lt;/h3&gt;
&lt;p&gt;Interfaz de administración actualizada con navegación mejorada y nuevos bloques. Visualmente es un paso adelante, pero la arquitectura subyacente sigue siendo la misma - PHP 8.3, MySQL, servidor tradicional.&lt;/p&gt;
&lt;h3 id=&quot;ventajas-y-desventajas-de-wordpress-70&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-y-desventajas-de-wordpress-70&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas y desventajas de WordPress 7.0&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El mejor editor de contenido para usuarios no técnicos&lt;/li&gt;
&lt;li&gt;Enorme ecosistema de plugins (60.000+)&lt;/li&gt;
&lt;li&gt;WooCommerce para comercio electrónico&lt;/li&gt;
&lt;li&gt;AI Client como base para futuras integraciones&lt;/li&gt;
&lt;li&gt;Colaboración en tiempo real para equipos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Código excesivo - el núcleo de WordPress 7.0 pesa más de 70 MB&lt;/li&gt;
&lt;li&gt;Superficie de ataque - cada plugin es una vulnerabilidad de seguridad potencial&lt;/li&gt;
&lt;li&gt;Costes de alojamiento - VPS, SSL, caché, copias de seguridad, monitorización&lt;/li&gt;
&lt;li&gt;El rendimiento requiere una optimización agresiva (caché, CDN, Object Cache)&lt;/li&gt;
&lt;li&gt;Actualizaciones de seguridad cada pocas semanas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;astro-6-tras-la-adquisición-de-cloudflare---por-qué-todo-el-mundo-habla-de-ello&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro-6-tras-la-adquisición-de-cloudflare---por-qué-todo-el-mundo-habla-de-ello&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro 6 tras la adquisición de Cloudflare - por qué todo el mundo habla de ello&lt;/h2&gt;
&lt;p&gt;El 16 de enero de 2026, Cloudflare adquirió Astro. El 10 de marzo se lanzó Astro 6 - la primera versión con integración total en Cloudflare. Los resultados son inmediatos.&lt;/p&gt;
&lt;h3 id=&quot;servidor-de-desarrollo-en-workerd-dev--prod&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#servidor-de-desarrollo-en-workerd-dev--prod&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Servidor de desarrollo en workerd (dev = prod)&lt;/h3&gt;
&lt;p&gt;Este es un cambio que elimina toda una categoría de bugs. El servidor de desarrollo de Astro 6 funciona sobre workerd - el mismo runtime que Cloudflare Workers en producción. Por primera vez en la historia de los frameworks, lo que ves localmente es idéntico a lo que ven los usuarios. Se acabó el “funciona en mi máquina”.&lt;/p&gt;
&lt;h3 id=&quot;live-content-collections&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#live-content-collections&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Live Content Collections&lt;/h3&gt;
&lt;p&gt;Las Content Collections de Astro 6 se actualizan en tiempo real durante el desarrollo. Edita un archivo markdown y la página se actualiza al instante. Añade una nueva entrada y aparece en el índice sin reiniciar el servidor. Es una experiencia de edición de contenido que se acerca a WordPress, pero con tipado TypeScript.&lt;/p&gt;
&lt;h3 id=&quot;csp-integrado-y-fonts-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#csp-integrado-y-fonts-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSP integrado y Fonts API&lt;/h3&gt;
&lt;p&gt;Astro 6 genera Content Security Policy automáticamente, eliminando los ataques XSS sin configuración. La nueva Fonts API optimiza la carga de fuentes con precarga y fallbacks integrados. En WordPress, estas cosas requieren plugins y horas de configuración.&lt;/p&gt;
&lt;h3 id=&quot;compilador-experimental-en-rust&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#compilador-experimental-en-rust&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Compilador experimental en Rust&lt;/h3&gt;
&lt;p&gt;Astro está probando un compilador escrito en Rust que acelera las compilaciones entre 3 y 5 veces. Para sitios grandes con miles de páginas, supone la diferencia entre una compilación de 3 minutos y una de 40 segundos.&lt;/p&gt;
&lt;h3 id=&quot;bindings-nativos-de-cloudflare&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bindings-nativos-de-cloudflare&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bindings nativos de Cloudflare&lt;/h3&gt;
&lt;p&gt;KV, D1, R2, Durable Objects - disponibles localmente en el servidor de desarrollo. Puedes construir funcionalidades dinámicas (formularios, APIs, caché) sin salir del ecosistema Cloudflare. Sin costes de infraestructura adicional.&lt;/p&gt;
&lt;h2 id=&quot;comparativa-directa-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparativa-directa-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparativa directa 2026&lt;/h2&gt;







































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Característica&lt;/th&gt;&lt;th&gt;WordPress 7.0&lt;/th&gt;&lt;th&gt;Astro 6 + Cloudflare&lt;/th&gt;&lt;th&gt;Ganador&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Tiempo de carga&lt;/td&gt;&lt;td&gt;1,5-4 s (media)&lt;/td&gt;&lt;td&gt;Menos de 500 ms (a menudo 200-300 ms)&lt;/td&gt;&lt;td&gt;Astro&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Coste anual de hosting&lt;/td&gt;&lt;td&gt;200-750+ EUR&lt;/td&gt;&lt;td&gt;0-75 EUR (Cloudflare Pages)&lt;/td&gt;&lt;td&gt;Astro&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Seguridad&lt;/td&gt;&lt;td&gt;Gran superficie de ataque&lt;/td&gt;&lt;td&gt;Mínima (HTML estático + islas)&lt;/td&gt;&lt;td&gt;Astro&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fácilidad de edición&lt;/td&gt;&lt;td&gt;La mejor (editor de bloques)&lt;/td&gt;&lt;td&gt;Buena (Content Collections + CMS)&lt;/td&gt;&lt;td&gt;WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SEO / Core Web Vitals&lt;/td&gt;&lt;td&gt;Bueno tras optimización&lt;/td&gt;&lt;td&gt;100/100 casí siempre&lt;/td&gt;&lt;td&gt;Astro&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Escalabilidad&lt;/td&gt;&lt;td&gt;Media (requiere caché)&lt;/td&gt;&lt;td&gt;Extrema (edge, CDN global)&lt;/td&gt;&lt;td&gt;Astro&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ecosistema de plugins&lt;/td&gt;&lt;td&gt;60.000+&lt;/td&gt;&lt;td&gt;Integraciones npm + Cloudflare&lt;/td&gt;&lt;td&gt;WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Comercio electrónico&lt;/td&gt;&lt;td&gt;WooCommerce (plataforma completa)&lt;/td&gt;&lt;td&gt;Sin solución nativa (Shopify/Snipcart)&lt;/td&gt;&lt;td&gt;WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Curva de aprendizaje&lt;/td&gt;&lt;td&gt;Fácil para contenido, difícil para código&lt;/td&gt;&lt;td&gt;Media (HTML + JS)&lt;/td&gt;&lt;td&gt;Empate&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Costes de mantenimiento&lt;/td&gt;&lt;td&gt;Altos (actualizaciones, backup, seguridad)&lt;/td&gt;&lt;td&gt;Mínimos (desplegar y olvidarse)&lt;/td&gt;&lt;td&gt;Astro&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Resultado: Astro 7:2 WordPress (1 empate)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esto no significa que Astro sea mejor en todos los escenarios. WordPress gana donde importan la edición de contenido por usuarios no técnicos y las soluciones de comercio electrónico ya listas. Pero para sitios de contenido, landing pages y webs corporativas, la ventaja de Astro es aplastante.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-migrar-en-2026---mi-lista-de-verificación-de-8-puntos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-migrar-en-2026---mi-lista-de-verificación-de-8-puntos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo migrar en 2026 - mi lista de verificación de 8 puntos&lt;/h2&gt;
&lt;p&gt;La migración tiene sentido cuando cumples al menos 5 de los 8 criterios:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sitio de contenido, blog o landing page&lt;/strong&gt; - Astro está diseñado para esto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PageSpeed por debajo de 80&lt;/strong&gt; a pesar de la optimización de WordPress - es un problema de arquitectura, no de configuración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Costes de hosting superiores a 50 EUR/mes&lt;/strong&gt; - Cloudflare Pages elimina este coste&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problemás de seguridad&lt;/strong&gt; - parcheo constante de plugins, ataques de fuerza bruta, malware&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El equipo de desarrollo conoce JavaScript/TypeScript&lt;/strong&gt; - la barrera de entrada es mínima&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No se necesita WooCommerce&lt;/strong&gt; ni paneles de usuario complejos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El SEO es prioritario&lt;/strong&gt; - los Core Web Vitals impactan directamente en el posicionamiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El sitio opera en varios países&lt;/strong&gt; - el despliegue en edge de Cloudflare proporciona un TTFB bajo a nivel global&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si tienes 3 o menos - quédate con WordPress 7.0. Si tienes 4 - considera una solución híbrida. Si tienes 5 o más - la migración merecerá la pena.&lt;/p&gt;
&lt;h2 id=&quot;caso-de-estudio---antes-y-después&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio---antes-y-después&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de estudio - antes y después&lt;/h2&gt;
&lt;h3 id=&quot;cliente-de-varsovia---sitio-web-corporativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cliente-de-varsovia---sitio-web-corporativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cliente de Varsovia - sitio web corporativo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Antes:&lt;/strong&gt; WordPress 6.7 + Elementor, PageSpeed 41/100, tiempo de carga 3,2 s, hosting 70 EUR/mes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Después:&lt;/strong&gt; Astro 6 + Cloudflare Pages, PageSpeed 100/100, tiempo de carga 240 ms, hosting 0 EUR/mes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro anual:&lt;/strong&gt; 840 EUR solo en hosting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ROI de la migración:&lt;/strong&gt; recuperación en 4 meses&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wppolandcom---este-mismo-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wppolandcom---este-mismo-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;wppoland.com - este mismo sitio&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Más de 4.700 páginas en 6 idiomas&lt;/li&gt;
&lt;li&gt;Tiempo de compilación: 155 segundos en Cloudflare Pages&lt;/li&gt;
&lt;li&gt;PageSpeed: 100/100 de forma consistente&lt;/li&gt;
&lt;li&gt;Coste de hosting: 0 EUR (plan gratuito de Cloudflare)&lt;/li&gt;
&lt;li&gt;Anteriormente en WordPress - el coste de hosting era de 40 EUR/mes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;cómo-es-la-migración-de-wordpress-a-astro-en-la-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-es-la-migración-de-wordpress-a-astro-en-la-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo es la migración de WordPress a Astro en la práctica&lt;/h2&gt;
&lt;h3 id=&quot;paso-1---audita-tu-sitio-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1---audita-tu-sitio-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1 - audita tu sitio WordPress&lt;/h3&gt;
&lt;p&gt;Cuenta los tipos de contenido personalizados, lista todos los plugins y sus funciones, mapea cada plantilla. Esto determina la complejidad de la migración.&lt;/p&gt;
&lt;h3 id=&quot;paso-2---exporta-el-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2---exporta-el-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2 - exporta el contenido&lt;/h3&gt;
&lt;p&gt;WP CLI o REST API para exportar entradas, páginas y medios a formatos markdown o JSON. Herramientas como &lt;code&gt;wp-to-astro&lt;/code&gt; automatizan la mayor parte del trabajo.&lt;/p&gt;
&lt;h3 id=&quot;paso-3---construye-las-plantillas-astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3---construye-las-plantillas-astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3 - construye las plantillas Astro&lt;/h3&gt;
&lt;p&gt;Recrea los layouts y componentes en sintaxis .astro. Tailwind CSS funciona de forma idéntica. La mayoría de las plantillas WP tienen equivalentes directos en Astro.&lt;/p&gt;
&lt;h3 id=&quot;paso-4---content-collections&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4---content-collections&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4 - Content Collections&lt;/h3&gt;
&lt;p&gt;Configura los tipos de contenido con validación Zod. Es el equivalente a los custom post types, pero con tipado TypeScript completo.&lt;/p&gt;
&lt;h3 id=&quot;paso-5---hosting-y-dns&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5---hosting-y-dns&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5 - hosting y DNS&lt;/h3&gt;
&lt;p&gt;Configura Cloudflare Pages - conecta tu repositorio Git, configura el dominio y el DNS. Las compilaciones se lanzan automáticamente en cada push.&lt;/p&gt;
&lt;h3 id=&quot;paso-6---redirecciones-11&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-6---redirecciones-11&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 6 - redirecciones 1:1&lt;/h3&gt;
&lt;p&gt;Mapea todas las URLs antiguas de WordPress a las nuevas rutas de Astro. Es fundamental para preservar el posicionamiento SEO. Cloudflare lo gestiona mediante &lt;code&gt;_redirects&lt;/code&gt; o middleware.&lt;/p&gt;
&lt;h3 id=&quot;paso-7---tests-y-envío-a-gsc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-7---tests-y-envío-a-gsc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 7 - tests y envío a GSC&lt;/h3&gt;
&lt;p&gt;Rastreo completo con Screaming Frog, tests de Lighthouse en cada plantilla, envío del nuevo sitemap a Google Search Console.&lt;/p&gt;
&lt;h3 id=&quot;paso-8---monitorización-durante-30-días&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-8---monitorización-durante-30-días&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 8 - monitorización durante 30 días&lt;/h3&gt;
&lt;p&gt;Hace seguimiento de posiciones, indexación y Core Web Vitals durante el primer mes. En el 95% de los casos, el posicionamiento se mantiene estable o mejora gracias a las ganancias en CWV.&lt;/p&gt;
&lt;h2 id=&quot;solución-híbrida---wordpress--astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-híbrida---wordpress--astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución híbrida - WordPress + Astro&lt;/h2&gt;
&lt;p&gt;No tienes que elegir uno u otro. Cada vez más empresas en 2026 utilizan una arquitectura híbrida:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; como CMS headless - panel de administración para gestionar el contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Astro&lt;/strong&gt; como frontend - genera páginas estáticas a partir de los datos de WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WPGraphQL&lt;/strong&gt; o REST API como puente entre ambos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Pages&lt;/strong&gt; como hosting del frontend&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los editores trabajan en la interfaz familiar de WordPress. Los usuarios ven un sitio Astro ultrarrápido. Los desarrolladores obtienen un stack moderno. Lo mejor de ambos mundos.&lt;/p&gt;
&lt;h2 id=&quot;mi-predicción-para-2026-2027&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mi-predicción-para-2026-2027&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mi predicción para 2026-2027&lt;/h2&gt;
&lt;p&gt;Tras 20 años con WordPress y cientos de proyectos completados, veo una tendencia clara:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress&lt;/strong&gt; sigue siendo el rey para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiendas WooCommerce&lt;/li&gt;
&lt;li&gt;Sitios con equipos editoriales no técnicos&lt;/li&gt;
&lt;li&gt;Proyectos que requieren plugins ya preparados&lt;/li&gt;
&lt;li&gt;Pequeñas empresas que necesitan lanzarse rápido y con poco presupuesto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Astro + Cloudflare&lt;/strong&gt; se hace con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sitios de contenido y blogs orientados al rendimiento&lt;/li&gt;
&lt;li&gt;Webs corporativas y landing pages&lt;/li&gt;
&lt;li&gt;Documentación técnica&lt;/li&gt;
&lt;li&gt;Sitios multilingüe con alcance global&lt;/li&gt;
&lt;li&gt;Proyectos donde el SEO y los Core Web Vitals son la prioridad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mi estimación: a finales de 2027, Astro (y frameworks estáticos similares) acaparará entre el 30 y el 40% del mercado de contenido que actualmente funciona con WordPress. No porque WordPress sea malo - sino porque Astro está mejor adaptado para este caso de uso específico.&lt;/p&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;WordPress 7.0 es una actualización sólida, pero no cambia la arquitectura fundamental de la plataforma. Astro 6 tras la adquisición de Cloudflare supone un cambio de reglas del juego para los sitios de contenido.&lt;/p&gt;
&lt;p&gt;¿Construyes una tienda online? WordPress. ¿Construyes un sitio empresarial, blog o landing page con foco en rendimiento y SEO? Astro 6 + Cloudflare.&lt;/p&gt;
&lt;p&gt;¿No estás seguro? &lt;a href=&quot;/es/contacto/&quot;&gt;Escríbeme&lt;/a&gt; - tras 20 años con WordPress y un portfolio Astro en crecimiento, puedo orientarte con objetividad sobre qué es mejor para tu caso concreto.&lt;/p&gt;
&lt;p&gt;Si has decidido que Astro es la opción correcta, descubre más sobre &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;mis servicios de desarrollo con Astro&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Mariusz Szatkowski - desarrollador WordPress y Astro con 20 años de experiencia. Organizador de WordCamp Gdynia, contribuidor al núcleo de WordPress. Actualmente construye sitios en ambas plataformas para clientes de Polonia y toda Europa.&lt;/em&gt;&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category>development</category><category>architecture</category><category domain="tag">astro</category><category domain="tag">astro-6</category><category domain="tag">wordpress-7</category><category domain="tag">cloudflare</category><category domain="tag">comparison</category><category domain="tag">migration</category><category domain="tag">performance</category><category domain="tag">headless</category><enclosure url="https://wppoland.com/images/og/wp-astro.jpg" type="image/jpeg"/></item><item><title>EmDash vs WordPress, comparación de características para 2026</title><link>https://wppoland.com/es/emdash-vs-wordpress-feature-comparison-2026/</link><guid isPermaLink="true">https://wppoland.com/es/emdash-vs-wordpress-feature-comparison-2026/</guid><description>Una tabla de comparación detallada entre EmDash CMS y WordPress en arquitectura, seguridad, plugins, funciones de IA, modelo de contenido, alojamiento y madurez del ecosistema.</description><pubDate>Thu, 02 Apr 2026 12:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introducción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introducción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introducción&lt;/h2&gt;
&lt;p&gt;La elección de un sistema de gestión de contenidos nunca ha tenido consecuencias tan significativas como las tiene hoy. WordPress alimenta más del 40 por ciento de todos los sitios web del mundo y lo lleva haciendo más de dos décadas. A principios de 2026, Cloudflare lanzó EmDash, un CMS open-source construido desde cero con tecnología serverless, TypeScript y un modelo de seguridad que desafía todo lo que los desarrolladores WordPress siempre han dado por sentado. La pregunta ya no es si existen alternativas a WordPress, sino si las nuevas alternativas resuelven problemas reales o simplemente trasladan la complejidad a otro lugar.&lt;/p&gt;
&lt;p&gt;Esta comparación está escrita para desarrolladores, directores técnicos y agencias que evalúan ambas plataformas para proyectos nuevos o existentes. Cubrimos arquitectura, plugins, modelo de contenido, alojamiento, integración con IA, comercio electrónico, herramientas de migración y recomendaciónes prácticas. Para un análisis más profundo de la arquitectura de EmDash y lo que representa para el ecosistema WordPress, lee el &lt;a href=&quot;/es/emdash-cloudflare-open-source-cms-wordpress-successor-2026/&quot;&gt;análisis completo de EmDash&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El objetivo es proporcionar información suficiente para tomar una decisión informada, sin exagerar las ventajas de ninguna de las dos plataformas. Ambas tienen fortalezas claras y ambas tienen limitaciones que conviene conocer antes de comprometerse.&lt;/p&gt;
&lt;h2 id=&quot;tabla-de-comparación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-de-comparación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla de comparación&lt;/h2&gt;



















































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Característica&lt;/th&gt;&lt;th&gt;EmDash&lt;/th&gt;&lt;th&gt;WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Lenguaje y framework&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;TypeScript con Astro como framework de frontend. Codebase completamente tipada con módulos ES modernos.&lt;/td&gt;&lt;td&gt;PHP con un sistema de plantillas propio. Más de 20 años de retrocompatibilidad mantenida en el núcleo.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Licencia&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;MIT, la licencia open-source más permisiva. Permite el uso en productos cerrados sin restricciones.&lt;/td&gt;&lt;td&gt;GPL v2+, licencia copyleft que exige que las obras derivadas también se licencien bajo GPL.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Primer lanzamiento&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2026, versión beta 0.1.0. Fase muy temprana sin garantías de producción.&lt;/td&gt;&lt;td&gt;2003, estable durante más de 20 años. Cientos de actualizaciones major y minor entregadas.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Arquitectura de plugins&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Dynamic Workers aislados en sandbox. Cada plugin se ejecuta en su propio contexto aislado con permisos explícitos declarados en código.&lt;/td&gt;&lt;td&gt;Acceso total en PHP a todo el runtime, base de datos y sistema de archivos. Sin aislamiento nativo entre plugins.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ecosistema de plugins&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Algunos plugins de ejemplo publicados por el equipo de Cloudflare. Sin catálogo público ni marketplace todavía.&lt;/td&gt;&lt;td&gt;Más de 60 000 plugins en el directorio oficial. Miles de plugins premium a través de terceros.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sistema de temas&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Componentes y layouts de Astro. Arquitectura basada en componentes con Island Architecture para hidratación parcial.&lt;/td&gt;&lt;td&gt;Jerarquía de plantillas PHP con temas de bloques. Full Site Editing con configuración theme.json desde WordPress 5.9.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Almacenamiento de contenido&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;JSON estructurado en Cloudflare D1, una base de datos de edge basada en SQLite. Schemás de contenido tipados definidos en código.&lt;/td&gt;&lt;td&gt;Bloques HTML serializados almacenados en MySQL. Flexible, pero sin schemás estructurados nativos sin plugins.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Editor de contenido&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Barra de herramientas de texto enriquecido minimalista. Funcional, pero básica en comparación con editores maduros.&lt;/td&gt;&lt;td&gt;Editor de bloques Gutenberg. Maduro, extensible y compatible con cientos de tipos de bloques de terceros.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REST API&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Integrada y completamente tipada con interfaces TypeScript. Validación automática contra schemás de contenido.&lt;/td&gt;&lt;td&gt;Integrada desde WordPress 4.7. Ampliamente utilizada, pero sin verificación de tipos nativa.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Biblioteca de medios&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Almacenamiento de objetos Cloudflare R2. Distribución global sin costes de egress.&lt;/td&gt;&lt;td&gt;Sistema de archivos local en wp-content/uploads. Requiere configuración CDN para distribución global.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Modelo de alojamiento&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Serverless en Cloudflare Workers. Sin servidores que gestionar, escalado automático a puntos de edge globalmente.&lt;/td&gt;&lt;td&gt;Stack LAMP tradicional o alojamiento WordPress gestionado. Requiere mantenimiento de servidor o proveedor de alojamiento.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Comercio electrónico&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sin funcionalidad de comercio electrónico. Sin plugins de pagos, envío o gestión de inventario.&lt;/td&gt;&lt;td&gt;WooCommerce más miles de plugins para pagos, envío, inventario y suscripciones.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Integración de IA&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Servidor MCP nativo con schemás tipados. Diseño listo para agentes desde el inicio. Integración directa con Cloudflare AI.&lt;/td&gt;&lt;td&gt;Plugins de terceros como AI Engine, Jetpack AI y similares. Sin arquitectura nativa de IA en el núcleo.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Herramientas de SEO&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Redirecciones integradas y campos meta básicos. Funcionalidad limitada frente a plugins de SEO maduros.&lt;/td&gt;&lt;td&gt;Yoast SEO, Rank Math, All in One SEO y decenas de otros. Herramientas profundamente integradas con décadas de desarrollo.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Multisite&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;No disponible. Sin funcionalidad multisite planificada en el roadmap actual.&lt;/td&gt;&lt;td&gt;Red multisite integrada desde WordPress 3.0. Gestión de cientos de sitios desde una instalación.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Roles de usuario&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Roles básicos de administrador y editor. Suficiente para equipos pequeños, pero limitado para organizaciónes complejas.&lt;/td&gt;&lt;td&gt;Sistema granular de roles y capacidades con roles personalizados, capabilities y plugins de terceros para control de acceso.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tamaño de la comunidad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Nueva y en crecimiento. Base de contribuidores pequeña concentrada en el equipo de Cloudflare y usuarios iniciales.&lt;/td&gt;&lt;td&gt;Millones de desarrolladores, diseñadores y creadores de contenido globalmente. Conferencias WordCamp en más de 60 países.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cuota de mercado&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Efectivamente cero por ciento. Demasiado pronto para una adopción medible fuera de proyectos experimentales.&lt;/td&gt;&lt;td&gt;Más del 40 por ciento de todos los sitios web globalmente. Posición dominante en el mercado de CMS.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Herramientas de migración&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Importador de WordPress incluido de serie. Soporta entradas, páginas y metadatos.&lt;/td&gt;&lt;td&gt;No aplica, ya que WordPress es normalmente el origen de la migración, no el destino.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Documentación&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Documentación en GitHub en desarrollo. Limitada, pero creciendo con contribuciones de la comunidad.&lt;/td&gt;&lt;td&gt;Codex extenso, Developer Resources, learn.wordpress.org y miles de guías de terceros.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Coste de operación&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Plan gratuito de Cloudflare posible para sitios pequeños. Planes de pago para mayor uso y recursos dedicados.&lt;/td&gt;&lt;td&gt;Alojamiento compartido desde aproximadamente tres dólares al mes. Alojamiento gestionado de 20 a 200 dólares al mes.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;arquitectura-y-filosofía&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-y-filosofía&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura y filosofía&lt;/h2&gt;
&lt;p&gt;WordPress fue construido en 2003 como una plataforma de blogs en PHP y ha evolucionado gradualmente hasta convertirse en un CMS completo. Su arquitectura refleja esa historia: una aplicación PHP monolítica que se ejecuta en un stack LAMP tradicional con Apache o Nginx, procesamiento PHP y base de datos MySQL. Todos los plugins, temas y el código del núcleo comparten el mismo entorno de ejecución. Este modelo ha demostrado ser increíblemente flexible, pero también significa que un plugin mal programado puede tumbar todo el sitio o abrir vulnerabilidades de seguridad.&lt;/p&gt;
&lt;p&gt;EmDash adopta un enfoque fundamentalmente distinto. Todo el sistema está construido en TypeScript y utiliza Astro como framework de frontend. El backend se ejecuta en Cloudflare Workers, una plataforma serverless que distribuye código a más de 300 puntos de edge globalmente. La base de datos es Cloudflare D1, basada en SQLite y ejecutada en el edge, y los archivos de medios se almacenan en R2. La arquitectura es modular desde la base: frontend y backend están débilmente acoplados, los plugins se ejecutan en sandboxes aislados y todo el sistema está diseñado para funcionar sin un servidor tradicional.&lt;/p&gt;
&lt;p&gt;Filosóficamente, los dos sistemas representan épocas diferentes del desarrollo web. WordPress prioriza la retrocompatibilidad, la accesibilidad para no desarrolladores y un enorme ecosistema de plugins. EmDash prioriza la seguridad de tipos, la seguridad por aislamiento y herramientas modernas de desarrollo. Ninguno de los dos enfoques es objetivamente mejor, pero se adaptan a proyectos y equipos muy diferentes.&lt;/p&gt;
&lt;p&gt;Es importante señalar que EmDash depende completamente de la plataforma Cloudflare. No es posible ejecutarlo en un servidor arbitrario ni migrar a otro proveedor cloud sin reescribir partes significativas del código. WordPress, en comparación, se ejecuta en prácticamente cualquier alojamiento PHP del mundo.&lt;/p&gt;
&lt;h2 id=&quot;ecosistema-de-plugins-y-extensibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ecosistema-de-plugins-y-extensibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ecosistema de plugins y extensibilidad&lt;/h2&gt;
&lt;p&gt;El ecosistema de plugins de WordPress no tiene parangón en el universo de los CMS. El directorio oficial contiene más de 60 000 plugins gratuitos y miles de plugins premium están disponibles en marketplaces como CodeCanyon, Freemius y los sitios web de los propios desarrolladores. Para prácticamente cualquier necesidad, desde formularios de contacto hasta automatización de marketing avanzada, existe un plugin que resuelve el problema. Esta riqueza tiene un coste: los plugins tienen acceso total al runtime de WordPress, a la base de datos y al sistema de archivos. Un plugin comprometido puede potencialmente tomar el control de todo el sitio.&lt;/p&gt;
&lt;p&gt;EmDash aborda este problema con una arquitectura de plugins basada en sandbox. Cada plugin se ejecuta como un Cloudflare Dynamic Worker en su propio contexto aislado. Los plugins deben declarar permisos explícitos en su código y solo tienen acceso a los recursos que explícitamente solicitan. Este modelo se asemeja al sistema de permisos de las aplicaciones móviles modernas y representa un avance significativo en seguridad frente al enfoque de WordPress.&lt;/p&gt;
&lt;p&gt;A continuación se muestra un ejemplo de un plugin EmDash que envía una notificación por correo electrónico cuando se pública una entrada. Observa la declaración explícita de permisos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { definePlugin } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;emdash&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; definePlugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  id: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;notify-on-publish&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  versión: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.0.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  capabilities: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;read:content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email:send&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  hooks: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;content:afterSave&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (event.collection &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;posts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; event.content.status &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;published&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ctx.email&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        to: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;editors@example.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        subject: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`New post published: ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        text: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`&quot;${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot; is now live.`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ctx.log.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`Notified editors about ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El plugin solo puede leer contenido y enviar correos electrónicos porque solicitó explícitamente esos permisos. No puede escribir en la base de datos, leer datos de otros plugins ni realizar peticiones de red a servicios externos sin declararlo en el array de capabilities. Para desarrolladores WordPress acostumbrados a hooks como &lt;code&gt;add_action&lt;/code&gt; y &lt;code&gt;add_filter&lt;/code&gt;, se trata de un modelo fundamentalmente diferente que requiere reaprendizaje, pero que proporciona una seguridad significativamente mejor.&lt;/p&gt;
&lt;p&gt;La desventaja es evidente: EmDash tiene unos pocos plugins de ejemplo, ningún catálogo público y ningún marketplace. Si tu proyecto necesita una funcionalidad específica que no existe, tendrás que construirla desde cero.&lt;/p&gt;
&lt;h2 id=&quot;modelo-de-contenido-y-edición&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modelo-de-contenido-y-edición&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modelo de contenido y edición&lt;/h2&gt;
&lt;p&gt;WordPress almacena contenido como bloques HTML serializados en una base de datos MySQL. El editor Gutenberg permite a los usuarios construir páginas con un editor visual de bloques que soporta cientos de tipos de bloques tanto del núcleo como de terceros. Este modelo es flexible y visual, pero el contenido está fuertemente acoplado a la presentación. Extraer datos estructurados del contenido WordPress requiere frecuentemente plugins adicionales como Advanced Custom Fields o Meta Box.&lt;/p&gt;
&lt;p&gt;EmDash almacena contenido como JSON estructurado en Cloudflare D1. Los schemás de contenido se definen en código TypeScript, lo que proporciona seguridad de tipos y validación automática. El editor es minimalista: una barra de herramientas de texto enriquecido que cubre el formato básico, pero que carece de la sofisticación visual de Gutenberg. Para desarrolladores que prefieren trabajar con datos estructurados en lugar de edición visual, esto es una ventaja. Para creadores de contenido que esperan un constructor de páginas visual, es una limitación clara.&lt;/p&gt;
&lt;p&gt;El almacenamiento basado en JSON otorga a EmDash algunas ventajas en escenarios headless. El contenido está naturalmente estructurado y puede ser consumido por frameworks de frontend, aplicaciones móviles y servicios de terceros sin transformación. WordPress ha respondido a este desafío con su REST API y el soporte más reciente a GraphQL a través del plugin WPGraphQL, pero el modelo de almacenamiento subyacente sigue siendo HTML.&lt;/p&gt;
&lt;p&gt;Para equipos que producen principalmente contenido largo, artículos y publicaciónes de blog, ambos sistemas funcionan bien. Para equipos que construyen tipos de contenido complejos y estructurados con relaciones entre entidades, el modelo JSON de EmDash ofrece una experiencia de desarrollo más limpia. Para equipos donde editores no técnicos necesitan construir páginas visualmente ricas sin ayuda de desarrolladores, el editor Gutenberg de WordPress sigue en otra liga.&lt;/p&gt;
&lt;h2 id=&quot;alojamiento-y-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alojamiento-y-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alojamiento y despliegue&lt;/h2&gt;
&lt;p&gt;WordPress requiere un servidor con PHP y MySQL. La opción más sencilla es alojamiento compartido desde aproximadamente tres dólares al mes, pero los proyectos serios utilizan típicamente alojamiento WordPress gestionado de proveedores como Kinsta, WP Engine o Cloudways, con precios de 20 a 200 dólares al mes dependiendo del tráfico y las funcionalidades. El usuario es responsable de las actualizaciones del servidor, versiones de PHP, mantenimiento de la base de datos y parches de seguridad, a menos que pague por alojamiento gestionado que se encargue de esto.&lt;/p&gt;
&lt;p&gt;EmDash se ejecuta exclusivamente en Cloudflare Workers. El despliegue se realiza mediante Wrangler CLI o GitHub Actions, y el código se distribuye automáticamente por la red global de puntos de edge de Cloudflare. No hay servidores que gestionar, versiones de PHP que actualizar ni servidores de base de datos que mantener. Para sitios pequeños, el plan gratuito de Cloudflare puede ser suficiente, con 100 000 peticiones diarias y 10 milisegundos de tiempo de CPU por petición. Los planes de pago empiezan en cinco dólares al mes y escalan según el uso.&lt;/p&gt;
&lt;p&gt;El perfil de rendimiento es fundamentalmente diferente. WordPress genera páginas en un único servidor y requiere capas de caché como Varnish, Redis o servicios CDN para manejar el tráfico. EmDash se ejecuta en el edge, cerca del usuario, y entrega respuestas con latencia mínima independientemente de la ubicación del visitante. Para sitios con distribución global, esta es una ventaja real.&lt;/p&gt;
&lt;p&gt;La desventaja del modelo de alojamiento de EmDash es el vendor lock-in. Toda la plataforma está construida sobre servicios específicos de Cloudflare: Workers para procesamiento, D1 para base de datos, R2 para almacenamiento y KV para caché. Migrar a otro proveedor es prácticamente imposible sin una reescritura completa. WordPress, por otro lado, puede trasladarse entre miles de proveedores de alojamiento con una simple exportación e importación.&lt;/p&gt;
&lt;h2 id=&quot;ia-e-integraciones-modernas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ia-e-integraciones-modernas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IA e integraciones modernas&lt;/h2&gt;
&lt;p&gt;EmDash fue diseñado como un CMS nativo de IA desde el principio. El servidor MCP (Model Context Protocol) integrado proporciona a los agentes de IA acceso directo y tipado a schemás de contenido, creación y actualización de contenido. Los schemás tipados significan que los modelos de IA pueden comprender la estructura del contenido sin adivinar, lo que reduce errores y alucinaciones. La integración directa con los servicios de Cloudflare AI proporciona acceso a modelos de generación de texto, análisis de imágenes y embeddings sin dependencias de terceros.&lt;/p&gt;
&lt;p&gt;WordPress no tiene arquitectura nativa de IA en el núcleo. Las funcionalidades de IA llegan a través de plugins de terceros como AI Engine, Jetpack AI, CodeWP y similares. Estos plugins son potentes y flexibles, pero están construidos sobre la arquitectura existente de WordPress en lugar de integrados en ella. Esto significa que la integración de IA frecuentemente requiere configuración de claves API, tablas de base de datos adicionales y configuración de webhooks que EmDash maneja de forma nativa.&lt;/p&gt;
&lt;p&gt;Para proyectos donde la producción de contenido con IA, la edición automatizada o la gestión de contenido basada en agentes son requisitos centrales, la arquitectura de EmDash ofrece un camino más claro. Para proyectos donde la IA es una funcionalidad complementaria en lugar de una funcionalidad nuclear, el ecosistema de plugins de WordPress es más que suficiente.&lt;/p&gt;
&lt;h2 id=&quot;comercio-electrónico-y-casos-de-uso-especializados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comercio-electrónico-y-casos-de-uso-especializados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comercio electrónico y casos de uso especializados&lt;/h2&gt;
&lt;p&gt;WordPress con WooCommerce es la plataforma open-source de comercio electrónico más utilizada del mundo. WooCommerce alimenta millones de tiendas online y cuenta con un ecosistema de miles de plugins para soluciones de pago, integraciones de envío, gestión de inventario, suscripciones, reservas y comercio digital. Para la mayoría de los proyectos de comercio electrónico, WordPress con WooCommerce es la solución más rentable y flexible disponible.&lt;/p&gt;
&lt;p&gt;EmDash no tiene ninguna funcionalidad de comercio electrónico. Sin plugins de pago, sin carrito de compras, sin gestión de inventario, sin cálculo de envío. Si tu proyecto implica la venta de productos o servicios, EmDash simplemente no es una opción en 2026. Esto puede cambiar a medida que la plataforma madure, pero actualmente la brecha es enorme.&lt;/p&gt;
&lt;p&gt;Para otros casos de uso especializados como plataformas de aprendizaje, sitios de membresía, foros y sitios de catálogo, WordPress dispone de plugins maduros como LearnDash, MemberPress, bbPress y muchos otros. EmDash carece de todas estas funcionalidades especializadas y así seguirá en el futuro previsible.&lt;/p&gt;
&lt;h2 id=&quot;migración-y-coexistencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-y-coexistencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración y coexistencia&lt;/h2&gt;
&lt;p&gt;EmDash incluye un importador de WordPress como parte de la instalación base. El importador soporta la transferencia de entradas, páginas, metadatos y jerarquía básica de contenido. Para blogs sencillos y sitios de contenido, la migración puede ser relativamente directa. Para instalaciones WordPress complejas con tipos de contenido personalizados, campos ACF avanzados, datos de WooCommerce y cientos de funcionalidades basadas en plugins, la migración requerirá un trabajo manual significativo.&lt;/p&gt;
&lt;p&gt;Un enfoque pragmático es ejecutar ambos sistemas en paralelo durante un periodo de transición. EmDash puede utilizarse como CMS headless que entrega contenido vía API a un frontend existente, mientras WordPress sigue gestionando funcionalidades que no existen en EmDash. Este modelo de coexistencia requiere competencia técnica para configurar, pero permite que los equipos trasladen funcionalidades gradualmente sin una migración big bang arriesgada.&lt;/p&gt;
&lt;p&gt;Para la mayoría de los sitios WordPress establecidos, la migración a EmDash no es necesaria ni aconsejable en 2026. La plataforma es demasiado inmadura, el ecosistema es demasiado pequeño y el riesgo es demasiado alto. Para proyectos nuevos donde el equipo tiene competencia en Cloudflare y desea deliberadamente un stack moderno, EmDash merece ser evaluado como alternativa.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-elegir-emdash&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-elegir-emdash&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo elegir EmDash&lt;/h2&gt;
&lt;p&gt;EmDash es más adecuado para proyectos de desarrollo completamente nuevos donde el equipo prefiere TypeScript a PHP y desea una arquitectura serverless sin deuda tecnológica heredada. Los proyectos con requisitos de seguridad estrictos se benefician del aislamiento de plugins en sandbox en lugar del modelo de acceso total de WordPress. Los flujos de trabajo nativos de IA donde el soporte nativo al servidor MCP y los schemás de contenido tipados son más importantes que un amplio catálogo de plugins encuentran un entorno natural en EmDash. Por último, la plataforma se adapta bien a equipos que ya ejecutan infraestructura en Cloudflare Workers, R2 y D1 y que necesitan un CMS que se integre de forma nativa en ese ecosistema.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-elegir-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-elegir-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo elegir WordPress&lt;/h2&gt;
&lt;p&gt;WordPress sigue siendo la elección correcta para sitios establecidos con contenido existente, temas, plugins y flujos de trabajo de equipo cuya migración sería costosa y arriesgada. Los proyectos de comercio electrónico que dependen de WooCommerce, pasarelas de pago, integraciones de envío y plugins de gestión de inventario no tienen alternativa real en EmDash. Los equipos de contenido no técnicos que necesitan una experiencia de edición madura y bien documentada con constructores de páginas visuales y una amplia comunidad de soporte encontrarán WordPress mucho más accesible. Los proyectos que requieren multisite, roles de usuario granulares o cualquiera de los miles de plugins especializados que simplemente aún no existen en el ecosistema EmDash deben permanecer en WordPress.&lt;/p&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;EmDash aporta una arquitectura genuinamente moderna al espacio de los CMS. Seguridad en sandbox, alojamiento serverless, seguridad de tipos en todo el stack y diseño nativo de IA son ventajas reales que abordan debilidades con las que WordPress ha luchado durante años. Los recursos y la reputación de Cloudflare otorgan al proyecto una credibilidad que pocas otras plataformas CMS nuevas han tenido.&lt;/p&gt;
&lt;p&gt;WordPress responde con un ecosistema inigualable, dos décadas de estabilidad probada en producción, una experiencia de edición que los usuarios no técnicos realmente disfrutan y una comunidad de millones. Es el CMS más utilizado del mundo por una razón, y ninguna cantidad de elegancia arquitectónica puede sustituir de la noche a la mañana 60 000 plugins, millones de desarrolladores y dos décadas de documentación.&lt;/p&gt;
&lt;p&gt;La elección correcta depende de los requisitos del proyecto, las capacidades del equipo y los plazos disponibles. Para proyectos nuevos liderados por desarrolladores con infraestructura Cloudflare y requisitos modernos, EmDash es una alternativa interesante. Para todo lo demás, WordPress sigue siendo la plataforma pragmática y probada que siempre ha sido. Para el análisis completo de la arquitectura de EmDash y lo que señala para el futuro de WordPress, consulta el &lt;a href=&quot;/es/emdash-cloudflare-open-source-cms-wordpress-successor-2026/&quot;&gt;análisis completo de EmDash&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si Astro es la opción adecuada para tu próximo proyecto, descubre &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;mis servicios de desarrollo con Astro&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category>cms</category><category domain="tag">emdash</category><category domain="tag">wordpress</category><category domain="tag">cms-comparison</category><category domain="tag">cloudflare</category><enclosure url="https://wppoland.com/images/og/emdash-cms-dashboard-2026.jpg" type="image/jpeg"/></item><item><title>EmDash, el CMS de código abierto de Cloudflare que quiere reemplazar a WordPress</title><link>https://wppoland.com/es/emdash-cloudflare-open-source-cms-wordpress-successor-2026/</link><guid isPermaLink="true">https://wppoland.com/es/emdash-cloudflare-open-source-cms-wordpress-successor-2026/</guid><description>EmDash es un nuevo CMS de código abierto en TypeScript, construido sobre Astro por Cloudflare. Promete plugins en sandbox, arquitectura serverless y funciones nativas de IA. ¿Qué significa para WordPress?</description><pubDate>Thu, 02 Apr 2026 10:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;El 1 de abril de 2026, Cloudflare publicó en su blog oficial un anuncio que sacudió el ecosistema de gestión de contenidos: &lt;strong&gt;EmDash&lt;/strong&gt;, un CMS full-stack de código abierto construido íntegramente en TypeScript sobre el framework Astro, con licencia MIT. El proyecto se presenta, sin rodeos, como el “sucesor espiritual de WordPress”. En wppoland.com llevamos más de una década trabajando con WordPress, así que cuando una empresa del calibre de Cloudflare lanza una afirmación de ese peso, prestamos atención.&lt;/p&gt;
&lt;p&gt;Lo que hace que EmDash sea diferente de los muchos “asesinos de WordPress” que hemos visto aparecer y desaparecer no es solo la tecnología. Es la combinación de quién lo construye, cómo aborda los problemas estructurales históricos de WordPress y qué visión de futuro plantea para la gestión de contenidos en la era de la inteligencia artificial.&lt;/p&gt;
&lt;p&gt;En este artículo analizamos qué es EmDash, cómo funciona su arquitectura, por qué su modelo de seguridad de plugins es radicalmente diferente, qué ofrece en términos de IA nativa y qué debería hacer la comunidad de WordPress al respecto.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;de-donde-viene-el-nombre-emdash&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#de-donde-viene-el-nombre-emdash&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;De donde viene el nombre EmDash&lt;/h2&gt;
&lt;p&gt;El nombre EmDash proviene del caracter tipografico “em dash” ( - ) - la raya que en tipografia marca una ruptura, un cambio o una continuacion. Es un nombre apropiado para un proyecto que pretende marcar un punto de inflexion en la historia de los CMS.&lt;/p&gt;
&lt;p&gt;Para entender el contexto temporal: WordPress nacio en 2003 como un fork de b2/cafelog y ha evolucionado durante dos decadas. EmDash, según Cloudflare, fue desarrollado en aproximadamente dos meses en 2026. Aun más notable: Cloudflare admite abiertamente que agentes de IA escribieron una parte significativa del código.&lt;/p&gt;
&lt;p&gt;Un punto técnicamente importante: EmDash no contiene ni una sola linea de código de WordPress. Es un desarrollo completamente nuevo en TypeScript, sin ninguna base en PHP. Por eso EmDash esta licenciado bajo la licencia MIT en lugar de la GPL que utiliza WordPress. La licencia MIT es comercialmente mucho más permisiva - las obras derivadas no necesitan publicarse bajo la misma licencia, lo que supone una ventaja significativa para empresas y productos comerciales.&lt;/p&gt;
&lt;h2 id=&quot;qué-es-emdash-exactamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-emdash-exactamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué es EmDash exactamente&lt;/h2&gt;
&lt;p&gt;EmDash es un sistema de gestión de contenidos full-stack, de código abierto y con licencia MIT, construido desde cero en TypeScript sobre el framework &lt;a href=&quot;https://astro.build/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Astro&lt;/a&gt;. No se trata de un headless CMS ni de un generador de sitios estáticos con panel adjunto. Es un CMS completo que incluye panel de administración, REST API, biblioteca de medios, sistema de plugins y herramientas de migración.&lt;/p&gt;
&lt;p&gt;El repositorio oficial está disponible en &lt;a href=&quot;https://github.com/emdash-cms/emdash&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;github.com/emdash-cms/emdash&lt;/a&gt; y la versión actual es la v0.1.0, lo que deja claro que se trata de un proyecto en fase beta temprana. Cloudflare no intenta ocultar ese dato. En su &lt;a href=&quot;https://blog.cloudflare.com/emdash-wordpress/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;publicación oficial&lt;/a&gt; son transparentes sobre el estado del proyecto y lo presentan como una base sobre la cual construir, no como un producto terminado.&lt;/p&gt;
&lt;p&gt;La elección de Astro como base no es casual. Astro se ha consolidado en los últimos dos años como el framework de referencia para sitios orientados a contenido gracias a su arquitectura de islas (Islands Architecture), que envía cero JavaScript al navegador por defecto y solo hidrata los componentes interactivos que realmente lo necesitan. Para un CMS, eso significa páginas extremadamente rápidas sin configuración adicional.&lt;/p&gt;
&lt;p&gt;Poner EmDash en marcha es tan directo como ejecutar un solo comando en la terminal:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; emdash@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La configuración del proyecto se define en &lt;code&gt;astro.config.mjs&lt;/code&gt;, un archivo que cumple una función similar a la de &lt;code&gt;wp-config.php&lt;/code&gt; en WordPress, pero con tipado completo y autocompletado en el editor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// astro.config.mjs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; emdash &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;emdash/astro&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { d1 } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;emdash/db&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defineConfig&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  integrations: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;emdash&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ database: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;d1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() })],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con estas pocas líneas se conecta la base de datos D1 de Cloudflare y se activa toda la funcionalidad del CMS. No hay archivos &lt;code&gt;.htaccess&lt;/code&gt;, no hay constantes PHP dispersas ni ajustes de permisos de archivo.&lt;/p&gt;
&lt;h3 id=&quot;características-principales-de-emdash&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#características-principales-de-emdash&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Características principales de EmDash&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Panel de administración integrado&lt;/strong&gt; con interfaz moderna y responsive&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST API completa&lt;/strong&gt; para consumo headless si se desea&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Biblioteca de medios&lt;/strong&gt; con gestión de imágenes y archivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema de plugins&lt;/strong&gt; implementado como integración nativa de Astro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido en formato JSON&lt;/strong&gt; con esquemás tipados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte multiidioma&lt;/strong&gt; desde la arquitectura base&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herramientas de migración&lt;/strong&gt; desde WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/images/emdash-cms-dashboard-2026.avif&quot; alt=&quot;Panel de administración de EmDash CMS con vista general del contenido y actividad reciente&quot;&gt;&lt;/p&gt;
&lt;p&gt;La pregunta que muchos se hacen es: ¿por qué Cloudflare? La respuesta está en la estrategia de la empresa. Cloudflare ha ido construyendo sistemáticamente una plataforma completa para desarrolladores con Workers, R2, D1, KV y Pages. EmDash es la pieza que faltaba: una aplicación de referencia que demuestra que todo ese stack puede sustentar un CMS de producción sin necesidad de un servidor tradicional.&lt;/p&gt;
&lt;h2 id=&quot;arquitectura-y-stack-tecnológico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-y-stack-tecnológico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura y stack tecnológico&lt;/h2&gt;
&lt;p&gt;La arquitectura de EmDash refleja decisiones técnicas muy deliberadas que lo diferencian fundamentalmente de WordPress y de la mayoría de CMS tradicionales.&lt;/p&gt;
&lt;h3 id=&quot;astro-como-fundamento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro-como-fundamento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro como fundamento&lt;/h3&gt;
&lt;p&gt;EmDash se construye como una integración de Astro, lo que significa que hereda todas las ventajas del framework: renderizado del lado del servidor, generación de sitios estáticos, hidratación parcial y soporte para múltiples frameworks de componentes (React, Vue, Svelte, Solid). Un desarrollador puede construir la interfaz pública de su sitio con el framework que prefiera mientras el CMS gestiona el contenido por debajo.&lt;/p&gt;
&lt;h3 id=&quot;arquitectura-serverless-y-edge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-serverless-y-edge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura serverless y edge&lt;/h3&gt;
&lt;p&gt;A diferencia de WordPress, que requiere un servidor con PHP y una base de datos MySQL o MariaDB siempre activos, EmDash está diseñado para desplegarse en infraestructura serverless. En el caso de Cloudflare, eso significa Workers para la lógica del servidor, D1 (su base de datos SQLite distribuida) para los datos, R2 para los archivos y KV para el caché. No hay servidor que mantener, no hay procesos que monitorizar, no hay escalado manual.&lt;/p&gt;
&lt;p&gt;Este enfoque tiene implicaciones profundas en costes y operaciones. Un sitio WordPress de alto tráfico necesita servidores dimensionados para los picos, balanceadores de carga y estrategias de caché complejas. Un sitio EmDash en la infraestructura de Cloudflare escala automáticamente hasta cero cuando no hay tráfico y se expande instantáneamente cuando lo necesita.&lt;/p&gt;
&lt;h3 id=&quot;contenido-como-json-tipado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-como-json-tipado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido como JSON tipado&lt;/h3&gt;
&lt;p&gt;WordPress almacena el contenido en una base de datos relacional con un esquema que lleva prácticamente sin cambios desde 2003. EmDash utiliza JSON con esquemás tipados en TypeScript, lo que proporciona validación en tiempo de compilación, autocompletado en el editor y detección de errores antes del despliegue.&lt;/p&gt;
&lt;p&gt;Consultar contenido en EmDash se parece más a trabajar con una API tipada que a encadenar llamadas a &lt;code&gt;get_post_meta()&lt;/code&gt; esperando que los campos existan:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { getEmDashCollection } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;emdash&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;entries&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getEmDashCollection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;posts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{posts.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;{post.data.title}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;)}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada colección tiene tipos generados automáticamente. Para regenerar las definiciones de tipos después de modificar un esquema, basta con ejecutar:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; emdash&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; types&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto genera interfaces TypeScript que reflejan la estructura exacta del contenido. Si un campo cambia de nombre o se elimina, el compilador detecta todos los puntos del código afectados antes del despliegue. En WordPress, ese tipo de cambios en campos personalizados suele descubrirse en producción.&lt;/p&gt;
&lt;h3 id=&quot;panel-de-administración-y-rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#panel-de-administración-y-rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Panel de administración y REST API&lt;/h3&gt;
&lt;p&gt;El panel de administración de EmDash es una aplicación web moderna construida con componentes de Astro. No es wp-admin. No intenta replicar la interfaz de WordPress. Es una interfaz limpia, rápida y diseñada para las expectativas de 2026, no para las de 2004.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/emdash-cms-post-editor-2026.avif&quot; alt=&quot;Editor de publicaciónes de EmDash CMS con barra de herramientas, imagen destacada y panel de taxonomías&quot;&gt;&lt;/p&gt;
&lt;p&gt;La REST API permite utilizar EmDash como un CMS headless, consumiendo el contenido desde cualquier frontend. Esto lo posiciona como una alternativa tanto a WordPress tradicional como a servicios headless como Contentful, Sanity o Strapi.&lt;/p&gt;
&lt;h2 id=&quot;seguridad-de-plugins-el-cambio-más-radical&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-de-plugins-el-cambio-más-radical&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad de plugins: el cambio más radical&lt;/h2&gt;
&lt;p&gt;Si hay un área donde EmDash representa una ruptura filosófica con WordPress, es la seguridad de los plugins. Y aquí es donde la conversación se pone realmente interesante.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-histórico-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-histórico-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema histórico de WordPress&lt;/h3&gt;
&lt;p&gt;En WordPress, un plugin tiene acceso completo al sistema. Puede leer y escribir en la base de datos, modificar archivos del sistema, ejecutar código arbitrario, enviar peticiones a servidores externos y acceder a los datos de todos los usuarios. Cuando instalas un plugin de WordPress, estás depositando confianza total en el desarrollador. Si ese plugin tiene una vulnerabilidad - o si el desarrollador actúa con mala intención - todo el sitio queda expuesto.&lt;/p&gt;
&lt;p&gt;Las estadísticas son elocuentes. Según datos de WPScan y Patchstack, los plugins son responsables de más del 90% de las vulnerabilidades de seguridad reportadas en el ecosistema WordPress. Mas concretamente, el informe de seguridad de Patchstack de 2025 revelo que el 96% de todas las vulnerabilidades de WordPress ese año provinieron de plugins. No es un defecto del código de WordPress core; es un defecto arquitectónico. El modelo de permisos de WordPress simplemente no fue diseñado para aislar plugins entre sí ni del sistema.&lt;/p&gt;
&lt;h3 id=&quot;el-modelo-de-emdash-dynamic-workers-en-sandbox&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-modelo-de-emdash-dynamic-workers-en-sandbox&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El modelo de EmDash: Dynamic Workers en sandbox&lt;/h3&gt;
&lt;p&gt;EmDash adopta un enfoque radicalmente diferente. Cada plugin se ejecuta en un Dynamic Worker aislado - esencialmente un entorno de ejecución sandboxed con permisos explícitos. Un plugin debe declarar qué recursos necesita: acceso a la base de datos, acceso a archivos, peticiones de red, etc. Si no declara un permiso, no lo tiene.&lt;/p&gt;
&lt;p&gt;Este modelo es análogo a cómo funcionan las aplicaciones en sistemas operativos móviles modernos. Cuando instalas una app en tu teléfono, te pide permiso para acceder a la cámara, los contactos o la ubicación. EmDash aplica ese mismo principio a los plugins de un CMS.&lt;/p&gt;
&lt;p&gt;El siguiente ejemplo muestra un plugin típico de EmDash. La diferencia fundamental con WordPress es la propiedad &lt;code&gt;capabilities&lt;/code&gt;: el plugin declara explícitamente que solo necesita leer contenido y enviar correos electrónicos. En WordPress, un plugin equivalente tendría acceso completo a la base de datos, al sistema de archivos y a cualquier otro recurso del servidor sin restricción alguna.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { definePlugin } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;emdash&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; definePlugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  id: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;notify-on-publish&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  versión: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.0.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  capabilities: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;read:content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email:send&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  hooks: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;content:afterSave&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (event.collection &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;posts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; event.content.status &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;published&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ctx.email&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        to: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;editors@example.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        subject: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`New post published: ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        text: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`&quot;${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot; is now live.`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ctx.log.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`Notified editors about ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si este plugin se viera comprometido, el atacante solo podría leer contenido y enviar correos. No podría acceder a datos de usuarios, modificar archivos del sistema ni ejecutar código arbitrario. El array &lt;code&gt;capabilities&lt;/code&gt; actúa como un contrato de seguridad verificable, algo que no existe en la arquitectura de WordPress.&lt;/p&gt;
&lt;p&gt;Las implicaciones prácticas son significativas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Un plugin comprometido no puede acceder a datos de otros plugins&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No puede modificar archivos del sistema ni ejecutar código arbitrario fuera de su sandbox&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El administrador puede ver exactamente qué permisos solicita cada plugin antes de instalarlo&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los permisos pueden revocarse sin desinstalar el plugin&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Otro aspecto que falta en WordPress: los temas también estan sandboxed en EmDash. En WordPress, los temas pueden ejecutar operaciones de base de datos, correr código PHP arbitrario e intervenir profundamente en el sistema. En EmDash, los temas son layouts puros de Astro sin acceso a operaciones de base de datos - una mejora de seguridad significativa. Como lo formula Cloudflare: “Plugins are securely sandboxed and can run in their own isolate, via Dynamic Workers.”&lt;/p&gt;
&lt;p&gt;Para quienes gestionamos sitios WordPress de clientes, esto resuelve uno de los dolores de cabeza más persistentes de la plataforma. Cada actualización de plugin es un riesgo calculado. Cada plugin nuevo que un clientes quiere instalar requiere una revisión manual del código o un acto de fe. El modelo de EmDash no elimina completamente el riesgo, pero reduce drásticamente la superficie de ataque.&lt;/p&gt;
&lt;h2 id=&quot;detalles-que-marcan-la-diferencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#detalles-que-marcan-la-diferencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Detalles que marcan la diferencia&lt;/h2&gt;
&lt;p&gt;Mas alla de las grandes decisiones arquitectonicas, EmDash presenta varias funcionalidades menores que demuestran la coherencia del proyecto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Autenticación por passkeys como estándar:&lt;/strong&gt; EmDash utiliza passkeys en lugar de contrasenas como estándar. Esto elimina completamente los ataques de fuerza bruta y el credential stuffing - dos de los vectores de ataque más comunes contra instalaciones WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contenido pay-per-use integrado:&lt;/strong&gt; EmDash soporta la cabecera x402, un protocolo para contenido basado en microtransacciones. Con esto se pueden vender artículos o contenidos individuales directamente, sin necesidad de integrar plugins externos de paywall o soluciones de comercio electronico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Collections tipadas en lugar de Custom Post Types:&lt;/strong&gt; Lo que WordPress conoce como Custom Post Types se llama en EmDash “Collections” - colecciones de contenido tipadas y definidas por esquema, con soporte completo de TypeScript. La estructura queda claramente definida desde el inicio, no montada posteriormente a través de campos meta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Independencia de plataforma:&lt;/strong&gt; Aunque EmDash funciona mejor en la infraestructura de Cloudflare, no esta limitado a ella. El proyecto soporta plataformas de despliegue alternativas y puede ejecutarse en cualquier infraestructura que soporte funciones serverless.&lt;/p&gt;
&lt;h2 id=&quot;diseño-nativo-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diseño-nativo-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diseño nativo de IA&lt;/h2&gt;
&lt;p&gt;EmDash no añade funciones de IA como una capa superficial sobre un sistema existente. Las ha incorporado desde el diseño de su arquitectura, y eso se nota en tres áreas clave.&lt;/p&gt;
&lt;h3 id=&quot;esquemás-tipados-para-consumo-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#esquemás-tipados-para-consumo-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Esquemás tipados para consumo por IA&lt;/h3&gt;
&lt;p&gt;Los esquemás de contenido de EmDash están definidos en TypeScript con tipos explícitos, descripciones y metadatos semánticos. Esto significa que un agente de IA puede leer el esquema del CMS y entender qué tipos de contenido existen, qué campos tiene cada uno, qué restricciones aplican y cómo se relacionan entre sí. No necesita “adivinar” la estructura del contenido; la tiene descrita formalmente.&lt;/p&gt;
&lt;p&gt;En WordPress, un agente de IA que quiere interactuar con el contenido necesita descubrir la estructura mediante inspección de la API o documentación externa. Con EmDash, la estructura es parte del sistema de tipos y está disponible programáticamente.&lt;/p&gt;
&lt;h3 id=&quot;soporte-para-servidor-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soporte-para-servidor-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soporte para servidor MCP&lt;/h3&gt;
&lt;p&gt;EmDash incluye soporte nativo para el protocolo Model Context Protocol (MCP), el estándar abierto impulsado por Anthropic para que los modelos de lenguaje interactúen con herramientas externas. Esto permite que un LLM como Claude o GPT se conecte directamente al CMS, consulte contenido, cree publicaciónes, gestióne medios y administre configuraciónes a través de una interfaz estandarizada.&lt;/p&gt;
&lt;p&gt;Para las agencias que están integrando flujos de trabajo con IA en su gestión de contenidos, esto elimina la necesidad de construir integraciones personalizadas. El CMS habla el protocolo que los modelos de IA ya entienden.&lt;/p&gt;
&lt;h3 id=&quot;flujos-de-trabajo-de-agentes-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujos-de-trabajo-de-agentes-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujos de trabajo de agentes de IA&lt;/h3&gt;
&lt;p&gt;EmDash está diseñado para funcionar como parte de pipelines de agentes de IA. Un agente puede crear contenido, asignar categorías, optimizar metadatos SEO, programar publicaciónes y gestionar traducciones de forma autónoma a través de la API. El sistema de permisos granular se aplica también a los agentes, lo que permite controlar exactamente qué puede y qué no puede hacer una automatización de IA.&lt;/p&gt;
&lt;p&gt;Esto no es solo una función técnica. Representa una visión del CMS como infraestructura que los agentes de IA operan, no solo como una herramienta que los humanos utilizan con asistencia de IA.&lt;/p&gt;
&lt;h2 id=&quot;ruta-de-migración-desde-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ruta-de-migración-desde-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ruta de migración desde WordPress&lt;/h2&gt;
&lt;p&gt;Cloudflare sabe que EmDash no reemplazará a WordPress si no proporciona un camino de migración viable. Por eso el proyecto incluye herramientas y documentación específicas para la transición.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-importación-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-importación-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de importación de contenido&lt;/h3&gt;
&lt;p&gt;El asistente de importación de EmDash guía el proceso en tres pasos: &lt;strong&gt;Conectar&lt;/strong&gt; (introducir la URL del sitio WordPress o cargar un archivo XML de exportación), &lt;strong&gt;Revisar&lt;/strong&gt; (previsualizar el contenido que se importará con mapeo de campos) e &lt;strong&gt;Importar&lt;/strong&gt; (ejecutar la migración con un registro detallado del resultado).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/emdash-cms-wordpress-import-2026.avif&quot; alt=&quot;Interfaz de importación desde WordPress en EmDash con verificación de URL y opciones de carga de XML&quot;&gt;&lt;/p&gt;
&lt;p&gt;EmDash proporciona scripts de migración que importan contenido desde una instalación de WordPress. Posts, páginas, categorías, etiquetas, campos personalizados y medios pueden exportarse desde WordPress e importarse a EmDash. El proceso convierte las estructuras de datos de WordPress a los esquemás JSON tipados de EmDash.&lt;/p&gt;
&lt;h3 id=&quot;guías-de-portabilidad-de-temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guías-de-portabilidad-de-temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guías de portabilidad de temas&lt;/h3&gt;
&lt;p&gt;La documentación incluye guías para convertir temas de WordPress (tanto clásicos como basados en bloques) a componentes de Astro. No es una conversión automática - las diferencias arquitectónicas entre PHP con template tags y componentes de Astro son demasiado profundas para eso - pero las guías proporcionan un mapa claro de equivalencias y patrones.&lt;/p&gt;
&lt;h3 id=&quot;portabilidad-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#portabilidad-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Portabilidad de plugins&lt;/h3&gt;
&lt;p&gt;Para los plugins más comunes (SEO, formularios de contacto, caché, analytics), EmDash proporciona guías de equivalencias que explican qué funcionalidad cubre el core de EmDash, qué está disponible como plugin de EmDash y qué necesita un desarrollo personalizado.&lt;/p&gt;
&lt;p&gt;Es importante ser realistas: migrar un sitio WordPress complejo a EmDash hoy no es práctico. El ecosistema de plugins es minúsculo comparado con las más de 60,000 opciones de WordPress. Pero las herramientas están ahí para proyectos nuevos y para sitios simples que quieran experimentar.&lt;/p&gt;
&lt;h2 id=&quot;reacciones-de-la-comunidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reacciones-de-la-comunidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reacciones de la comunidad&lt;/h2&gt;
&lt;p&gt;La publicación de EmDash generó un debate intenso en los foros y comunidades de desarrollo web. Las reacciones, como era de esperar, están divididas.&lt;/p&gt;
&lt;h3 id=&quot;entusiasmo-por-la-arquitectura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entusiasmo-por-la-arquitectura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entusiasmo por la arquitectura&lt;/h3&gt;
&lt;p&gt;El hilo en Hacker News alcanzo más de 650 puntos y más de 480 comentarios en las primeras 24 horas - un nivel de participacion inusualmente alto para un tema de CMS.&lt;/p&gt;
&lt;p&gt;En Hacker News y Reddit, muchos desarrolladores celebraron las decisiones técnicas. El modelo de plugins sandboxed fue particularmente aplaudido. Varios comentaristas señalaron que WordPress ha necesitado un sistema de permisos para plugins durante años y que el enfoque de EmDash finalmente lo resuelve de forma elegante. La elección de TypeScript y Astro también recibió comentarios positivos, especialmente entre desarrolladores que ya trabajan con ese stack.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://joost.blog/emdash-cms/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Joost de Valk&lt;/a&gt;, creador de Yoast SEO, escribio en LinkedIn expresamente “Not an April Fools joke” y anuncio planes para construir sobre EmDash. Un desarrollador recreo el clásico tema de WordPress Kubrick en EmDash como homenaje - completamente sin PHP. En Reddit, se formulo una observacion certera que marco la discusion: “WordPress won not because it was technically best, but because it had the biggest social moat.”&lt;/p&gt;
&lt;h3 id=&quot;escepticismo-sobre-la-madurez&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escepticismo-sobre-la-madurez&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escepticismo sobre la madurez&lt;/h3&gt;
&lt;p&gt;Los comentarios críticos se centraron en dos puntos. Primero, que la v0.1.0 está muy lejos de ser utilizable en producción. Sin un ecosistema de plugins, temas y herramientas comparable al de WordPress, EmDash es más una demostración conceptual que una alternativa real. Segundo, que el hecho de que Cloudflare esté detrás del proyecto genera tanto confianza (recursos y compromiso a largo plazo) como desconfianza (dependencia de la plataforma de Cloudflare).&lt;/p&gt;
&lt;h3 id=&quot;voces-de-la-industria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#voces-de-la-industria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Voces de la industria&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://joost.blog/emdash-cms/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Joost de Valk&lt;/a&gt;, creador de Yoast SEO y figura central en la comunidad WordPress, publicó un análisis donde reconoció las fortalezas técnicas de EmDash pero advirtió sobre la distancia entre una buena arquitectura y un ecosistema funcional. Su perspectiva es especialmente relevante dado que conoce las limitaciones de WordPress desde dentro.&lt;/p&gt;
&lt;p&gt;Medios como &lt;a href=&quot;https://www.techradar.com/pro/cloudflare-launches-emdash-the-spiritual-successor-that-wants-to-take-on-wordpress&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;TechRadar&lt;/a&gt;, &lt;a href=&quot;https://www.phoronix.com/news/Cloudflare-EmDash&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Phoronix&lt;/a&gt; y &lt;a href=&quot;https://cybernews.com/tech/cloudflare-unveils-wordpress-competitor-emdash-cms/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CyberNews&lt;/a&gt; cubrieron el lanzamiento con un tono equilibrado: reconociendo la importancia del proyecto sin declarar prematuramente el fin de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;la-perspectiva-de-un-profesional-el-hilo-de-andy-peatling&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-perspectiva-de-un-profesional-el-hilo-de-andy-peatling&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La perspectiva de un profesional: el hilo de Andy Peatling&lt;/h3&gt;
&lt;p&gt;El 4 de abril, Andy Peatling (&lt;a href=&quot;https://x.com/apeatling/status/2040456246306939007&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;@apeatling&lt;/a&gt;) — un desarrollador profundamente inmerso en el ecosistema de productos WordPress — público un hilo matizado en X que rápidamente se convirtio en la opinion mas fundamentada de todo el discurso sobre EmDash. Compartido por Brad Williams y otros miembros de la comunidad WordPress, acumulo 96 likes, 37 marcadores y 7.000 visualizaciones en dos dias.&lt;/p&gt;
&lt;p&gt;El argumento central de Peatling es que el encuadre “WordPress esta muerto” no da en el blanco. Escribe: “Las herramientas de IA de la generación actual pueden generar un sitio tipo folleto. No pueden construir de forma fiable un sitio complejo que funcióne como un negocio real lo necesita.” Su experiencia diaria construyendo en este espacio otorga a esta afirmacion un peso del que carecen las criticas arquitectonicas teoricas.&lt;/p&gt;
&lt;p&gt;La reflexion más impactante del hilo se refiere al &lt;strong&gt;problema de edicion y confianza&lt;/strong&gt;. Incluso si la generación de sitios por IA estuviera completamente resuelta, el problema de edicion sigue abierto. “Simplemente usa un chatbot para hacer cambios” suena convincente hasta que el dueno de un restaurante necesita verificar que el bot actualizo el horario correcto en la página correcta. Un boton de guardar en un CMS requiere más pasos que un prompt, pero esos pasos son verificables. Esa verificabilidad importa a las personas que gestionan negocios en estas plataformas.&lt;/p&gt;
&lt;p&gt;Las respuestas se dividieron en campos predecibles. @hedgecast coincidio en que “el problema de edicion es el verdadero. La generación esta casí resuelta. Confiar en que la generación hizo lo correcto esta lejos de estarlo.” Peatling incluso cuestiono ese “casí resuelta”: “Creo que hay un problema serio del último 10%, y en realidad es más bien un 30% cuando aumentas la complejidad y los requisitos.”&lt;/p&gt;
&lt;p&gt;@AlxAndrws respondio con resultados reales, afirmando haber construido multiples sitios AI-first en lugar de WordPress desde enero, con “cada metrica mejor.” La respuesta de Peatling fue caracteristicamente pragmatica: “Cuentame más sobre las herramientas que usas… Estos sitios terminan siendo usados y gestionados por usuarios finales o por desarrolladores? Ese es mi punto.” Esta pregunta va al corazon de todo el debate — las demos técnicas y los sitios gestionados por desarrolladores no son lo mismo que productos que propietarios de negocios no técnicos operan a diario.&lt;/p&gt;
&lt;p&gt;@XanderSeb, desarrollador WordPress de atribucion de marketing, expreso la frustracion del sector más técnico: “WordPress se esta quedando atras en grande. Ojala no fuera asi, pero lo es… la gente técnica se esta yendo.” Pero @missamychan ofrecio la contranarrativa que comparten muchos leales a WordPress: “Tengo 5 de mis sitios en WordPress. He probado otros pero siempre termino cerrandolos y volviendo a hacer crecer mis sitios actuales.”&lt;/p&gt;
&lt;p&gt;Peatling cerro con una frase que deberia ser el punto de partida de toda discusion WordPress contra lo que sea: “El modelo de datos de WordPress es imperfecto. Pero se puede trabajar con el, lo hago a diario. No todo lo que es imperfecto necesita un refactoring inmediato y completo. Empieza por lo que los usuarios necesitan. Retrocede hasta la arquitectura.”&lt;/p&gt;
&lt;p&gt;Este hilo importa porque reenfoca la conversacion sobre EmDash, alejandola de la arquitectura y acercandola a la usabilidad. EmDash puede tener mejor sandboxing de plugins, mejores esquemás de contenido y mejor integración con IA. Pero nada de eso importa si las personas que gestionan sitios web a diario — propietarios de pequeños negocios, editores de contenido, equipos de marketing — no pueden confiar en que la herramienta haga lo que necesitan de forma fiable y verificable.&lt;/p&gt;
&lt;h2 id=&quot;qué-significa-esto-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-significa-esto-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué significa esto para WordPress&lt;/h2&gt;
&lt;p&gt;Seamos directos: EmDash no va a reemplazar a WordPress a corto ni a medio plazo. WordPress alimenta más del 40% de la web. Tiene un ecosistema de decenas de miles de plugins, miles de temas, millones de desarrolladores y una base instalada que ningún CMS nuevo puede igualar simplemente siendo técnicamente superior.&lt;/p&gt;
&lt;p&gt;Pero sería un error ignorar lo que EmDash representa. No se trata de si EmDash específicamente tendrá éxito. Se trata de la dirección que señala.&lt;/p&gt;
&lt;h3 id=&quot;los-problemas-que-emdash-aborda-son-reales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-problemas-que-emdash-aborda-son-reales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los problemas que EmDash aborda son reales&lt;/h3&gt;
&lt;p&gt;La seguridad de plugins en WordPress es un problema estructural que la comunidad lleva años sin resolver de forma definitiva. La dependencia de PHP y MySQL, aunque funcional, limita el tipo de infraestructura donde WordPress puede desplegarse eficientemente. La ausencia de soporte nativo para IA obliga a cada agencia y desarrollador a construir sus propias integraciones.&lt;/p&gt;
&lt;p&gt;EmDash demuestra que es posible construir un CMS con soluciones arquitectónicas para estos problemas. Aunque WordPress no adopte las mismás soluciones, la presión competitiva puede acelerar mejoras que de otro modo tardarían años.&lt;/p&gt;
&lt;h3 id=&quot;el-factor-cloudflare&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-factor-cloudflare&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El factor Cloudflare&lt;/h3&gt;
&lt;p&gt;Cuando una empresa con la infraestructura, la base de clientes y los recursos de Cloudflare se compromete con un proyecto de código abierto de esta envergadura, merece atención. No estamos hablando de un desarrollador independiente publicando un proyecto de fin de semana. Cloudflare tiene la capacidad de mantener y desarrollar EmDash a largo plazo, y tiene un incentivo comercial claro para hacerlo: cada sitio EmDash desplegado en su plataforma genera ingresos.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-no-se-queda-quieto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-no-se-queda-quieto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress no se queda quieto&lt;/h3&gt;
&lt;p&gt;Es justo señalar que WordPress también está evolucionando. El editor de bloques (Gutenberg) ha transformado la experiencia de edición. La iniciativa de Full Site Editing permite crear temas completos sin código PHP. La API REST y GraphQL (vía WPGraphQL) habilitan arquitecturas headless. El proyecto WordPress Playground abre posibilidades para ejecución en el navegador.&lt;/p&gt;
&lt;p&gt;La pregunta no es si WordPress sobrevivirá - por supuesto que sí. La pregunta es si WordPress puede evolucionar lo suficientemente rápido para abordar los problemas que EmDash resuelve desde su diseño base.&lt;/p&gt;
&lt;h2 id=&quot;qué-deberían-hacer-las-agencias-y-los-desarrolladores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-deberían-hacer-las-agencias-y-los-desarrolladores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué deberían hacer las agencias y los desarrolladores&lt;/h2&gt;
&lt;p&gt;Desde wppoland.com, nuestra recomendación es pragmática.&lt;/p&gt;
&lt;h3 id=&quot;experimentar-con-emdash&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#experimentar-con-emdash&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Experimentar con EmDash&lt;/h3&gt;
&lt;p&gt;Instala EmDash en un entorno local. Explora el panel de administración. Construye un sitio pequeño. Entiende cómo funciona el sistema de plugins sandboxed. Evalúa la experiencia de desarrollo con TypeScript y Astro. No necesitas comprometer nada; necesitas entender la dirección hacia donde se mueve la industria.&lt;/p&gt;
&lt;h3 id=&quot;no-migrar-sitios-de-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#no-migrar-sitios-de-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;No migrar sitios de producción&lt;/h3&gt;
&lt;p&gt;La v0.1.0 no es el momento de migrar sitios de clientes. No hay ecosistema maduro, no hay comunidad de soporte consolidada, no hay historial de estabilidad. Los sitios de producción de WordPress funcionan, están probados y tienen soporte. Cambiar ahora sería asumir un riesgo innecesario sin una ganancia clara.&lt;/p&gt;
&lt;h3 id=&quot;observar-el-repositorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#observar-el-repositorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Observar el repositorio&lt;/h3&gt;
&lt;p&gt;Añade el repositorio de EmDash a tus favoritos en GitHub. Sigue los releases, las discusiones y la evolución del ecosistema de plugins. Si el proyecto gana tracción real en los próximos 12 a 18 meses, querrás estar preparado.&lt;/p&gt;
&lt;h3 id=&quot;invertir-en-habilidades-transferibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#invertir-en-habilidades-transferibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Invertir en habilidades transferibles&lt;/h3&gt;
&lt;p&gt;TypeScript, Astro, arquitectura serverless y diseño de APIs son habilidades valiosas independientemente de si EmDash tiene éxito o no. Si aún no has explorado Astro como frontend para WordPress headless, este es un buen momento para hacerlo. Esas mismás habilidades te servirán si EmDash madura o si surge otro CMS con una arquitectura similar.&lt;/p&gt;
&lt;h3 id=&quot;integrar-ia-en-tus-flujos-de-trabajo-actuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integrar-ia-en-tus-flujos-de-trabajo-actuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integrar IA en tus flujos de trabajo actuales&lt;/h3&gt;
&lt;p&gt;No esperes a EmDash para incorporar IA en tu gestión de contenidos. Las herramientas ya existen para WordPress. Pero presta atención a cómo EmDash implementa la integración nativa de IA - específicamente el soporte MCP y los flujos de agentes - porque ese patrón probablemente definirá cómo interactúan los CMS con la IA en los próximos años.&lt;/p&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;EmDash es, sin duda, el proyecto de CMS más interesante que hemos visto en años. No por ser perfecto ni por estar listo para producción, sino porque aborda de forma directa y técnicamente sólida los tres grandes problemas de WordPress: la seguridad de plugins, la dependencia de infraestructura tradicional y la falta de integración nativa con IA.&lt;/p&gt;
&lt;p&gt;¿Es el sucesor de WordPress? Hoy, no. Es un proyecto beta con un ecosistema inexistente comparado con los 20 años de acumulación de WordPress. Pero es el primer proyecto que combina el respaldo de una empresa de infraestructura global, una licencia verdaderamente abierta y una arquitectura diseñada para resolver los problemas que los desarrolladores de WordPress enfrentan cada día.&lt;/p&gt;
&lt;p&gt;WordPress fue creado porque una persona queria un blog más sencillo. EmDash fue creado porque el CDN más grande del mundo dijo: ¿Y si construyeramos WordPress desde cero en 2026?&lt;/p&gt;
&lt;p&gt;Una comparación detallada de funcionalidades entre EmDash y WordPress puede encontrarse en nuestro artículo complementario: &lt;a href=&quot;/es/emdash-vs-wordpress-feature-comparison-2026/&quot;&gt;EmDash vs. WordPress - comparacion de funcionalidades 2026&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;¿Quieres construir con Astro hoy mismo? Descubre &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;mis servicios de desarrollo con Astro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En wppoland.com seguiremos cubriendo la evolución de EmDash con el mismo rigor y perspectiva práctica que aplicamos a todo lo que publicamos. Si trabajas con WordPress, no necesitas alarmarte. Pero sí necesitas prestar atención. La web está cambiando, y los CMS cambiarán con ella.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fuentes consultadas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/emdash-wordpress/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Cloudflare Blog - EmDash announcement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/emdash-cms/emdash&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;EmDash GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://joost.blog/emdash-cms/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Joost de Valk - EmDash CMS analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.techradar.com/pro/cloudflare-launches-emdash-the-spiritual-successor-that-wants-to-take-on-wordpress&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;TechRadar - Cloudflare launches EmDash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.phoronix.com/news/Cloudflare-EmDash&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Phoronix - Cloudflare EmDash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cybernews.com/tech/cloudflare-unveils-wordpress-competitor-emdash-cms/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CyberNews - Cloudflare unveils EmDash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>wordpress</category><category>technology</category><category>cms</category><category domain="tag">emdash</category><category domain="tag">cloudflare</category><category domain="tag">astro</category><category domain="tag">typescript</category><category domain="tag">open-source</category><category domain="tag">cms</category><category domain="tag">wordpress-alternative</category><enclosure url="https://wppoland.com/images/og/emdash-cms-dashboard-2026.jpg" type="image/jpeg"/></item><item><title>WordPress 7.0 RC1 se pública, la cuota de mercado cae por debajo del 43% y la IA transforma el ecosistema</title><link>https://wppoland.com/es/wordpress-7-cuota-mercado-ia-marzo-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-7-cuota-mercado-ia-marzo-2026/</guid><description>WordPress 7.0 RC1 se lanza en medio de preocupaciones de los core committers, la cuota de mercado cae por debajo del 43% por primera vez desde 2022 ante el auge de sitios creados con IA, y Elementor lanza Angie - las noticias más importantes de la semana en WordPress.</description><pubDate>Fri, 27 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;La última semana de marzo de 2026 trajo algunas de las noticias más trascendentales sobre WordPress en meses. &lt;strong&gt;WordPress 7.0 RC1&lt;/strong&gt; se publicó en medio de discusiones francas sobre si realmente estaba preparado para su lanzamiento. Los datos de cuota de mercado mostraron a WordPress cayendo por debajo del 43% por primera vez desde 2022 - no porque la competencia esté ganando, sino porque la inteligencia artificial está cambiando radicalmente la forma en que se construyen los sitios web. Y en el propio frente de la IA, tanto &lt;strong&gt;WordPress.com&lt;/strong&gt; como &lt;strong&gt;Elementor&lt;/strong&gt; dieron pasos significativos para integrar agentes de IA más profundamente en el flujo de trabajo de WordPress.&lt;/p&gt;
&lt;p&gt;A continuación, un análisis detallado de los desarrollos más importantes de esta semana y lo que significan para los profesionales de WordPress, los propietarios de agencias y los creadores de sitios web.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;wordpress-70-rc1-llega-en-medio-de-preocupaciones-sobre-la-preparación-del-lanzamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-70-rc1-llega-en-medio-de-preocupaciones-sobre-la-preparación-del-lanzamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress 7.0 RC1 llega en medio de preocupaciones sobre la preparación del lanzamiento&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WordPress 7.0 RC1&lt;/strong&gt; se publicó el martes 25 de marzo, pero no sin antes generar conversaciones abiertas y sinceras en el canal #core de Slack sobre si el lanzamiento estaba realmente preparado.&lt;/p&gt;
&lt;p&gt;Tras una sesión improvisada de revisión de errores antes de la fiesta de lanzamiento, todavía quedaban &lt;strong&gt;21 tickets abiertos&lt;/strong&gt; en el hito. Los core committers &lt;strong&gt;Aaron Jorbin&lt;/strong&gt; y &lt;strong&gt;Joe Dolson&lt;/strong&gt; compartieron sus reservas públicamente. Jorbin dijo que “todavía le preocupaba que realmente no sintiéramos que este es un código que estaríamos seguros de publicar, y por lo tanto no es un verdadero RC”. Dolson añadió que los tickets abiertos incluían incidencias conocidas que él “no consideraría publicables”.&lt;/p&gt;
&lt;p&gt;Ambos terminaron dando luz verde de todos modos. Jorbin citó una publicación de &lt;strong&gt;Matt Mullenweg&lt;/strong&gt; sobre los riesgos de esperar demasiado para publicar, y Dolson reconoció que “simplemente no era lo ideal”. El core committer &lt;strong&gt;Jonathan Desrosiers&lt;/strong&gt;, patrocinado por Bluehost, dijo que su objetivo era que todos se sintieran seguros con el trabajo restante y con la capacidad del equipo para resolver las incidencias pendientes antes del lanzamiento estable.&lt;/p&gt;
&lt;h3 id=&quot;un-ciclo-de-lanzamiento-complicado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#un-ciclo-de-lanzamiento-complicado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Un ciclo de lanzamiento complicado&lt;/h3&gt;
&lt;p&gt;Por cualquier criterio que se mida, WordPress 7.0 ha tenido un ciclo de desarrollo complicado. El proceso incluyó &lt;strong&gt;seis versiones beta&lt;/strong&gt; y un RC1 retrasado - muy por encima de la cadencia de lanzamiento habitual. El volumen considerable de cambios incluidos en una versión mayor, combinado con una menor disponibilidad de colaboradores (un desafío recurrente en los ciclos de lanzamiento recientes), ha estirado el proceso considerablemente.&lt;/p&gt;
&lt;p&gt;Mullenweg, publicando en #core después de la fiesta de lanzamiento, pareció reconocer la tensión: “Prefiero tener un 7.0 realmente estable que cumplir la fecha de WC Asia, así que asegurémonos de que esta versión sea realmente sólida”.&lt;/p&gt;
&lt;p&gt;RC2 se publicó al día siguiente sin incidencias reportadas, y nuevos colaboradores se unieron al esfuerzo de pruebas - una señal positiva de la capacidad del proyecto para móvilizar recursos de la comunidad cuando es necesario.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-esto-significa-para-agencias-y-propietarios-de-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-esto-significa-para-agencias-y-propietarios-de-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que esto significa para agencias y propietarios de sitios&lt;/h3&gt;
&lt;p&gt;Si gestionas sitios WordPress de forma profesional, la conclusión es clara: &lt;strong&gt;no actualices sitios en producción a la versión 7.0 el día de su lanzamiento&lt;/strong&gt;. Realiza pruebas exhaustivas en entornos de staging. Las discusiones abiertas sobre la preparación son en realidad una señal saludable - la transparencia sobre las preocupaciones es mucho mejor que la preocupación silenciosa - pero también indican que una precaución adicional durante el despliegue es más que justificada.&lt;/p&gt;
&lt;p&gt;Para los clientes de WPPoland, seguimos nuestra práctica habitual: todas las actualizaciones mayores pasan por nuestro &lt;a href=&quot;/es/wordpress-maintenance/&quot;&gt;proceso de staging en 4 pasos&lt;/a&gt; antes de tocar producción. WordPress 7.0 no será una excepción.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;la-cuota-de-mercado-de-wordpress-cae-por-debajo-del-43-mientras-la-ia-transforma-la-creación-de-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-cuota-de-mercado-de-wordpress-cae-por-debajo-del-43-mientras-la-ia-transforma-la-creación-de-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La cuota de mercado de WordPress cae por debajo del 43% mientras la IA transforma la creación de sitios&lt;/h2&gt;
&lt;p&gt;WordPress ahora impulsa el &lt;strong&gt;42,4% de la web&lt;/strong&gt;, según W3Techs. Es la primera vez que la cifra cae por debajo del 43% desde 2022. Los sospechosos habituales - &lt;strong&gt;Shopify&lt;/strong&gt;, &lt;strong&gt;Wix&lt;/strong&gt; y &lt;strong&gt;Squarespace&lt;/strong&gt; - registraron cada uno modestos aumentos del 0,1% en los últimos tres meses. Pero el número más interesante está en otra parte.&lt;/p&gt;
&lt;h3 id=&quot;el-ascenso-de-none&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ascenso-de-none&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ascenso de “None”&lt;/h3&gt;
&lt;p&gt;La &lt;strong&gt;categoría “None”&lt;/strong&gt; en los datos de W3Techs - sitios que no ejecutan ningún CMS detectable - subió del 28,6% al 29%. Este es su &lt;strong&gt;primer aumento en más de una década&lt;/strong&gt;, posiblemente en toda su historia. ¿Qué lo está impulsando? La inteligencia artificial.&lt;/p&gt;
&lt;p&gt;Los desarrolladores están construyendo y reconstruyendo sitios con herramientas de IA, y no siempre eligen WordPress cuando lo hacen. Los asistentes de código con IA hacen que sea trivial generar un sitio estático completo - HTML, CSS, JavaScript - sin ninguna capa de CMS. Para sitios sencillos (portfolios, páginas de aterrizaje, blogs), la pregunta “¿necesito un CMS?” tiene cada vez más una respuesta diferente a la que tenía hace dos años.&lt;/p&gt;
&lt;h3 id=&quot;la-migración-de-joost-de-valk&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-migración-de-joost-de-valk&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La migración de Joost de Valk&lt;/h3&gt;
&lt;p&gt;El fundador de &lt;strong&gt;Yoast&lt;/strong&gt;, &lt;strong&gt;Joost de Valk&lt;/strong&gt;, puso un rostro prominente a esta tendencia cuando compartió que había migrado su blog personal de WordPress a &lt;strong&gt;Astro&lt;/strong&gt;. Publicó un artículo titulado “¿Necesitas un CMS?” y su respuesta fue: para la mayoría de los sitios, cada vez menos.&lt;/p&gt;
&lt;p&gt;Esto es relevante no porque una sola migración importe por sí misma, sino por quién está planteando el argumento. De Valk construyó uno de los plugins de WordPress más exitosos de la historia. Cuando alguien con esa profundidad de experiencia en WordPress dice que la capa de CMS es prescindible para muchos casos de uso, señala un cambio real de mentalidad dentro de la comunidad.&lt;/p&gt;
&lt;h3 id=&quot;la-respuesta-de-mullenweg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-respuesta-de-mullenweg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La respuesta de Mullenweg&lt;/h3&gt;
&lt;p&gt;Matt Mullenweg publicó su propia opinión: “Siento que ‘Este es el año de los sitios estáticos’ es el nuevo ‘Este es el año del escritorio Linux’”. La broma se refiere a que el escritorio Linux ha estado casí listo para usuarios convencionales durante 30 años y nunca terminó de llegar.&lt;/p&gt;
&lt;p&gt;La comparación es ingeniosa pero podría subestimar lo que está ocurriendo. Los sitios estáticos en 2020 requerían habilidades técnicas significativas. Los sitios estáticos en 2026, con la IA generando el código, requieren un prompt. Esa es una curva de accesibilidad fundamentalmente diferente.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-esto-significa-para-los-profesionales-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-esto-significa-para-los-profesionales-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que esto significa para los profesionales de WordPress&lt;/h3&gt;
&lt;p&gt;Durante años, la comunidad de WordPress asumió que la amenaza competitiva venía de &lt;strong&gt;Shopify&lt;/strong&gt;, &lt;strong&gt;Wix&lt;/strong&gt; y &lt;strong&gt;Squarespace&lt;/strong&gt; - plataformas con grandes presupuestos de marketing que apuntan a la cuota de mercado de WordPress. Nadie tenía “None” en su cartón de bingo.&lt;/p&gt;
&lt;p&gt;La implicación práctica para las agencias: la propuesta de valor de WordPress debe pasar de “fácil de crear un sitio” (la IA puede hacerlo sin un CMS) a “fácil de gestionar, escalar e integrar un sitio a lo largo del tiempo”. Las fortalezas de WordPress - su ecosistema de plugins, su flujo de trabajo editorial, su flexibilidad para sitios complejos - siguen siendo ventajas genuinas. Pero el caso de uso básico está bajo presión desde una dirección que nadie esperaba.&lt;/p&gt;
&lt;p&gt;En WPPoland, hemos estado siguiendo esta tendencia de cerca. Nuestros &lt;a href=&quot;/es/wordpress-migration/&quot;&gt;servicios de migración&lt;/a&gt; incluyen tanto migraciones tradicionales de CMS a CMS como, cada vez más, &lt;a href=&quot;/es/nextjs-astro-migration/&quot;&gt;configuraciónes de WordPress headless&lt;/a&gt; donde WordPress funciona como backend de contenido mientras un framework moderno se encarga del frontend. Este enfoque preserva las fortalezas de gestión de contenido de WordPress a la vez que ofrece los beneficios de rendimiento que hacen atractivos a los sitios estáticos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;wordpresscom-otorga-acceso-de-escritura-a-agentes-de-ia-mediante-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpresscom-otorga-acceso-de-escritura-a-agentes-de-ia-mediante-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress.com otorga acceso de escritura a agentes de IA mediante MCP&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WordPress.com&lt;/strong&gt; amplió su integración MCP (Model Context Protocol) para incluir capacidades de escritura, añadiendo &lt;strong&gt;19 nuevas funcionalidades&lt;/strong&gt; en seis tipos de contenido: publicaciónes, páginas, comentarios, categorías, etiquetas y medios.&lt;/p&gt;
&lt;p&gt;La actualización, anunciada por &lt;strong&gt;Jonathan Bossenger&lt;/strong&gt; de Automattic, significa que los agentes de IA ahora pueden crear, editar y gestionar contenido en sitios WordPress.com - no solo leerlo. Anteriormente, la integración MCP era de solo lectura, útil para consultar contenido pero no para modificarlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Matt Mullenweg&lt;/strong&gt; destacó la noticia en su blog y animó a los usuarios a conectarlo con cualquier herramienta de IA que estén utilizando y “divertirse”.&lt;/p&gt;
&lt;h3 id=&quot;por-qué-mcp-es-relevante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-mcp-es-relevante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué MCP es relevante&lt;/h3&gt;
&lt;p&gt;MCP es el protocolo que permite a las herramientas de IA (Claude, ChatGPT, agentes personalizados) interactuar con servicios externos de forma estructurada. Con acceso de escritura, un sitio WordPress.com se convierte en algo que un agente de IA puede gestionar activamente: redactando publicaciónes, categorizando contenido, moderando comentarios, subiendo medios.&lt;/p&gt;
&lt;p&gt;Para las agencias que gestionan múltiples sitios WordPress.com, esto abre posibilidades de automatización de flujos de trabajo que anteriormente requerían integraciones personalizadas con la API. Un agente de IA conectado mediante MCP puede encargarse de operaciones rutinarias de contenido - crear borradores de publicaciónes a partir de briefings, etiquetar y categorizar contenido, gestionar la moderación de comentarios - liberando tiempo humano para la estrategia y el trabajo creativo.&lt;/p&gt;
&lt;h3 id=&quot;limitaciones-actuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones-actuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones actuales&lt;/h3&gt;
&lt;p&gt;La integración MCP está actualmente limitada a WordPress.com (alojado). Los sitios WordPress autoalojados necesitarían una implementación de servidor MCP separada. El proyecto WordPress AI Connectors (cubierto por separado esta semana) está trabajando en funcionalidades relacionadas pero diferentes para sitios autoalojados, aunque se han planteado preocupaciones sobre los controles de acceso a nivel de plugin.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;elementor-lanza-angie-un-plugin-de-ia-gratuito-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elementor-lanza-angie-un-plugin-de-ia-gratuito-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elementor lanza Angie, un plugin de IA gratuito para WordPress&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Elementor&lt;/strong&gt; lanzó &lt;strong&gt;Angie&lt;/strong&gt;, un plugin de IA agéntica que ha estado en pruebas públicas desde septiembre de 2025. La primera capacidad publicada es &lt;strong&gt;Angie Code&lt;/strong&gt;, que permite a los usuarios crear funcionalidades personalizadas en WordPress usando instrucciones en lenguaje natural.&lt;/p&gt;
&lt;p&gt;El diferenciador clave respecto a los generadores de código genéricos con IA: Angie escribe el código y luego &lt;strong&gt;lo prueba en un entorno aislado (sandbox)&lt;/strong&gt; antes de que cualquier cosa se active en el sitio. Comprende el entorno WordPress para el que está desarrollando - plugins instalados, tema activo, configuración del sitio - en lugar de generar código en el vacío.&lt;/p&gt;
&lt;h3 id=&quot;el-caso-de-uso-para-agencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-caso-de-uso-para-agencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El caso de uso para agencias&lt;/h3&gt;
&lt;p&gt;La responsable de WordPress en Elementor, &lt;strong&gt;Miriam Schwab&lt;/strong&gt;, declaró a The Repository que Angie Code fue diseñado para abordar un problema que las agencias encuentran constantemente: clientes que solicitan funcionalidades personalizadas difíciles de entregar dentro de un presupuesto y plazo realistas. Las pequeñas personalizaciónes - un tipo de contenido personalizado, un comportamiento específico de formulario, una regla de visualización condicional - a menudo requieren más tiempo para definir e implementar de lo que los clientes esperan.&lt;/p&gt;
&lt;p&gt;La propuesta de Angie es que puede gestionar estas solicitudes directamente: describe lo que necesitas en lenguaje natural, y Angie produce un fragmento de código funcional que ha sido verificado en tu entorno de sitio específico. El plugin es gratuito, lo que reduce la barrera de entrada para agencias y freelancers que quieran probarlo.&lt;/p&gt;
&lt;h3 id=&quot;implicaciones-más-amplias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implicaciones-más-amplias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implicaciones más amplias&lt;/h3&gt;
&lt;p&gt;Tanto la ampliación de MCP en WordPress.com como Angie de Elementor apuntan en la misma dirección: &lt;strong&gt;la IA se está convirtiendo en un participante activo en la gestión de sitios WordPress&lt;/strong&gt;, no solo una herramienta de generación de contenido. La pregunta para el ecosistema WordPress es si estas integraciones harán que WordPress sea más competitivo frente a las alternativas nativas de IA que están impulsando el crecimiento de la categoría “None”, o si representan un paso de transición antes de que los sitios generados por IA eludan por completo la capa del CMS.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;más-noticias-que-merece-la-pena-seguir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#más-noticias-que-merece-la-pena-seguir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Más noticias que merece la pena seguir&lt;/h2&gt;
&lt;h3 id=&quot;wp-community-collective-pública-un-estándar-de-compensación-para-colaboradores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wp-community-collective-pública-un-estándar-de-compensación-para-colaboradores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WP Community Collective pública un estándar de compensación para colaboradores&lt;/h3&gt;
&lt;p&gt;El &lt;strong&gt;WP Community Collective&lt;/strong&gt; publicó un marco de compensación de cinco niveles para colaboradores de código abierto - el primer estándar de compensación versiónado públicamente para el ecosistema WordPress. Este es un paso significativo hacia hacer que la contribución al código abierto sea sostenible como carrera profesional, no solo como actividad voluntaria.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-ai-connectors-carece-de-controles-a-nivel-de-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-ai-connectors-carece-de-controles-a-nivel-de-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress AI Connectors carece de controles a nivel de plugin&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Marcus Burnette&lt;/strong&gt; de The WP World planteó preocupaciones sobre el acceso no controlado de los plugins a WordPress AI Connectors. Actualmente, cualquier plugin puede usar la infraestructura de AI Connectors sin consentimiento explícito del usuario ni permisos por plugin. El equipo de IA de WordPress reconoció la brecha y está desarrollando dos funcionalidades para abordarla: una capa de gestión de consentimiento y controles de acceso por plugin.&lt;/p&gt;
&lt;h3 id=&quot;retrospectiva-del-equipo-de-seguridad-de-wordpress-sobre-la-versión-692&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#retrospectiva-del-equipo-de-seguridad-de-wordpress-sobre-la-versión-692&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Retrospectiva del equipo de seguridad de WordPress sobre la versión 6.9.2&lt;/h3&gt;
&lt;p&gt;El equipo de seguridad de WordPress publicó una retrospectiva sobre la serie de versiones 6.9.x, detallando el vacío en la lista de verificación que condujo a la versión 6.9.4 y las tensiones con la dirección del proyecto sobre las decisiones de backporting. El documento ofrece una mirada poco habitual a los procesos internos (y puntos de fricción) de los lanzamientos de seguridad de WordPress. Pone de relieve los desafíos de mantener la seguridad en múltiples ramás activas - un problema que se vuelve más complejo con cada versión mayor.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lo-que-todo-esto-significa-en-conjunto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-todo-esto-significa-en-conjunto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que todo esto significa en conjunto&lt;/h2&gt;
&lt;p&gt;Las noticias de esta semana pintan un panorama de WordPress en un punto de inflexión. El proceso de lanzamiento de la versión 7.0 muestra un proyecto lidiando con la mecánica de publicar una versión mayor con recursos limitados de colaboradores. Los datos de cuota de mercado muestran presión externa desde una dirección inesperada. Y los avances en IA muestran un ecosistema que se apresura por mantener su relevancia en un mundo donde los agentes de IA se están convirtiendo en participantes de primera clase en el desarrollo web.&lt;/p&gt;
&lt;p&gt;Para los profesionales de WordPress, las conclusiones accionables son las siguientes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prueba WordPress 7.0 a fondo antes de desplegarlo&lt;/strong&gt; - el proceso de RC ha sido transparente sobre las preocupaciones, y esa transparencia debería informar tu estrategia de despliegue&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Articula tu propuesta de valor de WordPress más allá de la “configuración fácil”&lt;/strong&gt; - la IA puede generar un sitio, pero no puede gestionar un flujo de trabajo de contenido complejo, un ecosistema de plugins ni un proceso editorial multiusuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experimenta con integraciones de IA ahora&lt;/strong&gt; - ya sea WordPress.com MCP, Elementor Angie o herramientas como &lt;a href=&quot;/es/nextjs-astro-migration/&quot;&gt;nuestro propio enfoque de WordPress headless&lt;/a&gt;, entender cómo encaja la IA en los flujos de trabajo de WordPress se está convirtiendo en una necesidad profesional&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El ecosistema WordPress no está en crisis, pero está en movimiento. Los proyectos y agencias que se adapten más rápido serán los que prosperen.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/wordpress-vs-wix-squarespace-2026/&quot;&gt;WordPress vs Wix vs Squarespace en 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/roi-of-migrating-to-wordpress-2026/&quot;&gt;ROI de migrar a WordPress en 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/nextjs-astro-migration/&quot;&gt;WordPress headless: guía de migración con Next.js y Astro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/wordpress-maintenance/&quot;&gt;Servicios de mantenimiento de WordPress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>wordpress</category><category>news</category><category domain="tag">wordpress-7</category><category domain="tag">market-share</category><category domain="tag">ai</category><category domain="tag">elementor</category><category domain="tag">wordpress-news</category><category domain="tag">wordpress-com</category><category domain="tag">mcp</category><category domain="tag">astro</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>De 40 a 98 PageSpeed: Como Transformamos una Tienda WooCommerce</title><link>https://wppoland.com/es/case-study-ecommerce-wordpress-optimization-2026/</link><guid isPermaLink="true">https://wppoland.com/es/case-study-ecommerce-wordpress-optimization-2026/</guid><description>Un estudio de caso detallado que muestra como WPPoland optimizo una tienda de muebles WooCommerce lenta de PageSpeed 40 a 98, reduciendo los tiempos de carga de 8 segundos a menos de 1 segundo y duplicando la tasa de conversión.</description><pubDate>Sun, 22 Mar 2026 01:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cada segundo cuenta en el e-commerce. La investigación muestra consistentemente que un retraso de un segundo en el tiempo de carga de la página puede reducir las conversiones en un 7 por ciento. Para una tienda WooCommerce que procesa miles de pedidos al mes, eso se traduce directamente en ingresos perdidos. Este caso de estudio documenta como nuestro equipo en WPPoland transformo una tienda europea de muebles e-commerce en dificultades, de una puntuacion PageSpeed de 40 a 98 - y lo que eso significo para sus resultados financieros.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;el-cliente-una-tienda-europea-de-muebles-e-commerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-cliente-una-tienda-europea-de-muebles-e-commerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Cliente: Una Tienda Europea de Muebles E-Commerce&lt;/h2&gt;
&lt;p&gt;Nuestro clientes opera una tienda de muebles online de tamaño medio que atiende a clientes en Europa Central y Occidental. Con un catálogo de más de 3.500 productos, 12.000 imágenes de productos y valores medios de pedido superiores a 420 EUR, habia mucho en juego. Su tienda WooCommerce habia crecido organicamente durante cinco años, acumulando deuda técnica con cada instalación de plugin, personalización de tema e integración de terceros.&lt;/p&gt;
&lt;p&gt;A principios de 2026, la tienda estaba perdiendo ingresos. Competidores con sitios más rápidos los estaban superando en los resultados de búsqueda, y los usuarios móviles - que representaban el 64 por ciento de su tráfico - estaban abandonando el sitio en masa.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;el-desafio-muerte-por-mil-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-desafio-muerte-por-mil-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Desafio: Muerte por Mil Plugins&lt;/h2&gt;
&lt;p&gt;Cuando auditamos el sitio por primera vez, encontramos un patron familiar pero grave de degradacion de rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;38 plugins activos&lt;/strong&gt;, muchos con funcionalidad superpuesta&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting compartido&lt;/strong&gt; sin cache a nivel de servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base de datos no optimizada&lt;/strong&gt; con más de 2,3 millones de transients expirados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;12.000 imágenes de productos&lt;/strong&gt; servidas como archivos PNG y JPEG sin comprimir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin CDN&lt;/strong&gt; - todos los recursos servidos desde un único servidor de origen en Alemania&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript bloqueador de renderizacion&lt;/strong&gt; de 14 plugins cargados en cada página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proceso de checkout de 5 pasos&lt;/strong&gt; con 22 campos de formulario&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El resultado era un sitio que se sentia roto en móvil. Las páginas tardaban 8 segundos en cargar, el diseño saltaba mientras los elementos se renderizaban, y el proceso de checkout era tan engorroso que el 68 por ciento de los visitantes abandonaba el sitio antes de completar una compra.&lt;/p&gt;
&lt;h3 id=&quot;metricas-antes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-antes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas Antes&lt;/h3&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Valor&lt;/th&gt;&lt;th&gt;Calificación&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Puntuacion PageSpeed (Movil)&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;Pobre&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Largest Contentful Paint (LCP)&lt;/td&gt;&lt;td&gt;8,2s&lt;/td&gt;&lt;td&gt;Pobre&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Interaction to Next Paint (INP)&lt;/td&gt;&lt;td&gt;680ms&lt;/td&gt;&lt;td&gt;Pobre&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cumulative Layout Shift (CLS)&lt;/td&gt;&lt;td&gt;0,35&lt;/td&gt;&lt;td&gt;Pobre&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tasa de conversión&lt;/td&gt;&lt;td&gt;2,3%&lt;/td&gt;&lt;td&gt;Bajo promedio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tasa de rebote&lt;/td&gt;&lt;td&gt;68%&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Time to First Byte (TTFB)&lt;/td&gt;&lt;td&gt;2,4s&lt;/td&gt;&lt;td&gt;Pobre&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso total de la página&lt;/td&gt;&lt;td&gt;6,8 MB&lt;/td&gt;&lt;td&gt;Excesivo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;nuestro-enfoque-metodología-de-optimización-en-7-fases&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nuestro-enfoque-metodología-de-optimización-en-7-fases&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nuestro Enfoque: Metodología de Optimización en 7 Fases&lt;/h2&gt;
&lt;p&gt;Seguimos un enfoque sistematico y basado en datos para la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt;. Cada fase se construye sobre la anterior, y medimos el impacto de cada cambio de forma aislada antes de pasar a la siguiente.&lt;/p&gt;
&lt;h3 id=&quot;fase-1-auditoria-técnica-dias-13&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-auditoria-técnica-dias-13&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Auditoria Técnica (Dias 1–3)&lt;/h3&gt;
&lt;p&gt;Antes de tocar una sola linea de código, pasamos tres dias analizando cada aspecto del sitio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Análisis GTmetrix Waterfall&lt;/strong&gt; para identificar las cadenas de peticiones más largas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas WebPageTest&lt;/strong&gt; multi-ubicacion desde Frankfurt, Londres y Varsovia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chrome DevTools Performance Panel&lt;/strong&gt; para analizar la actividad del hilo principal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registro de consultas a base de datos&lt;/strong&gt; con el plugin Query Monitor para encontrar consultas lentas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de plugins&lt;/strong&gt; para medir el impacto de cada plugin en el tiempo de carga&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La auditoria revelo que el 73 por ciento del tiempo de carga era atribuible a tres factores: imágenes no optimizadas (31 por ciento), JavaScript excesivo (26 por ciento) y consultas lentas a la base de datos (16 por ciento).&lt;/p&gt;
&lt;h3 id=&quot;fase-2-optimización-del-servidor-dias-47&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-optimización-del-servidor-dias-47&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Optimización del Servidor (Dias 4–7)&lt;/h3&gt;
&lt;p&gt;La base de cualquier sitio web rápido es el servidor. Migramos al clientes de hosting compartido a un VPS dedicado con el siguiente stack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Servidor Web LiteSpeed&lt;/strong&gt; con soporte HTTP/3 y QUIC&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis Object Cache&lt;/strong&gt; para caching persistente de objetos WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MariaDB 11.4&lt;/strong&gt; con configuración &lt;code&gt;my.cnf&lt;/code&gt; optimizada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP 8.3&lt;/strong&gt; con preloading de OPcache habilitado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La configuración de LiteSpeed incluyo ajustes específicos para WooCommerce:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Reglas de cache LiteSpeed para WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; LiteSpeed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  CacheLookup &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; .*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [E=Cache-Control:no-autoflush]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/cart.*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [E=Cache-Control:no-cache]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/checkout.*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [E=Cache-Control:no-cache]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/my-account.*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [E=Cache-Control:no-cache]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La configuración de Redis fue ajustada para el manejo de sesiones WooCommerce:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Adiciones a wp-config.php para Redis&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;127.0.0.1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PORT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;6379&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_DATABASE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_MAXTTL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;86400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PREFIX&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wc_store_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_SELECTIVE_FLUSH&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impacto despues de la Fase 2: TTFB bajo de 2,4 segundos a 180 milisegundos.&lt;/p&gt;
&lt;h3 id=&quot;fase-3-limpieza-de-base-de-datos-dias-811&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-limpieza-de-base-de-datos-dias-811&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Limpieza de Base de Datos (Dias 8–11)&lt;/h3&gt;
&lt;p&gt;Cinco años de operación habian dejado la base de datos en estado crítico. Realizamos una limpieza metodica:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Eliminacion de 2,3 millones de transients expirados&lt;/strong&gt; - la tabla &lt;code&gt;wp_options&lt;/code&gt; habia crecido a 847 MB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de 47 consultas lentas&lt;/strong&gt; identificadas durante la fase de auditoria&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adicion de indices faltantes&lt;/strong&gt; en las tablas &lt;code&gt;wp_postmeta&lt;/code&gt; y &lt;code&gt;wp_wc_order_stats&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpieza de post meta huerfanos&lt;/strong&gt; - 340.000 filas de metadatos de productos eliminados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversión de tablas a InnoDB&lt;/strong&gt; donde aun se usaba MyISAM&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Los indices personalizados mejoraron significativamente la búsqueda y filtracion de productos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Indices personalizados para consultas de productos WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; idx_meta_lookup (meta_key, meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_wc_product_meta_lookup &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; idx_price_stock (min_price, max_price, stock_status);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_woocommerce_order_items &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; idx_order_type (order_id, order_item_type);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impacto despues de la Fase 3: El tiempo de consulta a la base de datos bajo un 84 por ciento, y la tabla &lt;code&gt;wp_options&lt;/code&gt; se redujo de 847 MB a 12 MB.&lt;/p&gt;
&lt;h3 id=&quot;fase-4-optimización-de-imágenes-dias-1215&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-optimización-de-imágenes-dias-1215&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Optimización de Imágenes (Dias 12–15)&lt;/h3&gt;
&lt;p&gt;Con 12.000 imágenes de productos, esta fase tuvo el mayor impacto individual en el peso de la página:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conversión de todas las imágenes a AVIF&lt;/strong&gt; con fallback WebP para navegadores antiguos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementación de &lt;code&gt;srcset&lt;/code&gt; responsivo&lt;/strong&gt; con breakpoints en 320, 640, 960, 1.280 y 1.920 pixeles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adicion de lazy loading&lt;/strong&gt; con &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; nativo para todas las imágenes debajo del pliegue&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Definicion de dimensiones explicitas&lt;/strong&gt; en cada etiqueta &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt; para eliminar CLS de la carga de imágenes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementación de placeholders blur-up&lt;/strong&gt; usando Low Quality Image Placeholders (LQIP)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El pipeline de procesamiento de imágenes fue automatizado con un comando WP-CLI personalizado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; regenerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --image_size=all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=avif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --quality=75&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impacto despues de la Fase 4: El peso medio de la página bajo de 6,8 MB a 1,2 MB. El LCP mejoro de 5,1 segundos (despues de la optimización del servidor) a 1,4 segundos.&lt;/p&gt;
&lt;h3 id=&quot;fase-5-auditoria-javascript-dias-1619&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-5-auditoria-javascript-dias-1619&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 5: Auditoria JavaScript (Dias 16–19)&lt;/h3&gt;
&lt;p&gt;La auditoria JavaScript fue quirurgica. Categorizamos cada script en el sitio:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Categoría&lt;/th&gt;&lt;th&gt;Scripts&lt;/th&gt;&lt;th&gt;Accion&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Crítico (checkout, carrito)&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Conservado, optimizado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Análisis y seguimiento&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Movido a Web Worker&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Scripts de plugins no usados&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;Eliminados completamente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mejoras de UI&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Diferidos, cargados condicionalmente&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para los scripts de análisis, implementamos un patron de carga diferida:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Diferir scripts no criticos hasta la interaccion del usuario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loadDeferredScripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; scripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script[data-defer-src]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  scripts.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; newScript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    newScript.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; script.dataset.deferSrc;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    newScript.async &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    document.body.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(newScript);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mouseover&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;touchstart&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;scroll&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;keydown&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  window.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(event, loadDeferredScripts, { once: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;También eliminamos CSS bloqueador de renderizacion incorporando estilos críticos y difiriendo la hoja de estilos completa:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/wp-content/themes/theme/style.css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;style&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; onload&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;onload&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;stylesheet&apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/wp-content/themes/theme/style.css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impacto despues de la Fase 5: INP bajo de 680ms a 62ms. El payload total de JavaScript se redujo en un 78 por ciento.&lt;/p&gt;
&lt;h3 id=&quot;fase-6-optimización-del-checkout-dias-2023&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-6-optimización-del-checkout-dias-2023&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 6: Optimización del Checkout (Dias 20–23)&lt;/h3&gt;
&lt;p&gt;Un sitio rápido no significa nada si el checkout mata las conversiones. Rediseniamos todo el flujo de checkout:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reduccion de 5 pasos a 2&lt;/strong&gt; (envio + pago en una página, confirmacion en la siguiente)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminacion de 14 campos de formulario innecesarios&lt;/strong&gt; (nombre de empresa, telefono 2, fax, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adicion de pago expres&lt;/strong&gt; (Apple Pay, Google Pay, Klarna)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementación de autocompletado de dirección&lt;/strong&gt; usando la API de Google Places&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adicion de validación de formulario en tiempo real&lt;/strong&gt; para prevenir errores al enviar&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar campos de checkout WooCommerce innecesarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_checkout_fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($fields) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;billing&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;billing_company&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;billing&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;billing_phone_2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;billing&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;billing_fax&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;order_comments&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $fields;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar soporte para pasarela de pago expres&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_review_order_before_payment&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;class_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WC_Payment_Gateway&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div id=&quot;express-checkout-buttons&quot; class=&quot;express-payment-wrapper&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        do_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_express_checkout_buttons&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impacto despues de la Fase 6: La tasa de abandono de carrito bajo un 34 por ciento. El tiempo medio de completar el checkout se redujo de 4 minutos 12 segundos a 1 minuto 38 segundos.&lt;/p&gt;
&lt;h3 id=&quot;fase-7-cdn-y-edge-caching-dias-2428&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-7-cdn-y-edge-caching-dias-2428&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 7: CDN y Edge Caching (Dias 24–28)&lt;/h3&gt;
&lt;p&gt;La última capa de optimización aseguro que las ganancias de rendimiento fueran consistentes en todos los mercados europeos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Pro&lt;/strong&gt; con reglas de página personalizadas para WooCommerce&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge caching&lt;/strong&gt; para páginas de productos estaticas con TTL de 4 horas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encabezados de cache del navegador&lt;/strong&gt; con cache-busting via hashing de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compresion Brotli&lt;/strong&gt; habilitada en el edge para todos los recursos basados en texto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Early Hints (103)&lt;/strong&gt; para recursos críticos&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Reglas de página Cloudflare&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;URL: *example.com/product/*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cache Level: Cache Everything&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Edge Cache TTL: 4 hours&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Browser Cache TTL: 1 hour&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;URL: *example.com/cart*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cache Level: Bypass&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;URL: *example.com/checkout*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cache Level: Bypass&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impacto despues de la Fase 7: TTFB global bajo a menos de 100 milisegundos. Usuarios en Europa Occidental experimentaron cargas completas de página por debajo de 800ms.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;los-resultados-metricas-despues&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-resultados-metricas-despues&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los Resultados: Metricas Despues&lt;/h2&gt;
&lt;p&gt;Despues de cuatro semanas de optimización sistemática, la transformación fue dramatica:&lt;/p&gt;



























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Antes&lt;/th&gt;&lt;th&gt;Despues&lt;/th&gt;&lt;th&gt;Mejora&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Puntuacion PageSpeed (Movil)&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;98&lt;/td&gt;&lt;td&gt;+145%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Largest Contentful Paint (LCP)&lt;/td&gt;&lt;td&gt;8,2s&lt;/td&gt;&lt;td&gt;0,8s&lt;/td&gt;&lt;td&gt;-90%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Interaction to Next Paint (INP)&lt;/td&gt;&lt;td&gt;680ms&lt;/td&gt;&lt;td&gt;45ms&lt;/td&gt;&lt;td&gt;-93%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cumulative Layout Shift (CLS)&lt;/td&gt;&lt;td&gt;0,35&lt;/td&gt;&lt;td&gt;0,02&lt;/td&gt;&lt;td&gt;-94%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tasa de conversión&lt;/td&gt;&lt;td&gt;2,3%&lt;/td&gt;&lt;td&gt;4,8%&lt;/td&gt;&lt;td&gt;+108%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tasa de rebote&lt;/td&gt;&lt;td&gt;68%&lt;/td&gt;&lt;td&gt;34%&lt;/td&gt;&lt;td&gt;-50%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Time to First Byte (TTFB)&lt;/td&gt;&lt;td&gt;2,4s&lt;/td&gt;&lt;td&gt;0,09s&lt;/td&gt;&lt;td&gt;-96%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso total de la página&lt;/td&gt;&lt;td&gt;6,8 MB&lt;/td&gt;&lt;td&gt;1,1 MB&lt;/td&gt;&lt;td&gt;-84%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;impacto-en-el-negocio-los-números-que-importan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-el-negocio-los-números-que-importan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en el Negocio: Los Números que Importan&lt;/h2&gt;
&lt;p&gt;Las metricas técnicas son satisfactorias, pero las metricas de negocio justifican la inversión:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;+108% aumento en la tasa de conversión&lt;/strong&gt; - de 2,3% a 4,8%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+156% ingresos móviles&lt;/strong&gt; - los usuarios móviles finalmente podian comprar sin frustracion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-52% reduccion en la tasa de rebote&lt;/strong&gt; - los visitantes se quedaban y navegaban en lugar de irse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ROI alcanzado en 6 semanas&lt;/strong&gt; - el proyecto de optimización se pago solo en menos de dos meses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+23% valor medio del pedido&lt;/strong&gt; - la navegación más rápida de productos llevo a más artículos en el carrito&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+41% tráfico organico&lt;/strong&gt; - los Core Web Vitals mejorados contribuyeron a mejores rankings de búsqueda en 8 semanas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El clientes estimo que el aumento anual de ingresos atribuible a la optimización supero los 380.000 EUR, frente a un coste de proyecto que represento una fraccion de esa cifra.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lecciones-aprendidas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lecciones-aprendidas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lecciones Aprendidas&lt;/h2&gt;
&lt;p&gt;Cada proyecto de optimización nos ensena algo nuevo. Estas son las conclusiones clave de este compromiso:&lt;/p&gt;
&lt;h3 id=&quot;1-la-infraestructura-del-servidor-es-la-base&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-infraestructura-del-servidor-es-la-base&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La Infraestructura del Servidor es la Base&lt;/h3&gt;
&lt;p&gt;Ninguna cantidad de optimización de frontend puede compensar un servidor lento. La migración de hosting compartido a un VPS LiteSpeed optimizado represento el 35 por ciento de la mejora total de rendimiento.&lt;/p&gt;
&lt;h3 id=&quot;2-la-higiene-de-la-base-de-datos-no-es-negociable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-la-higiene-de-la-base-de-datos-no-es-negociable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. La Higiene de la Base de Datos No es Negociable&lt;/h3&gt;
&lt;p&gt;Las tiendas WooCommerce generan enormes cantidades de datos transientes. Sin limpieza regular, la tabla &lt;code&gt;wp_options&lt;/code&gt; se convierte en un cuello de botella que afecta cada carga de página. La limpieza semanal automatizada deberia ser estándar para cualquier tienda WooCommerce.&lt;/p&gt;
&lt;h3 id=&quot;3-menos-plugins-tienda-mas-rápida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-menos-plugins-tienda-mas-rápida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Menos Plugins, Tienda Mas Rápida&lt;/h3&gt;
&lt;p&gt;De los 38 plugins instalados, 14 estaban sin uso, eran redundantes o reemplazables con fragmentos de código ligeros. Cada plugin agrega consultas a la base de datos, JavaScript y CSS - incluso cuando su funcionalidad no es necesaria en la página actual.&lt;/p&gt;
&lt;h3 id=&quot;4-las-imágenes-son-la-fruta-al-alcance-de-la-mano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-las-imágenes-son-la-fruta-al-alcance-de-la-mano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Las Imágenes son la Fruta al Alcance de la Mano&lt;/h3&gt;
&lt;p&gt;La conversión a AVIF y la implementación de imágenes responsivas redujeron el peso de la página en más del 80 por ciento. Este único cambio, que puede automatizarse en gran medida, ofrece la mejora más visible para los usuarios finales.&lt;/p&gt;
&lt;h3 id=&quot;5-la-ux-del-checkout-es-una-palanca-de-ingresos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-la-ux-del-checkout-es-una-palanca-de-ingresos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. La UX del Checkout es una Palanca de Ingresos&lt;/h3&gt;
&lt;p&gt;El rediseño del checkout, aunque no es una optimización de “rendimiento” tradicional, tuvo el impacto más directo en los ingresos. Reducir la friccion en el proceso de compra es tan valioso como reducir los tiempos de carga.&lt;/p&gt;
&lt;h3 id=&quot;6-medir-todo-de-forma-aislada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-medir-todo-de-forma-aislada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Medir Todo de Forma Aislada&lt;/h3&gt;
&lt;p&gt;Al implementar cambios en fases y medir despues de cada una, pudimos cuantificar el impacto exacto de cada optimización. Este enfoque basado en datos previene esfuerzos desperdiciados y construye una narrativa clara para los stakeholders.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen-del-cronograma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-del-cronograma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen del Cronograma&lt;/h2&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Semana&lt;/th&gt;&lt;th&gt;Fase&lt;/th&gt;&lt;th&gt;Actividades Clave&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Semana 1&lt;/td&gt;&lt;td&gt;Auditoria + Servidor&lt;/td&gt;&lt;td&gt;Auditoria técnica completa, migración de servidor, configuración Redis&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Semana 2&lt;/td&gt;&lt;td&gt;Base de datos + Imágenes&lt;/td&gt;&lt;td&gt;Limpieza de transients, optimización de consultas, conversión AVIF&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Semana 3&lt;/td&gt;&lt;td&gt;JavaScript + Checkout&lt;/td&gt;&lt;td&gt;Eliminacion de plugins, diferimiento de scripts, rediseño del checkout&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Semana 4&lt;/td&gt;&lt;td&gt;CDN + QA&lt;/td&gt;&lt;td&gt;Configuración de Cloudflare, edge caching, pruebas exhaustivas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tu-tienda-woocommerce-esta-perdiendo-dinero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tu-tienda-woocommerce-esta-perdiendo-dinero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tu Tienda WooCommerce Esta Perdiendo Dinero?&lt;/h2&gt;
&lt;p&gt;Si tu tienda puntua por debajo de 70 en PageSpeed Insights, estas perdiendo clientes cada dia. Nuestro &lt;a href=&quot;/es/optimizaci%C3%B3n-woocommerce/&quot;&gt;servicio de optimización WooCommerce&lt;/a&gt; sigue la misma métodología probada descrita en este caso de estudio, adaptada a tu tienda e infraestructura específicas.&lt;/p&gt;
&lt;p&gt;Ofrecemos una &lt;strong&gt;auditoria de rendimiento inicial gratuita&lt;/strong&gt; - un informe detallado que muestra exactamente donde tu tienda pierde velocidad y cuanto de ingresos te cuesta. Sin obligaciones, sin discurso de ventas, solo datos.&lt;/p&gt;
&lt;p&gt;Contacta a &lt;a href=&quot;https://wppoland.com/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para programar tu auditoria, o conoce mas sobre nuestros servicios de &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos Relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/achieving-100-100-core-web-vitals-guide-2026/&quot;&gt;Lograr 100/100 Core Web Vitals para WordPress en 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizaci%C3%B3n-woocommerce/&quot;&gt;Optimización de rendimiento WooCommerce&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>performance</category><category>woocommerce</category><category>case-study</category><category domain="tag">woocommerce-optimización</category><category domain="tag">page-speed</category><category domain="tag">ecommerce-rendimiento</category><category domain="tag">core-web-vitals</category><category domain="tag">wordpress-speed-2026</category><category domain="tag">optimización-conversión</category><category domain="tag">litespeed</category><category domain="tag">redis-cache</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Endurecimiento de Seguridad WordPress 2026: La Guía Completa del Servidor a la Aplicación</title><link>https://wppoland.com/es/wordpress-security-hardening-complete-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-security-hardening-complete-guide-2026/</guid><description>Una guía completa de endurecimiento de seguridad WordPress para 2026 - configuración de servidor, autenticación con Passkeys, configuración WAF, cabeceras CSP, protección de base de datos, seguridad headless y una checklist de auditoría de 25 puntos.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;WordPress alimenta más del 43% de la web en 2026. Esa dominancia lo convierte en el sistema de gestión de contenidos más atacado del planeta - se estima que más de 90.000 ataques impactan sitios WordPress cada minuto. El panorama de amenazas ha evolucionado mucho más allá de los intentos de login por fuerza bruta. Ataques a la cadena de suministro a través de actualizaciones de plugins comprometidas, campañas de phishing generadas por IA dirigidas a credenciales de admin, exploits zero-day en page builders populares y redes de bots sofisticadas capaces de evadir CAPTCHAs tradicionales definen la realidad actual.&lt;/p&gt;
&lt;p&gt;La seguridad no es un plugin que instalas y olvidas. Es una disciplina en capas que abarca configuración de servidor, endurecimiento de aplicación, arquitectura de autenticación, filtrado a nivel de red, monitorización y respuesta a incidentes. Esta guía cubre cada capa sistemáticamente, proporcionando configuraciónes accionables y una checklist de auditoría completa que puedes implementar hoy.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;el-panorama-de-seguridad-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-panorama-de-seguridad-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Panorama de Seguridad WordPress en 2026&lt;/h2&gt;
&lt;p&gt;El ecosistema WordPress enfrenta un perfil de amenazas fundamentalmente diferente al de hace apenas dos años. Según el informe anual de Patchstack de 2025, el &lt;strong&gt;97% de las vulnerabilidades de WordPress&lt;/strong&gt; se originaron en plugins y temas, no en el núcleo de WordPress. El software base ha madurado significativamente, pero el ecosistema a su alrededor permanece como el vector de ataque principal.&lt;/p&gt;
&lt;p&gt;Estadísticas clave que moldean el panorama de amenazas en 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4.700 millones&lt;/strong&gt; de intentos de login impulsados por bots bloqueados mensualmente en los principales proveedores de hosting WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aumento del 38%&lt;/strong&gt; en ataques a la cadena de suministro dirigidos a mecanismos de actualización de plugins populares&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;67%&lt;/strong&gt; de los sitios WordPress comprometidos tenían plugins desactualizados en el momento de la brecha&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ataques impulsados por IA&lt;/strong&gt; ahora generan emails de phishing contextualmente relevantes dirigidos a administradores WordPress en su idioma nativo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La ventana de exploit zero-day&lt;/strong&gt; se ha reducido a menos de 48 horas desde la divulgación hasta la explotación masiva&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los vectores de ataque se han desplazado hacia cadenas de suministro de plugins, abuso de REST API, vulnerabilidades de deserialización en capas de caché de objetos y secuestro de sesiones a través de cookies de autenticación mal configuradas. Las medidas de seguridad tradicionales siguen siendo necesarias pero insuficientes por sí solas.&lt;/p&gt;
&lt;h2 id=&quot;endurecimiento-a-nivel-de-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#endurecimiento-a-nivel-de-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Endurecimiento a Nivel de Servidor&lt;/h2&gt;
&lt;p&gt;El servidor es tu primera línea de defensa. Ninguna cantidad de seguridad a nivel de WordPress compensa un servidor mal configurado.&lt;/p&gt;
&lt;h3 id=&quot;configuración-php-reforzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-php-reforzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración PHP Reforzada&lt;/h3&gt;
&lt;p&gt;WordPress requiere PHP, pero la configuración predeterminada de PHP es permisiva. Refuérzala en &lt;code&gt;php.ini&lt;/code&gt; o la configuración por sitio:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Deshabilitar funciones peligrosas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;disable_functions&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,eval&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Ocultar versión PHP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;expose_php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = Off&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Restringir acceso a archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;open_basedir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = /var/www/tusitio:/tmp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;doc_root&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = /var/www/tusitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Seguridad de sesión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;session.cookie_httponly&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;session.cookie_secure&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;session.cookie_samesite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = Strict&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;session.use_strict_mode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Límites de subida (restringir a lo que el sitio realmente necesita)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;upload_max_filesize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 10M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;post_max_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 12M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_execution_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 30&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_input_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 30&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;memory_limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 256M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Manejo de errores (nunca mostrar errores en producción)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;display_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = Off&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;log_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;error_log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = /var/log/php/error.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;permisos-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#permisos-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Permisos de Archivos&lt;/h3&gt;
&lt;p&gt;Los permisos de archivos incorrectos son una de las malas configuraciónes más comunes a nivel de servidor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Archivos: legibles por propietario y grupo, no world-writable&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/tusitio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 644&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Directorios: ejecutables por propietario y grupo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/tusitio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 755&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# wp-config.php: restrictivo - solo lectura por propietario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/tusitio/wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# .htaccess: lectura/escritura solo por propietario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 644&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/tusitio/.htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# wp-content/uploads: escribible por el servidor web&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chown&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -R&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; www-data:www-data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/tusitio/wp-content/uploads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ssh-y-control-de-acceso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ssh-y-control-de-acceso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SSH y Control de Acceso&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deshabilita la autenticación SSH por contraseña&lt;/strong&gt; completamente. Usa pares de claves SSH con un mínimo de RSA de 4096 bits o Ed25519.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambia el puerto SSH predeterminado&lt;/strong&gt; de 22 a un puerto no estándar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementa fail2ban&lt;/strong&gt; para bloquear intentos SSH fallidos repetidos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa un bastion host&lt;/strong&gt; o VPN para acceder a servidores de producción - nunca expongas SSH directamente a internet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deshabilita el login root&lt;/strong&gt; vía SSH. Usa un usuario de deployment dedicado con privilegios sudo.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# /etc/ssh/sshd_config&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;PasswordAuthentication&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; no&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;PermitRootLogin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; no&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Port&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2222&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;MaxAuthTries&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;AllowUsers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; deploy-user&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;endurecimiento-de-la-aplicación-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#endurecimiento-de-la-aplicación-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Endurecimiento de la Aplicación WordPress&lt;/h2&gt;
&lt;h3 id=&quot;seguridad-de-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-de-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad de wp-config.php&lt;/h3&gt;
&lt;p&gt;El archivo &lt;code&gt;wp-config.php&lt;/code&gt; es el archivo más sensible en una instalación WordPress. Muévelo un directorio por encima de la raíz web e implementa estas configuraciónes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Claves de seguridad y salts - generar valores frescos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// https://api.wordpress.org/secret-key/1.1/salt/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AUTH_KEY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,         &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;SECURE_AUTH_KEY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;LOGGED_IN_KEY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;NONCE_KEY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,        &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AUTH_SALT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,        &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;SECURE_AUTH_SALT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;LOGGED_IN_SALT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,   &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;NONCE_SALT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,       &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;frase-única-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Forzar SSL para admin y logins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FORCE_SSL_ADMIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FORCE_SSL_LOGIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar edición de archivos en admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar instalación de plugins/temas vía admin (producción)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_MODS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Prefijo de tabla de base de datos personalizado (establecer durante instalación)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$table_prefix &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wp8x_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar revisiones de entradas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bloquear peticiones HTTP externas (lista blanca solo lo necesario)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_HTTP_BLOCK_EXTERNAL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_ACCESSIBLE_HOSTS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;api.wordpress.org,downloads.wordpress.org&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar WordPress cron (usar system cron en su lugar)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISABLE_WP_CRON&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Debug - desactivado en producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG_LOG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG_DISPLAY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;deshabilitar-xml-rpc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deshabilitar-xml-rpc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deshabilitar XML-RPC&lt;/h3&gt;
&lt;p&gt;XML-RPC es un protocolo legado que permite ataques de amplificación de fuerza bruta y DDoS. A menos que lo necesites específicamente para Jetpack o la app móvil de WordPress, deshabilítalo completamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En functions.php o un plugin de seguridad personalizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;xmlrpc_enabled&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar endpoint XML-RPC del head&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rsd_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Adicionalmente, bloquea XML-RPC a nivel de servidor en &lt;code&gt;.htaccess&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; xmlrpc.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; Deny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Allow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Deny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;restricciones-de-la-rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#restricciones-de-la-rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Restricciones de la REST API&lt;/h3&gt;
&lt;p&gt;La REST API de WordPress expone enumeración de usuarios y datos de contenido por defecto. Restringe a usuarios autenticados para endpoints sensibles:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_authentication_errors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($result) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($result)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_user_logged_in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;rest_not_logged_in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            __&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;No estás autenticado.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 401&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar enumeración de usuarios vía REST API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_endpoints&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($endpoints) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users/(?P&amp;#x3C;id&gt;[\d]+)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users/(?P&amp;#x3C;id&gt;[\d]+)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $endpoints;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;seguridad-de-autenticación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-de-autenticación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad de Autenticación&lt;/h2&gt;
&lt;h3 id=&quot;passkeys-webauthnfido2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#passkeys-webauthnfido2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Passkeys (WebAuthn/FIDO2)&lt;/h3&gt;
&lt;p&gt;Las Passkeys son el avance de autenticación más significativo para WordPress en 2026. Basadas en el estándar WebAuthn/FIDO2, las Passkeys reemplazan completamente las contraseñas con pares de claves criptográficas almacenadas en el dispositivo del usuario (teléfono, portátil o llave de seguridad hardware).&lt;/p&gt;
&lt;p&gt;Por qué las Passkeys importan para WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resistentes al phishing&lt;/strong&gt;: La clave privada nunca sale del dispositivo. No hay contraseña que robar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin credential stuffing&lt;/strong&gt;: Cada Passkey está vinculada al dominio específico. Una Passkey para &lt;code&gt;tusitio.com&lt;/code&gt; no puede usarse en un dominio imitador.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejor UX&lt;/strong&gt;: Los usuarios se autentican con biometría (huella dactilar, rostro) o PIN del dispositivo - más rápido que escribir una contraseña más código 2FA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para implementar Passkeys en WordPress, usa un plugin como &lt;strong&gt;WP-WebAuthn&lt;/strong&gt; o &lt;strong&gt;Passwordless WP&lt;/strong&gt; que implementa el estándar WebAuthn. Configúralo para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Requerir registro de Passkey para todas las cuentas de administrador y editor.&lt;/li&gt;
&lt;li&gt;Permitir login solo con Passkey (deshabilitar el respaldo de contraseña para cuentas con altos privilegios).&lt;/li&gt;
&lt;li&gt;Soportar autenticadores de plataforma (biometría del dispositivo) y autenticadores roaming (YubiKey, etc.).&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;autenticación-de-dos-factores-2fa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-de-dos-factores-2fa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación de Dos Factores (2FA)&lt;/h3&gt;
&lt;p&gt;Para usuarios que no pueden usar Passkeys, impón 2FA usando apps TOTP (Time-based One-Time Password) como Authy, Google Authenticator o 1Password. Evita 2FA basado en SMS debido a vulnerabilidades de SIM-swapping.&lt;/p&gt;
&lt;h3 id=&quot;protección-contra-fuerza-bruta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protección-contra-fuerza-bruta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protección Contra Fuerza Bruta&lt;/h3&gt;
&lt;p&gt;Implementa limitación de tasa en múltiples niveles:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar intentos de login - functions.php o plugin personalizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; custom_login_rate_limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $ip &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REMOTE_ADDR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $transient_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;login_attempts_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($ip);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($transient_key);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($transient_key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;elseif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Demasiados intentos de login. Inténtalo de nuevo más tarde.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;429&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($transient_key, $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_login_failed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom_login_rate_limit&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Adicionalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambia la URL de login de &lt;code&gt;/wp-login.php&lt;/code&gt; a una ruta personalizada.&lt;/li&gt;
&lt;li&gt;Implementa CAPTCHA en la página de login para autenticación no-Passkey.&lt;/li&gt;
&lt;li&gt;Establece políticas de contraseñas requiriendo mínimo 16 caracteres con tipos de caracteres mixtos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;seguridad-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad de la Base de Datos&lt;/h2&gt;
&lt;h3 id=&quot;prefijo-de-tabla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prefijo-de-tabla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prefijo de Tabla&lt;/h3&gt;
&lt;p&gt;Nunca uses el prefijo predeterminado &lt;code&gt;wp_&lt;/code&gt;. Establece un prefijo personalizado durante la instalación de WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$table_prefix &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wp8x_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para instalaciones existentes, cambia el prefijo usando WP-CLI o un script de migración de base de datos, actualizando tanto las tablas de la base de datos como la referencia en &lt;code&gt;wp-config.php&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;prepared-statements&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prepared-statements&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prepared Statements&lt;/h3&gt;
&lt;p&gt;Todas las consultas personalizadas a la base de datos deben usar el método &lt;code&gt;$wpdb-&gt;prepare()&lt;/code&gt; de WordPress para prevenir inyección SQL:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// CORRECTO: consulta parametrizada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;prepare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;prefix&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post_author &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; %d &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post_status &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; %s&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $author_id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;publish&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// NUNCA: interpolación directa de variables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// $results = $wpdb-&gt;get_results(&quot;SELECT * FROM wp_posts WHERE post_author = $author_id&quot;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estrategia-de-backup&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-backup&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de Backup&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backups diarios automatizados&lt;/strong&gt; de base de datos y archivos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encriptar backups&lt;/strong&gt; en reposo usando AES-256.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenar backups off-site&lt;/strong&gt; en una ubicación geográficamente separada (S3, B2, etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Probar procedimientos de restauración&lt;/strong&gt; mensualmente - un backup que no puedes restaurar no es un backup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retener backups&lt;/strong&gt; por un mínimo de 30 días con una política de retención rotativa.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;seguridad-de-plugins-y-temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-de-plugins-y-temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad de Plugins y Temas&lt;/h2&gt;
&lt;h3 id=&quot;proceso-de-verificación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-verificación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de Verificación&lt;/h3&gt;
&lt;p&gt;Antes de instalar cualquier plugin o tema, evalúa:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fecha de última actualización&lt;/strong&gt; - rechaza todo lo que no se haya actualizado en los últimos 6 meses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instalaciones activas&lt;/strong&gt; - prefiere plugins con más de 10.000 instalaciones activas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actividad del foro de soporte&lt;/strong&gt; - verifica si el desarrollador responde a informes de seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisión de código&lt;/strong&gt; - para plugins críticos, revisa el código fuente para vulnerabilidades obvias (eval, output sin escapar, consultas directas a la base de datos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Historial de vulnerabilidades&lt;/strong&gt; - consulta las bases de datos de vulnerabilidades de Patchstack, WPScan y Wordfence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reputación del desarrollador&lt;/strong&gt; - empresas WordPress establecidas y desarrolladores con historial comprobado.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;actualizaciones-automáticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizaciones-automáticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizaciones Automáticas&lt;/h3&gt;
&lt;p&gt;Habilita actualizaciones automáticas de seguridad para plugins y temas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Habilitar auto-actualizaciones para todos los plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;auto_update_plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_true&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Habilitar auto-actualizaciones para todos los temas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;auto_update_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_true&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Habilitar auto-actualizaciones para versiones menores de WordPress (comportamiento predeterminado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;allow_minor_auto_core_updates&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_true&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para sitios de misión crítica, usa un entorno de staging para probar actualizaciones antes de desplegar en producción. Herramientas como &lt;strong&gt;WP Engine Smart Plugin Manager&lt;/strong&gt; o &lt;strong&gt;MainWP&lt;/strong&gt; automatizan este flujo de trabajo.&lt;/p&gt;
&lt;h3 id=&quot;escaneo-de-vulnerabilidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escaneo-de-vulnerabilidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escaneo de Vulnerabilidades&lt;/h3&gt;
&lt;p&gt;Ejecuta escaneos de vulnerabilidades automatizados regularmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WPScan&lt;/strong&gt; - herramienta CLI para escaneo de vulnerabilidades WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patchstack&lt;/strong&gt; - monitorización de vulnerabilidades en tiempo real con parcheo virtual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wordfence CLI&lt;/strong&gt; - escaneo de malware del lado del servidor.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# WPScan desde CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wpscan&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://tusitio.com&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --enumerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; vp,vt,u&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --api-token&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; TU_TOKEN&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;cabeceras-content-security-policy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cabeceras-content-security-policy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cabeceras Content Security Policy&lt;/h2&gt;
&lt;p&gt;Las cabeceras CSP son tu defensa más fuerte contra cross-site scripting (XSS). Le dicen a los navegadores qué fuentes de contenido son confiables:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Configuración CSP en .htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Content-Security-Policy &quot;default-src &apos;self&apos;; script-src &apos;self&apos; https://cdn.tusitio.com; style-src &apos;self&apos; &apos;unsafe-inline&apos; https://fonts.googleapis.com; img-src &apos;self&apos; data: https:; font-src &apos;self&apos; https://fonts.gstatic.com; connect-src &apos;self&apos; https://api.tusitio.com; frame-ancestors &apos;self&apos;; base-uri &apos;self&apos;; form-action &apos;self&apos;;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para sitios WordPress que usan scripts inline (común con page builders), comienza con &lt;code&gt;Content-Security-Policy-Report-Only&lt;/code&gt; para identificar violaciones sin romper funcionalidad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Content-Security-Policy-Report-Only &quot;default-src &apos;self&apos;; script-src &apos;self&apos;; report-uri /csp-report-endpoint;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Refuerza progresivamente la política añadiendo nonces para scripts inline legítimos y eliminando &lt;code&gt;unsafe-inline&lt;/code&gt; de la directiva script-src.&lt;/p&gt;
&lt;h2 id=&quot;configuración-de-web-application-firewall&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-web-application-firewall&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de Web Application Firewall&lt;/h2&gt;
&lt;p&gt;Un WAF filtra tráfico malicioso antes de que llegue a tu aplicación WordPress. Despliega en el borde de la red para máxima protección.&lt;/p&gt;
&lt;h3 id=&quot;cloudflare-waf&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-waf&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cloudflare WAF&lt;/h3&gt;
&lt;p&gt;El conjunto de reglas gestionado de Cloudflare incluye reglas específicas para WordPress. Configura:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Habilita el conjunto de reglas WordPress&lt;/strong&gt; en Security &gt; WAF &gt; Managed Rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crea reglas personalizadas&lt;/strong&gt; para bloquear patrones de ataque conocidos:
&lt;ul&gt;
&lt;li&gt;Bloquea peticiones a &lt;code&gt;wp-login.php&lt;/code&gt; de países donde no tienes usuarios.&lt;/li&gt;
&lt;li&gt;Limita las peticiones a la página de login a 5 por minuto por IP.&lt;/li&gt;
&lt;li&gt;Bloquea peticiones que contengan patrones de inyección SQL en query strings.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Habilita Bot Management&lt;/strong&gt; para distinguir bots legítimos (Googlebot) de crawlers maliciosos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configura Reglas de Acceso IP&lt;/strong&gt; para añadir a la lista blanca tu IP de oficina y bloquear rangos maliciosos conocidos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;modsecurity-self-hosted&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modsecurity-self-hosted&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ModSecurity (Self-Hosted)&lt;/h3&gt;
&lt;p&gt;Para entornos self-hosted, configura ModSecurity con el OWASP Core Rule Set:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Habilitar ModSecurity&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SecRuleEngine &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Reglas OWASP CRS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Include&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /etc/modsecurity/crs/crs-setup.conf&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Include&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /etc/modsecurity/crs/rules/*.conf&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Excepciones específicas de WordPress (para evitar falsos positivos)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SecRule REQUEST_URI &quot;@beginsWith /wp-admin&quot; &quot;id:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,phase:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,pass,nolog,ctl:ruleRemoveById=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;941160&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mejores-prácticas-ssltls&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-ssltls&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores Prácticas SSL/TLS&lt;/h2&gt;
&lt;p&gt;La encriptación TLS es innegociable. Más allá de instalar un certificado, configura TLS correctamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Configuración TLS Nginx&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_protocols &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;TLSv1.2 TLSv1.3;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_ciphers &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_prefer_server_ciphers &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;off&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_session_timeout &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_session_cache &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;shared:SSL:10m;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_session_tickets &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;off&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# HSTS - decir a los navegadores que siempre usen HTTPS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Strict-Transport-Security &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;max-age=63072000; includeSubDomains; preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# OCSP Stapling&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_stapling &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ssl_stapling_verify &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;resolver &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.1.1.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 8.8.8.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; valid=300s;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prácticas clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usa TLS 1.2 como mínimo&lt;/strong&gt;, prefiere TLS 1.3 para rendimiento y seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deshabilita TLS 1.0 y 1.1&lt;/strong&gt; completamente - tienen vulnerabilidades conocidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Habilita HSTS&lt;/strong&gt; con un max-age mínimo de un año (31536000 segundos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Envía tu dominio a la lista HSTS preload&lt;/strong&gt; en hstspreload.org.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatiza la renovación de certificados&lt;/strong&gt; con Let’s Encrypt y certbot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba tu configuración&lt;/strong&gt; con SSL Labs (ssllabs.com/ssltest).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;monitorización-de-seguridad-y-respuesta-a-incidentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitorización-de-seguridad-y-respuesta-a-incidentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitorización de Seguridad y Respuesta a Incidentes&lt;/h2&gt;
&lt;h3 id=&quot;monitorización-en-tiempo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitorización-en-tiempo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitorización en Tiempo Real&lt;/h3&gt;
&lt;p&gt;Implementa monitorización en múltiples capas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monitorización de integridad de archivos&lt;/strong&gt;: Detectar cambios no autorizados en archivos del núcleo, plugins y temas. Herramientas como OSSEC, Tripwire o detección de cambios de archivos de Wordfence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registro de actividad de login&lt;/strong&gt;: Registrar todos los intentos de login exitosos y fallidos con IP, user agent y timestamp.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registro de consultas a la base de datos&lt;/strong&gt;: Monitorizar patrones de consultas inusuales que indiquen intentos de inyección SQL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorización de uptime&lt;/strong&gt;: Detectar defacement o toma de control del sitio inmediatamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;plan-de-respuesta-a-incidentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-respuesta-a-incidentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de Respuesta a Incidentes&lt;/h3&gt;
&lt;p&gt;Cada sitio WordPress debería tener un plan de respuesta a incidentes documentado:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Detección&lt;/strong&gt;: Alertas automatizadas por cambios de archivos, detección de malware, picos de tráfico inusuales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contención&lt;/strong&gt;: Poner el sitio comprometido offline inmediatamente o detrás de una página de mantenimiento. Revocar todas las credenciales de admin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Erradicación&lt;/strong&gt;: Identificar el vector de ataque. Eliminar malware. Restaurar desde un backup limpio conocido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recuperación&lt;/strong&gt;: Poner el sitio online de nuevo. Restablecer todas las contraseñas. Actualizar todos los plugins y temas. Verificar integridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisión Post-Incidente&lt;/strong&gt;: Documentar qué ocurrió, cómo se detectó, cuál fue el impacto y qué medidas preventivas se implementarán.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;ventajas-de-seguridad-de-wordpress-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-de-seguridad-de-wordpress-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas de Seguridad de WordPress Headless&lt;/h2&gt;
&lt;p&gt;Ejecutar WordPress en una arquitectura headless - donde WordPress sirve como API de contenido y el sitio público se construye con un framework como Astro, Next.js o Nuxt - proporciona ventajas de seguridad significativas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Superficie de ataque reducida&lt;/strong&gt;: Los visitantes interactúan con un front-end estático o renderizado en servidor. Nunca tocan PHP o WordPress directamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin vulnerabilidades de temas&lt;/strong&gt;: El sitio público no ejecuta temas WordPress, eliminando toda una clase de vulnerabilidades XSS y de inyección.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin detrás de un firewall&lt;/strong&gt;: El admin de WordPress puede colocarse detrás de un VPN o lista blanca de IP, haciéndolo invisible para internet público.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solo exposición de API&lt;/strong&gt;: Solo los endpoints REST API o GraphQL están expuestos, y estos pueden protegerse con autenticación y limitación de tasa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura CDN-first&lt;/strong&gt;: Los sitios estáticos se despliegan en nodos CDN edge, proporcionando protección DDoS inherente a través de arquitectura distribuida.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En &lt;a href=&quot;https://wppoland.com/es/&quot;&gt;wppoland.com&lt;/a&gt; construimos arquitecturas WordPress headless que maximizan tanto la seguridad como el rendimiento. Nuestro &lt;a href=&quot;/es/contacto/&quot;&gt;servicio de auditoría de seguridad&lt;/a&gt; evalúa toda tu pila WordPress y proporciona una hoja de ruta de endurecimiento detallada.&lt;/p&gt;
&lt;h2 id=&quot;rgpd-y-cumplimiento-de-protección-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rgpd-y-cumplimiento-de-protección-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;RGPD y Cumplimiento de Protección de Datos&lt;/h2&gt;
&lt;p&gt;La seguridad y la protección de datos están entrelazadas. Bajo el RGPD (y regulaciones similares como LGPD y DSGVO), una brecha de seguridad que involucre datos personales requiere notificación a las autoridades supervisoras dentro de 72 horas.&lt;/p&gt;
&lt;p&gt;Consideraciones RGPD específicas de WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Encriptar datos personales&lt;/strong&gt; en reposo y en tránsito.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementar minimización de datos&lt;/strong&gt;: Recoger solo lo necesario. Eliminar lo que ya no se necesita.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usar las herramientas de privacidad integradas de WordPress&lt;/strong&gt;: Solicitudes de exportación y eliminación de datos (Herramientas &gt; Exportar Datos Personales / Borrar Datos Personales).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditar la recolección de datos de plugins&lt;/strong&gt;: Muchos plugins recopilan datos personales (analytics, formularios, comentarios). Documentar qué datos procesa cada plugin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consentimiento de cookies&lt;/strong&gt;: Implementar un banner de consentimiento de cookies compatible con RGPD que bloquee scripts de rastreo hasta que se otorgue el consentimiento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Política de privacidad&lt;/strong&gt;: Mantener una política de privacidad precisa que describa todas las actividades de procesamiento de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acuerdos de Procesamiento de Datos&lt;/strong&gt;: Asegurar que existen APDs con todos los servicios de terceros que procesan datos personales (hosting, email, analytics).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mejores-plugins-de-seguridad-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-plugins-de-seguridad-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores plugins de seguridad WordPress en 2026&lt;/h2&gt;
&lt;p&gt;Aunque el endurecimiento del servidor y las buenas prácticas importan más que cualquier plugin, los plugins de seguridad añaden valiosas capas de monitorización y protección automatizada. Estas son las opciones que vale la pena considerar:&lt;/p&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Plugin&lt;/th&gt;&lt;th&gt;Mejor para&lt;/th&gt;&lt;th&gt;Funcionalidades clave&lt;/th&gt;&lt;th&gt;Instalaciones activas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Wordfence 8.x&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Protección integral&lt;/td&gt;&lt;td&gt;WAF, escáner de malware, seguridad de login, feed de amenazas en tiempo real&lt;/td&gt;&lt;td&gt;4M+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Solid Security (anteriormente iThemes)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Automatización de endurecimiento&lt;/td&gt;&lt;td&gt;Autenticación de dos factores, protección brute force, detección de cambios de archivos&lt;/td&gt;&lt;td&gt;1M+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Patchstack&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Monitorización de vulnerabilidades&lt;/td&gt;&lt;td&gt;Parcheo virtual, alertas CVE en tiempo real, cero falsos positivos&lt;/td&gt;&lt;td&gt;100K+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;WP Activity Log&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Registro de auditoría&lt;/td&gt;&lt;td&gt;Seguimiento de actividad de usuarios, informes de cumplimiento, alertas en tiempo real&lt;/td&gt;&lt;td&gt;200K+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;All-In-One Security (AIOS)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Económico&lt;/td&gt;&lt;td&gt;Bloqueo de login, integridad de archivos, firewall básico&lt;/td&gt;&lt;td&gt;1M+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SecuPress&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Seguridad enfocada en UX&lt;/td&gt;&lt;td&gt;Endurecimiento con un clic, escaneo de malware, dashboard de puntuación de seguridad&lt;/td&gt;&lt;td&gt;40K+&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;top-10-plugins-de-seguridad-wordpress-comparados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#top-10-plugins-de-seguridad-wordpress-comparados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Top 10 plugins de seguridad WordPress comparados&lt;/h3&gt;
&lt;p&gt;Al evaluar plugins de seguridad, concéntrate en estos criterios en lugar del número de funcionalidades:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tasa de falsos positivos.&lt;/strong&gt; Un escáner que marca archivos legítimos desperdicia más tiempo del que ahorra.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impacto en rendimiento.&lt;/strong&gt; Algunos plugins de seguridad añaden 200-500ms a cada carga de página. Usa Query Monitor para medir antes de comprometerte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad del WAF.&lt;/strong&gt; Los WAF basados en la nube (Cloudflare, Sucuri) superan a los WAF a nivel de plugin porque bloquean el tráfico malicioso antes de que llegue a tu servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frecuencia de actualizaciones.&lt;/strong&gt; Las definiciones de amenazas del plugin deben actualizarse más rápido de lo que aparecen nuevas vulnerabilidades. Actualizaciones semanales son el minimo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compatibilidad.&lt;/strong&gt; Los plugins de seguridad que se enganchan a cada acción de WordPress pueden entrar en conflicto con cache, constructores de páginas y endpoints de REST API.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nuestra recomendación: Wordfence o Patchstack para protección activa, WP Activity Log para registros de auditoría de cumplimiento, y un WAF en la nube (Cloudflare) como primera linea de defensa. No acumules multiples plugins de seguridad — un escáner, un WAF, un registro de auditoría es suficiente. Para una guía detallada sobre la selección de plugins relacionados con seguridad, consulta nuestra &lt;a href=&quot;/es/mejores-plugins-wordpress-gu%C3%ADa-completa-2026/&quot;&gt;guía de plugins esenciales WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;checklist-de-auditoría-de-seguridad-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-de-auditoría-de-seguridad-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist de Auditoría de Seguridad WordPress&lt;/h2&gt;
&lt;p&gt;Usa esta checklist de 25 puntos para auditorías de seguridad trimestrales:&lt;/p&gt;
&lt;h3 id=&quot;nivel-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel del Servidor&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;La versión de PHP es 8.2+ con funciones peligrosas deshabilitadas&lt;/li&gt;
&lt;li&gt;Los permisos de archivos son 644 (archivos) y 755 (directorios)&lt;/li&gt;
&lt;li&gt;wp-config.php tiene permiso 400 y está por encima de la raíz web&lt;/li&gt;
&lt;li&gt;SSH usa autenticación solo con claves con login root deshabilitado&lt;/li&gt;
&lt;li&gt;El software del servidor (Nginx/Apache) está actualizado y parcheado&lt;/li&gt;
&lt;li&gt;Fail2ban o equivalente está activo y configurado&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;aplicación-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aplicación-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aplicación WordPress&lt;/h3&gt;
&lt;ol start=&quot;7&quot;&gt;
&lt;li&gt;El núcleo de WordPress es la última versión estable&lt;/li&gt;
&lt;li&gt;Todos los plugins están actualizados y activamente mantenidos&lt;/li&gt;
&lt;li&gt;Todos los temas están actualizados (eliminar temas no utilizados)&lt;/li&gt;
&lt;li&gt;XML-RPC está deshabilitado a nivel de servidor y aplicación&lt;/li&gt;
&lt;li&gt;Los endpoints de usuarios de la REST API están restringidos&lt;/li&gt;
&lt;li&gt;La edición de archivos está deshabilitada (DISALLOW_FILE_EDIT)&lt;/li&gt;
&lt;li&gt;Las modificaciones de archivos están deshabilitadas en producción (DISALLOW_FILE_MODS)&lt;/li&gt;
&lt;li&gt;El modo debug está desactivado en producción&lt;/li&gt;
&lt;li&gt;Las claves de seguridad y salts son únicas y recientemente rotadas&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;autenticación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación&lt;/h3&gt;
&lt;ol start=&quot;16&quot;&gt;
&lt;li&gt;Passkeys o 2FA están impuestas para todas las cuentas admin&lt;/li&gt;
&lt;li&gt;La URL de login está cambiada del predeterminado wp-login.php&lt;/li&gt;
&lt;li&gt;La protección contra fuerza bruta con limitación de tasa está activa&lt;/li&gt;
&lt;li&gt;La política de contraseñas impone mínimo 16 caracteres&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;red-y-cabeceras&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#red-y-cabeceras&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Red y Cabeceras&lt;/h3&gt;
&lt;ol start=&quot;20&quot;&gt;
&lt;li&gt;SSL/TLS 1.2+ con certificado válido y HSTS habilitado&lt;/li&gt;
&lt;li&gt;WAF está activo con conjunto de reglas específico para WordPress&lt;/li&gt;
&lt;li&gt;Las cabeceras CSP están configuradas y probadas&lt;/li&gt;
&lt;li&gt;Todas las cabeceras de seguridad están presentes (X-Frame-Options, X-Content-Type-Options, Referrer-Policy)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;monitorización-y-cumplimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitorización-y-cumplimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitorización y Cumplimiento&lt;/h3&gt;
&lt;ol start=&quot;24&quot;&gt;
&lt;li&gt;La monitorización de integridad de archivos está activa con alertas&lt;/li&gt;
&lt;li&gt;Los backups automatizados se ejecutan diariamente con almacenamiento off-site encriptado y procedimientos de restauración probados&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cada elemento debe ser verificado, documentado y cualquier fallo remediado dentro de un SLA definido. Para una auditoría de seguridad profesional de tu instalación WordPress, &lt;a href=&quot;/es/contacto/&quot;&gt;contacta a nuestro equipo&lt;/a&gt; para una evaluación completa.&lt;/p&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;La seguridad WordPress en 2026 requiere defensa en profundidad - ninguna medida individual es suficiente. Desde el endurecimiento PHP a nivel de servidor a través de la configuración de aplicación, autenticación moderna con Passkeys, protección de base de datos, despliegue de WAF y monitorización continua - cada capa contribuye a una postura de seguridad resiliente.&lt;/p&gt;
&lt;p&gt;El enfoque más efectivo combina endurecimiento técnico con disciplina de proceso: auditorías regulares, procedimientos de respuesta a incidentes probados, escaneo automático de vulnerabilidades y una cultura que trata la seguridad como una práctica continua en lugar de una configuración única.&lt;/p&gt;
&lt;p&gt;Comienza con la checklist de esta guía. Implementa las medidas sistemáticamente, empezando desde el nivel del servidor y subiendo por la pila de la aplicación. Prueba cada cambio en un entorno de staging antes de desplegar en producción. Y recuerda - el sitio WordPress más seguro es uno que se mantiene activamente, se monitoriza y se audita regularmente.&lt;/p&gt;</content:encoded><category>wordpress</category><category>security</category><category>devops</category><category>hosting</category><category domain="tag">wordpress</category><category domain="tag">seguridad</category><category domain="tag">hardening</category><category domain="tag">waf</category><category domain="tag">ssl</category><category domain="tag">passkeys</category><category domain="tag">rgpd</category><category domain="tag">headless</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>WordPress Multisite para Enterprise: Arquitectura, Escalabilidad y Mejores Prácticas</title><link>https://wppoland.com/es/wordpress-multisite-enterprise-architecture-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-multisite-enterprise-architecture-2026/</guid><description>Guía completa de WordPress Multisite para despliegues enterprise. Aprende patrones de arquitectura, escalabilidad a 1000+ sitios, hardening de seguridad, mapeo de dominios, gestión de usuarios y optimización de costes para redes de franquicias, universidades y organismos gubernamentales.</description><pubDate>Sat, 21 Mar 2026 23:30:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;Gestionar decenas, cientos o incluso miles de sitios WordPress individualmente es una pesadilla operativa. Cada actualización de plugin, cada parche de seguridad y cada cambio de tema debe repetirse en cada instalación. &lt;strong&gt;WordPress Multisite&lt;/strong&gt; resuelve este problema permitiendo ejecutar toda una red de sitios desde una única instalación WordPress - con administración centralizada, recursos compartidos y governance unificada.&lt;/p&gt;
&lt;p&gt;Para empresas - franquicias con 200 ubicaciones, universidades con sitios departamentales, organismos gubernamentales con portales de programas, grupos de medios con publicaciónes regionales - Multisite no es solo conveniente. Es la arquitectura que hace viable WordPress a gran escala. Esta guía cubre todo lo que necesitas para desplegar, asegurar y optimizar WordPress Multisite para uso enterprise en 2026.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;qué-es-wordpress-multisite-y-cuándo-usarlo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-wordpress-multisite-y-cuándo-usarlo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué es WordPress Multisite y cuándo usarlo&lt;/h2&gt;
&lt;h3 id=&quot;comprender-el-concepto-fundamental&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprender-el-concepto-fundamental&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprender el concepto fundamental&lt;/h3&gt;
&lt;p&gt;WordPress Multisite es una funcionalidad integrada (no un plugin) que transforma una única instalación WordPress en una red capaz de alojar múltiples sitios independientes. Cada sitio tiene su propio contenido, configuración y opcionalmente su propio dominio - pero todos comparten la misma codebase WordPress, plugins y temas.&lt;/p&gt;
&lt;p&gt;La distinción clave frente a ejecutar instalaciones separadas: &lt;strong&gt;una codebase, un conjunto de actualizaciones, un panel de administración para gobernar todo&lt;/strong&gt;. Cuando actualizas un plugin en la red, cada sitio recibe la actualización. Cuando parchas una vulnerabilidad, toda la red queda protegida simultáneamente.&lt;/p&gt;
&lt;h3 id=&quot;cuándo-multisite-tiene-sentido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-multisite-tiene-sentido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo Multisite tiene sentido&lt;/h3&gt;
&lt;p&gt;Multisite es la elección correcta cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Los sitios comparten funcionalidad común&lt;/strong&gt; - Mismos plugins, temas similares, características superpuestas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La gestión centralizada es crítica&lt;/strong&gt; - Un equipo gestiona actualizaciones, seguridad y compliance para todos los sitios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los usuarios necesitan acceso entre sitios&lt;/strong&gt; - Un usuario inicia sesión una vez y tiene roles en múltiples sitios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La consistencia de marca importa&lt;/strong&gt; - Un tema padre impone directrices de marca mientras los temas hijo permiten personalización por sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La eficiencia de costes es prioridad&lt;/strong&gt; - Una infraestructura de servidor en vez de decenas de cuentas de hosting separadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cuándo-multisite-no-es-la-elección-correcta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-multisite-no-es-la-elección-correcta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo Multisite NO es la elección correcta&lt;/h3&gt;
&lt;p&gt;Evita multisite cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los sitios tienen &lt;strong&gt;requisitos tecnológicos completamente diferentes&lt;/strong&gt; (uno necesita WooCommerce con 50 plugins, otro es un blog simple).&lt;/li&gt;
&lt;li&gt;Se necesitan &lt;strong&gt;ciclos de actualización independientes&lt;/strong&gt; por razones regulatorias o contractuales.&lt;/li&gt;
&lt;li&gt;Un &lt;strong&gt;fallo en un sitio no debe afectar a otros&lt;/strong&gt; - multisite comparte un punto único de fallo a nivel de base de datos y codebase.&lt;/li&gt;
&lt;li&gt;Diferentes sitios necesitan &lt;strong&gt;versiones PHP diferentes&lt;/strong&gt; o configuraciónes de servidor distintas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;casos-de-uso-enterprise&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-enterprise&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso Enterprise&lt;/h2&gt;
&lt;h3 id=&quot;redes-de-franquicias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#redes-de-franquicias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Redes de franquicias&lt;/h3&gt;
&lt;p&gt;Una franquicia con 300 ubicaciones necesita una presencia de marca online consistente, permitiendo simultáneamente que cada ubicación gestióne su propio contenido - horarios, promociones, eventos locales. Multisite proporciona un tema padre activado en red con colores de marca, fuentes y layouts bloqueados, mientras cada sitio de franquicia recibe un tema hijo con opciones de personalización local.&lt;/p&gt;
&lt;p&gt;Patrón de la práctica: El equipo de marketing corporativo gestiona la red, activa en red plugins aprobados y distribuye contenido global (promociones, comunicados de prensa) a todos los sitios simultáneamente. Los propietarios individuales de franquicias inician sesión en el dashboard de su sitio y gestionan solo su contenido local.&lt;/p&gt;
&lt;h3 id=&quot;universidades-e-instituciones-educativas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#universidades-e-instituciones-educativas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Universidades e instituciones educativas&lt;/h3&gt;
&lt;p&gt;Las universidades son un caso de uso clásico de multisite. El sitio principal de la universidad sirve como hub de la red, con sub-sitios para cada departamento, centro de investigación, organización estudiantil y campus. Las cuentas de usuario se centralizan a través de integración LDAP/SAML, de modo que un profesor que enseña en dos departamentos tiene un único login con roles apropiados en ambos sitios departamentales.&lt;/p&gt;
&lt;p&gt;El departamento de TI mantiene la red, impone conformidad de accesibilidad (WCAG 2.2) en todos los sitios a través de un plugin de accesibilidad activado en red, y controla qué plugins los administradores departamentales pueden activar.&lt;/p&gt;
&lt;h3 id=&quot;gobierno-y-sector-público&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gobierno-y-sector-público&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gobierno y sector público&lt;/h3&gt;
&lt;p&gt;Los organismos gubernamentales usan multisite para gestionar sitios programáticos bajo una plataforma digital unificada. Un gobierno autonómico puede ejecutar más de 50 sitios de programás (salud, educación, transporte, hacienda) desde una red multisite, garantizando estándares de seguridad consistentes, conformidad de accesibilidad y adherencia al design system.&lt;/p&gt;
&lt;p&gt;La arquitectura centralizada simplifica auditorías de compliance porque hay una codebase que auditar, un entorno de servidor que endurecer y un pipeline de actualizaciones que monitorizar.&lt;/p&gt;
&lt;h3 id=&quot;grupos-de-medios-y-redes-editoriales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#grupos-de-medios-y-redes-editoriales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Grupos de medios y redes editoriales&lt;/h3&gt;
&lt;p&gt;Una empresa de medios que opera sitios de noticias regionales usa multisite con mapeo de dominios - cada publicación tiene su propio dominio (diario-ciudad.es, correo-regional.es), pero comparte el mismo workflow editorial, plataforma publicitaria y sistema de suscripción.&lt;/p&gt;
&lt;h2 id=&quot;patrones-de-arquitectura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-de-arquitectura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones de arquitectura&lt;/h2&gt;
&lt;h3 id=&quot;arquitectura-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura de base de datos&lt;/h3&gt;
&lt;p&gt;WordPress Multisite usa una base de datos compartida con prefijos de tabla por sitio. Las tablas a nivel de red incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;wp_site&lt;/strong&gt; - Almacena definiciones de red (en configuraciónes multi-red).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;wp_blogs&lt;/strong&gt; - Almacena metadatos de cada sitio en la red (dominio, ruta, fecha de registro, estado).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;wp_users&lt;/strong&gt; y &lt;strong&gt;wp_usermeta&lt;/strong&gt; - Compartidas en toda la red. Una tabla de usuarios para todos los sitios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada sub-sitio recibe su propio conjunto de tablas con prefijo numérico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wp_2_posts&lt;/code&gt;, &lt;code&gt;wp_2_postmeta&lt;/code&gt;, &lt;code&gt;wp_2_options&lt;/code&gt;, &lt;code&gt;wp_2_comments&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wp_3_posts&lt;/code&gt;, &lt;code&gt;wp_3_postmeta&lt;/code&gt;, &lt;code&gt;wp_3_options&lt;/code&gt;, &lt;code&gt;wp_3_comments&lt;/code&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto significa que el sitio #2 y el sitio #300 comparten la misma instancia MySQL, pero su contenido está aislado por prefijo de tabla. Esto es &lt;strong&gt;aislamiento lógico, no físico&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;base-de-datos-compartida-vs-base-de-datos-externa-por-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#base-de-datos-compartida-vs-base-de-datos-externa-por-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Base de datos compartida vs. base de datos externa por sitio&lt;/h3&gt;
&lt;p&gt;Para la mayoría de despliegues (menos de 100 sitios), la base de datos compartida por defecto es suficiente. Para grandes despliegues enterprise (500+ sitios), considera:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HyperDB o LudicrousDB&lt;/strong&gt; - Capas de abstracción de base de datos drop-in que permiten enrutar consultas a diferentes servidores de base de datos según la tabla accedida.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base de datos separada por sitio&lt;/strong&gt; - No soportado nativamente, pero alcanzable con drop-ins db.php personalizados. Proporciona aislamiento físico y backup/restore independiente, pero añade complejidad operativa significativa.&lt;/p&gt;
&lt;h3 id=&quot;mapeo-de-dominios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mapeo-de-dominios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mapeo de dominios&lt;/h3&gt;
&lt;p&gt;Desde WordPress 4.5, el mapeo de dominios se gestiona nativamente. El drop-in Sunrise (&lt;code&gt;sunrise.php&lt;/code&gt; en wp-content) carga antes del resto de WordPress y mapea las solicitudes de dominio entrantes al sub-sitio correcto.&lt;/p&gt;
&lt;p&gt;Pasos de configuración:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Definir &lt;code&gt;SUNRISE&lt;/code&gt; como &lt;code&gt;true&lt;/code&gt; en wp-config.php.&lt;/li&gt;
&lt;li&gt;Crear o instalar el drop-in sunrise.php.&lt;/li&gt;
&lt;li&gt;Usar WP-CLI: &lt;code&gt;wp site create --slug=nuevo-sitio --title=&quot;Nuevo Sitio&quot;&lt;/code&gt; y luego configurar el mapeo de dominio.&lt;/li&gt;
&lt;li&gt;Configurar DNS: Apuntar cada dominio personalizado a la IP del servidor multisite.&lt;/li&gt;
&lt;li&gt;Configurar SSL: Usar certificado wildcard para redes de subdominio, o certificados individuales (Let’s Encrypt) para dominios mapeados.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;subdominio-vs-subdirectorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#subdominio-vs-subdirectorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Subdominio vs. subdirectorio&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Subdominio&lt;/strong&gt; (&lt;code&gt;sitio1.red.es&lt;/code&gt;, &lt;code&gt;sitio2.red.es&lt;/code&gt;) - Mejor para sitios que necesitan identidad distinta. Requiere DNS wildcard. Más común para enterprise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subdirectorio&lt;/strong&gt; (&lt;code&gt;red.es/sitio1/&lt;/code&gt;, &lt;code&gt;red.es/sitio2/&lt;/code&gt;) - Configuración DNS más simple. Bueno para intranets o redes con marca fuerte.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;rendimiento-a-gran-escala-ejecutar-1000-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-a-gran-escala-ejecutar-1000-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento a gran escala: Ejecutar 1000+ sitios&lt;/h2&gt;
&lt;h3 id=&quot;el-cuello-de-botella-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-cuello-de-botella-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El cuello de botella de la base de datos&lt;/h3&gt;
&lt;p&gt;El mayor desafío de rendimiento en grandes redes multisite es la base de datos. Con 1.000 sitios, tienes aproximadamente 12.000 tablas en una base de datos. Las consultas MySQL information_schema se ralentizan significativamente con tantas tablas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;InnoDB file-per-table&lt;/strong&gt; - Asegura que cada tabla tiene su propio archivo, previniendo la hinchazón del tablespace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Réplicas de lectura&lt;/strong&gt; - Enrutar todas las consultas SELECT a réplicas de lectura vía HyperDB. Las consultas de escritura van al primario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorización de consultas&lt;/strong&gt; - Usar el plugin Query Monitor (activado en red) para identificar consultas lentas por sitio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;object-caching-es-obligatorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#object-caching-es-obligatorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Object caching es obligatorio&lt;/h3&gt;
&lt;p&gt;A escala enterprise, cada red multisite &lt;strong&gt;debe&lt;/strong&gt; usar un persistent object cache. Redis es la opción recomendada:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;10.0.1.50&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PORT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;6379&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_DATABASE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_KEY_SALT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;network_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El drop-in de object cache preija automáticamente las claves de cache con el ID del sitio, previniendo colisiones de cache entre sitios. Una instancia Redis correctamente configurada reduce las consultas a la base de datos en un 80-90% en páginas cacheadas.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-de-cache-de-páginas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-cache-de-páginas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de cache de páginas&lt;/h3&gt;
&lt;p&gt;Para multisite, el cache de páginas requiere consciencia de qué sitio se está sirviendo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nginx FastCGI Cache&lt;/strong&gt; - La opción más performante. Configura la clave de cache con &lt;code&gt;$host&lt;/code&gt; para que cada dominio obtenga su propio bucket de cache.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Varnish&lt;/strong&gt; - Excelente para multisite con reglas VCL que varían el cache por cabecera host.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache basado en plugins&lt;/strong&gt; (WP Super Cache, W3 Total Cache) - Activar en red y configurar por sitio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración CDN&lt;/h3&gt;
&lt;p&gt;Configura el CDN (Cloudflare, Fastly, KeyCDN) para manejar múltiples dominios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada dominio mapeado debe añadirse como zona o usar una única zona con routing por hostname.&lt;/li&gt;
&lt;li&gt;Los assets estáticos deben servirse desde un CDN origin compartido para maximizar la tasa de cache hit.&lt;/li&gt;
&lt;li&gt;Implementar cache purging que limpie solo el cache del sitio afectado cuando cambia el contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tuning-php-fpm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tuning-php-fpm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tuning PHP-FPM&lt;/h3&gt;
&lt;p&gt;Para 1.000+ sitios, la gestión de procesos PHP-FPM es crítica:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = dynamic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.max_children&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 100&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.start_servers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 20&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.min_spare_servers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.max_spare_servers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 40&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.max_requests&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 1000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Monitoriza el uso real y ajusta. Over-provisioning desperdicia RAM; under-provisioning causa errores 502 durante picos de tráfico.&lt;/p&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad-para-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad-para-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad para Multisite&lt;/h2&gt;
&lt;h3 id=&quot;el-riesgo-de-la-codebase-compartida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-riesgo-de-la-codebase-compartida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El riesgo de la codebase compartida&lt;/h3&gt;
&lt;p&gt;La mayor fortaleza de Multisite - una codebase - es también su mayor consideración de seguridad. Una vulnerabilidad en un plugin activado en red afecta a &lt;strong&gt;todos los sitios&lt;/strong&gt; simultáneamente. Mitigación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Verificación estricta de plugins&lt;/strong&gt; - Solo activar en red plugins que han pasado auditoría de seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rollouts escalonados&lt;/strong&gt; - Probar actualizaciones en una red de staging que refleja producción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reglas WAF&lt;/strong&gt; - Implementar Web Application Firewall con reglas específicas para endpoints multisite.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;hardening-del-super-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hardening-del-super-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hardening del Super Admin&lt;/h3&gt;
&lt;p&gt;El rol Super Admin tiene acceso irrestricto a toda la red. Protección:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Limitar cuentas Super Admin&lt;/strong&gt; a un máximo de 2-3 personas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imponer 2FA por hardware&lt;/strong&gt; (YubiKey, FIDO2) para todas las cuentas Super Admin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lista blanca de IP&lt;/strong&gt; - Login Super Admin solo vía VPN corporativa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log de auditoría&lt;/strong&gt; - Registrar cada acción Super Admin con WP Activity Log (activado en red).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;aislamiento-por-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aislamiento-por-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aislamiento por sitio&lt;/h3&gt;
&lt;p&gt;Aunque los sitios comparten una codebase, puedes imponer aislamiento de contenido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aislamiento del directorio de subidas&lt;/strong&gt; - Las subidas de cada sitio están en &lt;code&gt;/wp-content/uploads/sites/{id}/&lt;/code&gt;. Desactivar listado de directorios y bloquear acceso entre sitios a nivel de servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aislamiento de cookies&lt;/strong&gt; - Cada sitio usa sus propias cookies de autenticación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restricción de capacidades&lt;/strong&gt; - Eliminar &lt;code&gt;unfiltered_html&lt;/code&gt;, &lt;code&gt;edit_files&lt;/code&gt; y &lt;code&gt;edit_plugins&lt;/code&gt; de los administradores a nivel de sitio mediante un mu-plugin activado en red.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;seguridad-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad de la base de datos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Usar un &lt;strong&gt;usuario MySQL dedicado&lt;/strong&gt; para la red multisite con permisos solo en la base de datos multisite.&lt;/li&gt;
&lt;li&gt;Activar &lt;strong&gt;logging de auditoría MySQL&lt;/strong&gt; para consultas que modifican tablas de usuarios y opciones.&lt;/li&gt;
&lt;li&gt;Implementar &lt;strong&gt;encriptación de base de datos en reposo&lt;/strong&gt; para redes sensibles (gobierno, salud).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;multisite-vs-arquitectura-headless-multi-tenant&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multisite-vs-arquitectura-headless-multi-tenant&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multisite vs. arquitectura headless multi-tenant&lt;/h2&gt;
&lt;h3 id=&quot;multisite-tradicional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multisite-tradicional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multisite tradicional&lt;/h3&gt;
&lt;p&gt;WordPress Multisite es una &lt;strong&gt;arquitectura monolítica multi-tenant&lt;/strong&gt;. Todos los sitios comparten los mismos procesos de servidor, base de datos y codebase. Frontend y backend están acoplados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt; Simple de configurar, funcionalidad nativa de WordPress, sin infraestructura adicional necesaria.
&lt;strong&gt;Desventajas:&lt;/strong&gt; Frontend acoplado limita opciones tecnológicas, todos los sitios comparten el mismo sobre de rendimiento.&lt;/p&gt;
&lt;h3 id=&quot;headless-multi-tenant&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#headless-multi-tenant&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Headless Multi-Tenant&lt;/h3&gt;
&lt;p&gt;Una arquitectura headless multi-tenant usa WordPress como CMS backend (vía REST API o WPGraphQL), mientras los frontends se construyen con React, Next.js, Astro o frameworks similares.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt; Escalabilidad de frontend independiente, flexibilidad tecnológica por sitio, mejores Core Web Vitals con generación estática.
&lt;strong&gt;Desventajas:&lt;/strong&gt; Infraestructura más compleja, requiere desarrollo de API, pierde algunos beneficios del ecosistema de temas WordPress.&lt;/p&gt;
&lt;h3 id=&quot;enfoque-híbrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-híbrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque híbrido&lt;/h3&gt;
&lt;p&gt;Muchas empresas en 2026 usan un enfoque híbrido: WordPress Multisite para gestión de contenido y workflows editoriales, con frontends headless que consumen la REST API. La red multisite sirve como hub de contenido, mientras el frontend de cada sitio se despliega independientemente.&lt;/p&gt;
&lt;h2 id=&quot;migración-a-multisite-desde-instalaciones-separadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-a-multisite-desde-instalaciones-separadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración a Multisite desde instalaciones separadas&lt;/h2&gt;
&lt;h3 id=&quot;evaluación-pre-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evaluación-pre-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evaluación pre-migración&lt;/h3&gt;
&lt;p&gt;Antes de la migración, audita cada instalación existente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inventario de plugins&lt;/strong&gt; - Listar todos los plugins por sitio. Identificar plugins compartidos (candidatos a activación en red) y únicos (activación por sitio).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de temas&lt;/strong&gt; - Determinar si los sitios pueden compartir un tema padre con variaciones de tema hijo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solapamiento de usuarios&lt;/strong&gt; - Identificar usuarios que existen en múltiples sitios. Se fusionarán en cuentas únicas con roles por sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volumen de contenido&lt;/strong&gt; - Calcular el tamaño total de la base de datos y almacenamiento de subidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditoría de código personalizado&lt;/strong&gt; - Verificar rutas hardcodeadas, asunciones single-site y código incompatible.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;proceso-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de migración&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Configurar la red multisite&lt;/strong&gt; en nueva infraestructura. Nunca convertir un sitio de producción in-place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrar el sitio primario&lt;/strong&gt; primero - se convierte en el sitio #1.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crear sub-sitios&lt;/strong&gt; para cada instalación adicional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exportar/Importar contenido&lt;/strong&gt; con WP-CLI: &lt;code&gt;wp export&lt;/code&gt; del origen, &lt;code&gt;wp import&lt;/code&gt; al sub-sitio de destino.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrar subidas&lt;/strong&gt; - Copiar el directorio de subidas de cada sitio a &lt;code&gt;/wp-content/uploads/sites/{id}/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remapear URLs&lt;/strong&gt; - Usar &lt;code&gt;wp search-replace&lt;/code&gt; para actualizar URLs internas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fusionar usuarios&lt;/strong&gt; - Script de migración de usuarios con verificación de conflictos de email y asignación correcta de roles por sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurar redirecciones&lt;/strong&gt; - 301 redirect de todas las URLs antiguas a los nuevos equivalentes multisite.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Probar exhaustivamente&lt;/strong&gt; - Verificar cada sitio, cada página, cada formulario, cada integración.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;trampas-comunes-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trampas-comunes-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trampas comunes de migración&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Datos serializados&lt;/strong&gt; - WordPress almacena arrays PHP serializados en la base de datos. La sustitución simple rompe strings serializados. Usar siempre &lt;code&gt;wp search-replace&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefijos de tabla mixtos&lt;/strong&gt; - Normalizar durante la exportación si los sitios origen usaban prefijos diferentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rutas de archivos de medios&lt;/strong&gt; - Las subidas deben reestructurarse a la estructura de directorio &lt;code&gt;/sites/{id}/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;gestión-de-plugins-y-temas-en-redes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-plugins-y-temas-en-redes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de plugins y temas en redes&lt;/h2&gt;
&lt;h3 id=&quot;plugins-activados-en-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-activados-en-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins activados en red&lt;/h3&gt;
&lt;p&gt;Los plugins activados en red se ejecutan en &lt;strong&gt;cada sitio&lt;/strong&gt; de la red. Usar para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugins de seguridad (Wordfence, iThemes Security)&lt;/li&gt;
&lt;li&gt;Plugins de rendimiento (Redis Object Cache, WP Super Cache)&lt;/li&gt;
&lt;li&gt;Plugins de SEO (Yoast SEO, Rank Math)&lt;/li&gt;
&lt;li&gt;Mu-plugins personalizados para funcionalidad de toda la red&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;activación-de-plugins-por-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#activación-de-plugins-por-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Activación de plugins por sitio&lt;/h3&gt;
&lt;p&gt;Permitir que los administradores de sitio activen plugins específicos de una lista curada. Controlar mediante:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instalar plugins a nivel de red (pero no activarlos en red).&lt;/li&gt;
&lt;li&gt;Usar un mu-plugin de governance que restringe qué plugins cada sitio puede activar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;governance-de-temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#governance-de-temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Governance de temas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Activar temas en red&lt;/strong&gt; - Solo los temas activados en red están disponibles para que los sitios los seleccionen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patrón tema padre/hijo&lt;/strong&gt; - Crear un tema padre con todos los assets de marca. Cada sitio usa un tema hijo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones de temas&lt;/strong&gt; - Probar actualizaciones en un sitio de staging primero, luego desplegar en la red.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;must-use-plugins-mu-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#must-use-plugins-mu-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Must-Use Plugins (mu-plugins)&lt;/h3&gt;
&lt;p&gt;El directorio &lt;code&gt;/wp-content/mu-plugins/&lt;/code&gt; es ideal para código de toda la red que &lt;strong&gt;no puede ser desactivado&lt;/strong&gt; por administradores de sitio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Definiciones de roles y capacidades personalizados&lt;/li&gt;
&lt;li&gt;Hardening de seguridad de toda la red&lt;/li&gt;
&lt;li&gt;Inyección de código de tracking de analytics&lt;/li&gt;
&lt;li&gt;Endpoints REST API personalizados para gestión de red&lt;/li&gt;
&lt;li&gt;Automatización de provisionamiento de sitios&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;roles-de-usuario-y-capacidades-en-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#roles-de-usuario-y-capacidades-en-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Roles de usuario y capacidades en Multisite&lt;/h2&gt;
&lt;h3 id=&quot;la-jerarquía-de-roles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-jerarquía-de-roles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La jerarquía de roles&lt;/h3&gt;
&lt;p&gt;WordPress Multisite añade una capa de red al sistema de roles estándar:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Super Admin&lt;/strong&gt; - A nivel de red. Puede hacer todo en cada sitio. Puede crear/eliminar sitios, gestionar configuraciónes de red, instalar plugins y temas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Administrador&lt;/strong&gt; - Por sitio. Control total sobre un sitio, pero no puede instalar plugins o temas (restricción de red).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor, Autor, Colaborador, Suscriptor&lt;/strong&gt; - Por sitio, roles estándar de WordPress.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Un único usuario puede tener diferentes roles en diferentes sitios: Administrador en Sitio A, Editor en Sitio B, Suscriptor en Sitio C.&lt;/p&gt;
&lt;h3 id=&quot;roles-personalizados-para-enterprise&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#roles-personalizados-para-enterprise&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Roles personalizados para Enterprise&lt;/h3&gt;
&lt;p&gt;Las redes enterprise frecuentemente necesitan roles personalizados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// mu-plugin: custom-multisite-roles.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;site_manager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Site Manager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;read&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;publish_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_theme_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;upload_files&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;single-sign-on-sso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#single-sign-on-sso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Single Sign-On (SSO)&lt;/h3&gt;
&lt;p&gt;Para enterprise multisite, el SSO es típicamente obligatorio. Opciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cookies nativos de WordPress&lt;/strong&gt; - Multisite ya comparte cookies de autenticación entre subdominios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración SAML/LDAP&lt;/strong&gt; - Plugins como miniOrange SAML SSO o WP SAML Auth para integración con identity providers enterprise (Azure AD, Okta, OneLogin).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OAuth 2.0&lt;/strong&gt; - Para redes que necesitan autenticación basada en tokens.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;provisionamiento-de-usuarios-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#provisionamiento-de-usuarios-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Provisionamiento de usuarios a escala&lt;/h3&gt;
&lt;p&gt;Para redes con miles de usuarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Provisionamiento SCIM&lt;/strong&gt; - Creación/desactivación automática de cuentas WordPress cuando se añaden/eliminan usuarios en el identity provider.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operaciones masivas WP-CLI&lt;/strong&gt; - &lt;code&gt;wp user create&lt;/code&gt; en loops con scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registro self-service&lt;/strong&gt; - Activar registro por sitio con workflows de aprobación.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;comparación-de-costes-multisite-vs-instalaciones-separadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-costes-multisite-vs-instalaciones-separadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de costes: Multisite vs. instalaciones separadas&lt;/h2&gt;
&lt;h3 id=&quot;costes-de-infraestructura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-de-infraestructura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes de infraestructura&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Componente&lt;/th&gt;&lt;th&gt;50 sitios separados&lt;/th&gt;&lt;th&gt;50-sitios Multisite&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Hosting&lt;/td&gt;&lt;td&gt;50 x 30EUR/mes = 1.500EUR/mes&lt;/td&gt;&lt;td&gt;1 x 200EUR/mes (alta especificación)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Certificados SSL&lt;/td&gt;&lt;td&gt;50 x certificados&lt;/td&gt;&lt;td&gt;1 wildcard + Let’s Encrypt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CDN&lt;/td&gt;&lt;td&gt;50 zonas&lt;/td&gt;&lt;td&gt;1 zona, múltiples dominios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Monitorización&lt;/td&gt;&lt;td&gt;50 checks de uptime&lt;/td&gt;&lt;td&gt;1 servidor + 50 checks de URL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Backup&lt;/td&gt;&lt;td&gt;50 x planes de backup&lt;/td&gt;&lt;td&gt;1 backup de servidor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Total infraestructura&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;~2.000EUR/mes&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;~400EUR/mes&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;costes-operativos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-operativos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes operativos&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tarea&lt;/th&gt;&lt;th&gt;Sitios separados&lt;/th&gt;&lt;th&gt;Multisite&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Actualizaciones de plugins&lt;/td&gt;&lt;td&gt;50 x ciclo de actualización&lt;/td&gt;&lt;td&gt;1 actualización, todos los sitios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Parches de seguridad&lt;/td&gt;&lt;td&gt;50 x ciclo de parche&lt;/td&gt;&lt;td&gt;1 parche, toda la red&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mantenimiento de temas&lt;/td&gt;&lt;td&gt;50 x gestión de temas&lt;/td&gt;&lt;td&gt;1 tema padre + hijos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gestión de usuarios&lt;/td&gt;&lt;td&gt;50 x bases de usuarios&lt;/td&gt;&lt;td&gt;1 base centralizada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Overhead DevOps&lt;/td&gt;&lt;td&gt;Alto (50 entornos)&lt;/td&gt;&lt;td&gt;Bajo (1 entorno)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;coste-total-de-propiedad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#coste-total-de-propiedad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Coste total de propiedad&lt;/h3&gt;
&lt;p&gt;Para una red de 50 sitios a lo largo de 3 años, multisite típicamente reduce el coste total de propiedad en &lt;strong&gt;60-70%&lt;/strong&gt; comparado con instalaciones separadas.&lt;/p&gt;
&lt;p&gt;Sin embargo, multisite tiene &lt;strong&gt;costes iniciales de configuración más altos&lt;/strong&gt; (planificación de arquitectura, migración, desarrollo personalizado). El break-even ocurre típicamente dentro de 6-12 meses.&lt;/p&gt;
&lt;h3 id=&quot;cuándo-las-instalaciones-separadas-son-más-baratas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-las-instalaciones-separadas-son-más-baratas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo las instalaciones separadas son más baratas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Muy pocos sitios&lt;/strong&gt; (menos de 5) - El overhead de multisite no está justificado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requisitos muy divergentes&lt;/strong&gt; - Si cada sitio necesita plugins y configuraciónes completamente diferentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting WordPress gestionado&lt;/strong&gt; - Plataformás como WP Engine, Kinsta o Flywheel ofrecen hosting gestionado por sitio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mejores-prácticas-wordpress-multisite-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-wordpress-multisite-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas WordPress multisite en 2026&lt;/h2&gt;
&lt;p&gt;Tras gestionar redes multisite desde 10 hasta más de 1.000 sitios, estas prácticas previenen consistentemente los problemas más comunes de escalabilidad y mantenimiento:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Usa arquitectura de subdominio para separación de marcas.&lt;/strong&gt; Multisite con subdirectorio (&lt;code&gt;site.com/brand1/&lt;/code&gt;) funciona para redes pequeñas, pero crea confusión de URLs a gran escala. Subdominio (&lt;code&gt;brand1.site.com&lt;/code&gt;) o mapeo de dominio (&lt;code&gt;brand1.com&lt;/code&gt;) proporciona una separación más limpia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Centraliza la activación de plugins a nivel de red.&lt;/strong&gt; No permitas que los administradores individuales de sitio instalen plugins. Mantén una lista de plugins aprobados a nivel de Super Admin y activa en red los plugins aprobados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementa object caching desde el primer dia.&lt;/strong&gt; Redis o Memcached con un drop-in de persistent object cache reduce las consultas a la base de datos hasta en un 90%. Esto no es opcional para multisite — es un requisito para un rendimiento aceptable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separa la base de datos para redes grandes.&lt;/strong&gt; Más allá de 100 sitios, migra a un servidor de base de datos dedicado o usa HyperDB para splitting de lectura/escritura. Cada sub-sitio añade su propio conjunto de tablas, y el volumen de consultas crece linealmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatiza el mantenimiento con WP-CLI.&lt;/strong&gt; Automatiza actualizaciones de plugins, optimización de base de datos y verificaciones de salud en toda la red usando los comandos &lt;code&gt;wp site list&lt;/code&gt; y &lt;code&gt;wp network&lt;/code&gt;. La gestión manual por dashboard no escala.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restringe los directorios de subida por sitio.&lt;/strong&gt; Configura rutas de subida aisladas para prevenir el acceso a archivos entre sitios. Usa las opciones &lt;code&gt;upload_path&lt;/code&gt; y &lt;code&gt;upload_url_path&lt;/code&gt; o un plugin dedicado de gestión de medios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoriza el rendimiento por sitio de forma independiente.&lt;/strong&gt; Un único sitio lento con un plugin problematico puede afectar a los recursos compartidos. Usa Query Monitor o New Relic con segmentación por sitio para identificar sub-sitios que consumen muchos recursos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Planifica tu estrategia de mapeo de dominios temprano.&lt;/strong&gt; Migrar estructuras de URL después del lanzamiento crea complejidad de redirecciones. Decide entre subdominios, subdirectorios o mapeo completo de dominios antes de desplegar el primer sub-sitio.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;WordPress Multisite es una arquitectura potente y probada en batalla para gestionar redes de sitios a escala enterprise. Con la infraestructura adecuada - caching Redis, réplicas de lectura de base de datos, CDN y hardening de seguridad - maneja miles de sitios eficientemente.&lt;/p&gt;
&lt;p&gt;Las decisiones clave son arquitectónicas: base de datos compartida vs. separada, subdominio vs. mapeo de dominio, monolítico vs. frontends headless, activación en red vs. por sitio. Toma las decisiones correctas durante la planificación y la red escalará sin problemas.&lt;/p&gt;
&lt;p&gt;Si necesitas ayuda para planificar o desplegar una red WordPress Multisite para tu empresa, &lt;a href=&quot;/es/contacto/&quot;&gt;contacta con nuestro equipo&lt;/a&gt; para consultoría de arquitectura y soporte de implementación. Tenemos experiencia con redes de 10 a más de 1.000 sitios en proyectos de &lt;a href=&quot;/es/desarrollo-sitios-web-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/tienda-online-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt; y &lt;a href=&quot;/es/headless-wordpress-nextjs-desarrollo/&quot;&gt;arquitectura headless&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>development</category><category>enterprise</category><category>hosting</category><category domain="tag">wordpress</category><category domain="tag">multisite</category><category domain="tag">enterprise</category><category domain="tag">escalabilidad</category><category domain="tag">arquitectura</category><category domain="tag">seguridad</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Optimización de rendimiento WooCommerce: La guía completa 2026</title><link>https://wppoland.com/es/optimizacion-rendimiento-woocommerce-2026/</link><guid isPermaLink="true">https://wppoland.com/es/optimizacion-rendimiento-woocommerce-2026/</guid><description>Domina cada aspecto de la optimización de rendimiento WooCommerce - desde ajuste de base de datos y caché Redis hasta corrección de cart fragments y arquitectura headless. Pasos prácticos con resultados medibles.</description><pubDate>Sat, 21 Mar 2026 23:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;Un segundo de retraso en el tiempo de carga le cuesta a la tienda de e-commerce promedio un 7% en conversiones. Para una tienda WooCommerce que genera 50 000 EUR mensuales, eso se traduce en 3 500 EUR perdidos cada mes - 42 000 EUR al año que se evaporan porque las páginas cargan demasiado lento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La optimización de rendimiento WooCommerce&lt;/strong&gt; no es un lujo. Determina directamente cuántos ingresos genera tu tienda, dónde Google posiciona tus páginas de producto y si los visitantes completan sus compras o abandonan el carrito por frustración. Esta guía cubre cada capa de optimización, desde consultas a la base de datos hasta arquitectura headless, con resultados medibles en cada paso.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;por-qué-el-rendimiento-de-woocommerce-importa-más-que-nunca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-el-rendimiento-de-woocommerce-importa-más-que-nunca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué el rendimiento de WooCommerce importa más que nunca&lt;/h2&gt;
&lt;p&gt;Los Core Web Vitals de Google son ahora una señal de clasificación confirmada, y las tiendas de e-commerce enfrentan el escrutinio más riguroso. Páginas de productos con LCP por encima de 2,5 segundos, cambios de diseño por imágenes de productos cargadas con retraso o interacciones lentas por JavaScript pesado - todo esto desencadena penalizaciones de posicionamiento en nichos competitivos.&lt;/p&gt;
&lt;p&gt;Más allá del SEO, el impacto en el negocio es contundente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Las tasas de conversión&lt;/strong&gt; caen un 4,42% por cada segundo adicional de tiempo de carga&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Las tasas de rebote&lt;/strong&gt; aumentan un 32% cuando el tiempo de carga pasa de 1 a 3 segundos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El abandono de carrito&lt;/strong&gt; se correlaciona directamente con la velocidad de la página de checkout - el 53% de los usuarios móviles se van si una página tarda más de 3 segundos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El valor medio de pedido&lt;/strong&gt; disminuye conforme baja la velocidad de la página, porque las tiendas lentas no inspiran confianza&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El efecto acumulativo es lo que más importa. Una tienda que carga en 1,5 segundos en lugar de 4,5 segundos no solo convierte un 10% mejor - se posiciona más alto, atrae más tráfico orgánico, convierte más de ese tráfico y genera valores de pedido más altos. La diferencia acumulada de ingresos puede alcanzar el 30-50% a lo largo de un año.&lt;/p&gt;
&lt;h2 id=&quot;la-pila-de-rendimiento-woocommerce-comprender-las-capas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-pila-de-rendimiento-woocommerce-comprender-las-capas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La pila de rendimiento WooCommerce: comprender las capas&lt;/h2&gt;
&lt;p&gt;Cada solicitud de página WooCommerce pasa por múltiples capas, cada una añadiendo latencia:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Resolución DNS&lt;/strong&gt; → 50-150ms (elección de CDN y proveedor DNS)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handshake TLS&lt;/strong&gt; → 50-100ms (configuración HTTP/2, TLS 1.3)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procesamiento del servidor&lt;/strong&gt; → 200-2000ms (PHP, base de datos, WordPress, WooCommerce)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transferencia de red&lt;/strong&gt; → 100-500ms (peso de página, compresión, CDN)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Renderizado del navegador&lt;/strong&gt; → 200-1000ms (CSS, JavaScript, imágenes, fuentes)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El procesamiento del servidor es donde las tiendas WooCommerce pierden más tiempo. Una página de producto WooCommerce típica sin optimizar ejecuta 300-800 consultas a la base de datos, carga 30-50 archivos PHP y ejecuta decenas de hooks de plugins - todo antes de que un solo byte llegue al navegador del visitante.&lt;/p&gt;
&lt;h2 id=&quot;optimización-de-la-base-de-datos-los-cimientos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-la-base-de-datos-los-cimientos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de la base de datos: los cimientos&lt;/h2&gt;
&lt;h3 id=&quot;optimización-de-consultas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-consultas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de consultas&lt;/h3&gt;
&lt;p&gt;WooCommerce almacena los datos de productos en múltiples tablas: &lt;code&gt;wp_posts&lt;/code&gt;, &lt;code&gt;wp_postmeta&lt;/code&gt;, &lt;code&gt;wp_terms&lt;/code&gt;, &lt;code&gt;wp_term_relationships&lt;/code&gt; y tablas de búsqueda específicas de WooCommerce. La tabla &lt;code&gt;wp_postmeta&lt;/code&gt; es el cuello de botella principal - una tienda con 5000 productos acumula fácilmente más de 500 000 filas en postmeta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Índices críticos a añadir:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_value_index (meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; compound_index (meta_key, meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_wc_product_meta_lookup &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; price_stock (min_price, stock_status);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Estos índices por sí solos pueden reducir los tiempos de consulta de listados de productos de 200-500ms a 10-30ms.&lt;/p&gt;
&lt;h3 id=&quot;limpieza-de-transients-y-datos-autoloaded&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limpieza-de-transients-y-datos-autoloaded&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limpieza de transients y datos autoloaded&lt;/h3&gt;
&lt;p&gt;WooCommerce genera miles de transients para datos de productos, sesiones de carrito y cachés de API. Los transients expirados se acumulan e inflan la tabla &lt;code&gt;wp_options&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Contar transients expirados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; COUNT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_transient_timeout_%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; UNIX_TIMESTAMP();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Limpiar transients expirados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; a, b &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options a, wp_options b&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_transient_%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_transient_timeout_%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; CONCAT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_transient_timeout_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;SUBSTRING&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option_value&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; UNIX_TIMESTAMP();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Las opciones autoloaded&lt;/strong&gt; son otro asesino silencioso. WordPress carga todas las opciones autoloaded en cada solicitud de página. WooCommerce y sus plugins frecuentemente hacen autoload de megabytes de datos serializados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Comprobar tamaño de datos autoloaded&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; SUM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LENGTH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(option_value)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; autoload_size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; autoload &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;yes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si los datos autoloaded superan 1MB, realiza una auditoría y establece las opciones grandes y poco utilizadas a &lt;code&gt;autoload = &apos;no&apos;&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;gestión-de-sesiones-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-sesiones-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de sesiones WooCommerce&lt;/h3&gt;
&lt;p&gt;WooCommerce almacena las sesiones de clientes en la base de datos por defecto. Las tiendas con alto tráfico pueden acumular miles de filas de sesión, creando contención de bloqueos durante el checkout:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Comprobar tamaño de tabla de sesiones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; COUNT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_woocommerce_sessions;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Limpiar sesiones expiradas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_woocommerce_sessions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; session_expiry &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; UNIX_TIMESTAMP();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para tiendas con más de 100 usuarios simultáneos, migra las sesiones a Redis para acceso concurrente sin bloqueos.&lt;/p&gt;
&lt;h2 id=&quot;optimización-de-imágenes-para-catálogos-de-productos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-imágenes-para-catálogos-de-productos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de imágenes para catálogos de productos&lt;/h2&gt;
&lt;p&gt;Las imágenes de productos son típicamente el elemento más grande en las páginas WooCommerce y el elemento LCP (Largest Contentful Paint) principal. Su optimización proporciona la mejora de rendimiento más visible para los visitantes.&lt;/p&gt;
&lt;h3 id=&quot;selección-de-formato-avif-vs-webp-vs-jpeg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#selección-de-formato-avif-vs-webp-vs-jpeg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Selección de formato: AVIF vs. WebP vs. JPEG&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Formato&lt;/th&gt;&lt;th&gt;Tamaño (base JPEG 500KB)&lt;/th&gt;&lt;th&gt;Soporte de navegadores&lt;/th&gt;&lt;th&gt;Calidad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;JPEG&lt;/td&gt;&lt;td&gt;500KB&lt;/td&gt;&lt;td&gt;100%&lt;/td&gt;&lt;td&gt;Base&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WebP&lt;/td&gt;&lt;td&gt;175KB (-65%)&lt;/td&gt;&lt;td&gt;97%&lt;/td&gt;&lt;td&gt;Equivalente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AVIF&lt;/td&gt;&lt;td&gt;125KB (-75%)&lt;/td&gt;&lt;td&gt;93%&lt;/td&gt;&lt;td&gt;Superior&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Utiliza AVIF como formato primario&lt;/strong&gt; con fallback a WebP y JPEG como fallback final:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;producto.avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;producto.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;producto.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Nombre del producto&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;800&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;800&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;dimensiones-de-imágenes-de-productos-y-lazy-loading&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dimensiones-de-imágenes-de-productos-y-lazy-loading&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dimensiones de imágenes de productos y lazy loading&lt;/h3&gt;
&lt;p&gt;Cada imagen de producto debe tener atributos &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt; explícitos para prevenir Cumulative Layout Shift (CLS). La primera fila visible de productos (típicamente 3-4 imágenes) debe cargarse con prioridad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_image_attributes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr, $attachment, $size) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_shop&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_product_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wp_query;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($wp_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;current_post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;lazy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;decoding&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;async&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;eager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fetchpriority&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;high&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;estrategias-de-caching-el-enfoque-de-tres-capas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-caching-el-enfoque-de-tres-capas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de caching: el enfoque de tres capas&lt;/h2&gt;
&lt;h3 id=&quot;capa-1-object-cache-con-redis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-1-object-cache-con-redis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 1: Object cache con Redis&lt;/h3&gt;
&lt;p&gt;Redis object cache es la optimización de servidor más impactante para WooCommerce. Almacena resultados de consultas a la base de datos, valores calculados y datos de productos WooCommerce en memoria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Medición de impacto de tiendas reales:&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Sin Redis&lt;/th&gt;&lt;th&gt;Con Redis&lt;/th&gt;&lt;th&gt;Mejora&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Consultas DB por página&lt;/td&gt;&lt;td&gt;280-500&lt;/td&gt;&lt;td&gt;30-60&lt;/td&gt;&lt;td&gt;-80%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTFB (sin caché)&lt;/td&gt;&lt;td&gt;600-1200ms&lt;/td&gt;&lt;td&gt;150-300ms&lt;/td&gt;&lt;td&gt;-75%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Uso de memoria PHP&lt;/td&gt;&lt;td&gt;64-128MB&lt;/td&gt;&lt;td&gt;32-64MB&lt;/td&gt;&lt;td&gt;-50%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Carga CPU del servidor&lt;/td&gt;&lt;td&gt;Alta&lt;/td&gt;&lt;td&gt;Baja&lt;/td&gt;&lt;td&gt;-60%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Configuración Redis para WooCommerce:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;127.0.0.1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PORT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;6379&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_DATABASE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_MAXTTL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;86400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PREFIX&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woo_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_IGNORED_GROUPS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;counts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugins&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Monitoriza las tasas de acierto de Redis - un caché Redis WooCommerce saludable muestra un 85-95% de hit rate. Por debajo del 70% indica fragmentación de claves de caché o TTL demasiado corto.&lt;/p&gt;
&lt;h3 id=&quot;capa-2-full-page-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-2-full-page-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 2: Full page cache&lt;/h3&gt;
&lt;p&gt;Full page caching almacena el HTML completamente renderizado de las páginas, evitando PHP y base de datos por completo para visitantes en caché - típicamente 20-50ms de TTFB.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reglas de exclusión críticas para WooCommerce:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/carrito/&lt;/code&gt; - Siempre dinámico&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/finalizar-compra/&lt;/code&gt; - Siempre dinámico&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/mi-cuenta/&lt;/code&gt; - Siempre dinámico&lt;/li&gt;
&lt;li&gt;Cualquier URL con la cookie &lt;code&gt;woocommerce_items_in_cart&lt;/code&gt; establecida&lt;/li&gt;
&lt;li&gt;Solicitudes POST&lt;/li&gt;
&lt;li&gt;URLs con parámetros &lt;code&gt;add-to-cart&lt;/code&gt;, &lt;code&gt;removed_item&lt;/code&gt;, &lt;code&gt;undo_item&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-3-fragment-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-3-fragment-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 3: Fragment cache&lt;/h3&gt;
&lt;p&gt;Fragment caching almacena componentes individuales de página que son costosos de generar pero compartidos entre páginas - menús de navegación, widgets del pie de página, árboles de categorías y contadores de filtros de productos.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cached_category_tree&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;woo_category_tree_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_locale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cached &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cache_key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woo_fragments&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cached) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cached;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_terms&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;taxonomy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;product_cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;hide_empty&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;count&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;DESC&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; render_category_tree&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($categories);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cache_key, $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woo_fragments&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $output;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;cart-fragments-ajax-el-asesino-de-rendimiento-número-uno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cart-fragments-ajax-el-asesino-de-rendimiento-número-uno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cart Fragments AJAX: el asesino de rendimiento número uno&lt;/h2&gt;
&lt;p&gt;WooCommerce cart fragments es una funcionalidad JavaScript que actualiza el widget de mini-carrito en cada página. Dispara una solicitud AJAX no cacheable (&lt;code&gt;?wc-ajax=get_refreshed_fragments&lt;/code&gt;) en cada carga de página - incluso cuando el carrito está vacío, incluso en páginas sin widget de carrito.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El impacto es devastador:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Añade 0,5-2 segundos a cada carga de página sin caché&lt;/li&gt;
&lt;li&gt;Evita el page cache (cada solicitud AJAX impacta PHP/base de datos)&lt;/li&gt;
&lt;li&gt;Envía 20-50KB de HTML en el cuerpo de la respuesta&lt;/li&gt;
&lt;li&gt;Bloquea el hilo principal mientras parsea e inyecta HTML&lt;/li&gt;
&lt;li&gt;Desencadena cambios de diseño cuando el widget del carrito se actualiza&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-solución-desactivar-cart-fragments-en-páginas-sin-carrito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-desactivar-cart-fragments-en-páginas-sin-carrito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: desactivar cart fragments en páginas sin carrito&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_cart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wc-cart-fragments&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;99&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para tiendas que necesitan un contador de carrito en vivo en el encabezado, sustituye los pesados cart fragments por una llamada REST API ligera:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Contador de carrito ligero - sustituye los pesados cart fragments&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; updateCartCount&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/wc/store/v1/cart&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            credentials: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;same-origin&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.cart-count&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).textContent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cart.items_count;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (e) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Fallo silencioso - el contador del carrito simplemente no se actualiza&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;added_to_cart&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, updateCartCount);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta única optimización frecuentemente mejora las puntuaciones de PageSpeed móvil en 15-25 puntos.&lt;/p&gt;
&lt;h2 id=&quot;optimización-del-flujo-de-checkout&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-flujo-de-checkout&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del flujo de checkout&lt;/h2&gt;
&lt;p&gt;La página de checkout es donde realmente se generan los ingresos, y a menudo es la página más lenta de una tienda WooCommerce. Cada 100ms de retraso en la página de checkout incrementa de forma medible el abandono de carrito.&lt;/p&gt;
&lt;h3 id=&quot;reducir-el-peso-de-la-página-de-checkout&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reducir-el-peso-de-la-página-de-checkout&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reducir el peso de la página de checkout&lt;/h3&gt;
&lt;p&gt;Audita los scripts que se cargan en la página de checkout. Culpables habituales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Píxeles de marketing&lt;/strong&gt; (Facebook, Google Ads, TikTok) - Aplazar a &lt;code&gt;requestIdleCallback&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Widgets de chat en vivo&lt;/strong&gt; - Cargar solo después de interacción del usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scripts de analytics&lt;/strong&gt; - Usar alternativas ligeras o aplazar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS/JS de plugins&lt;/strong&gt; - Muchos plugins cargan en todas las páginas incluyendo checkout&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slider-plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slider-plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;auditoría-de-plugins-qué-plugins-ralentizan-más-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoría-de-plugins-qué-plugins-ralentizan-más-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoría de plugins: qué plugins ralentizan más WooCommerce&lt;/h2&gt;
&lt;p&gt;No todos los plugins tienen el mismo coste de rendimiento. Estos son los culpables más comunes basados en auditorías reales de tiendas:&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Categoría de plugin&lt;/th&gt;&lt;th&gt;Impacto típico&lt;/th&gt;&lt;th&gt;Enfoque alternativo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Constructores de páginas visuales&lt;/td&gt;&lt;td&gt;+2-5s TTFB, +500KB-2MB JS&lt;/td&gt;&lt;td&gt;Editor de bloques o tema personalizado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Botones de compartir en redes&lt;/td&gt;&lt;td&gt;+300-800ms, 10-20 solicitudes ext.&lt;/td&gt;&lt;td&gt;Iconos SVG estáticos con URLs de compartir&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Plugins de productos relacionados&lt;/td&gt;&lt;td&gt;+200-500ms, 10-50 consultas extra&lt;/td&gt;&lt;td&gt;Consulta personalizada con object cache&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Plugins SEO (pesados)&lt;/td&gt;&lt;td&gt;+100-300ms, overhead en admin&lt;/td&gt;&lt;td&gt;SEO ligero (Slim SEO)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Addons WooCommerce&lt;/td&gt;&lt;td&gt;+100-500ms por addon&lt;/td&gt;&lt;td&gt;Auditoría, consolidar, cachear&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Analytics/tracking&lt;/td&gt;&lt;td&gt;+200-1000ms, bloqueo de renderizado&lt;/td&gt;&lt;td&gt;Tracking del lado del servidor o GTM&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;El proceso de auditoría de plugins:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instalar Query Monitor y activar el profiling de consultas a la base de datos&lt;/li&gt;
&lt;li&gt;Cargar una página de producto, listado de productos y página de checkout&lt;/li&gt;
&lt;li&gt;Ordenar consultas por tiempo - identificar qué plugins generan las consultas más lentas&lt;/li&gt;
&lt;li&gt;Desactivar plugins uno por uno, midiendo el impacto en TTFB y total de consultas&lt;/li&gt;
&lt;li&gt;Reemplazar plugins costosos por alternativas ligeras o código personalizado&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;configuración-del-servidor-php-opcache-y-mariadb&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-del-servidor-php-opcache-y-mariadb&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración del servidor: PHP, OPcache y MariaDB&lt;/h2&gt;
&lt;h3 id=&quot;php-workers-y-configuración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#php-workers-y-configuración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PHP workers y configuración&lt;/h3&gt;
&lt;p&gt;WooCommerce es intensivo en PHP. Cada visitante simultáneo requiere un PHP worker:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Optimizaciónes php.ini para WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;memory_limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 256M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_execution_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 30&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_input_vars&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 5000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; OPcache - crítico para WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.enable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.memory_consumption&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 256&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.max_accelerated_files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 20000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.validate_timestamps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.revalidate_freq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.interned_strings_buffer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 16&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.jit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = tracing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.jit_buffer_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 64M&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Fórmula de PHP workers:&lt;/strong&gt; Para WooCommerce, asigna 1 PHP worker por cada 2-3 visitantes simultáneos. Una tienda con 50 visitantes simultáneos necesita 15-25 workers PHP-FPM:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = dynamic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.max_children&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 25&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.start_servers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.min_spare_servers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.max_spare_servers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 15&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pm.max_requests&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 500&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;opcache-el-impulso-de-rendimiento-gratuito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opcache-el-impulso-de-rendimiento-gratuito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;OPcache: el impulso de rendimiento gratuito&lt;/h3&gt;
&lt;p&gt;OPcache almacena bytecode PHP compilado en memoria compartida. Para WooCommerce, que carga más de 500 archivos PHP por solicitud, OPcache reduce típicamente el tiempo de procesamiento PHP en un 40-60%.&lt;/p&gt;
&lt;p&gt;Con PHP 8.1+ JIT (compilación Just-In-Time), las operaciones core de WooCommerce obtienen una mejora adicional del 10-20%.&lt;/p&gt;
&lt;h3 id=&quot;tuning-mariadbmysql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tuning-mariadbmysql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tuning MariaDB/MySQL&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;[mysqld]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;innodb_buffer_pool_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 2G&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;innodb_buffer_pool_instances&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query_cache_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query_cache_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_connections&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 150&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;innodb_log_file_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 256M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;innodb_flush_log_at_trx_commit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;innodb_flush_method&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = O_DIRECT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;tmp_table_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 64M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_heap_table_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 64M&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El &lt;code&gt;innodb_buffer_pool_size&lt;/code&gt; es la configuración más importante. Determina cuánto de tu base de datos cabe en RAM. Cuando el buffer pool es lo suficientemente grande, las lecturas de la base de datos provienen de la memoria en lugar del disco - una diferencia de velocidad de 100 veces.&lt;/p&gt;
&lt;h2 id=&quot;headless-woocommerce-la-solución-de-rendimiento-definitiva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#headless-woocommerce-la-solución-de-rendimiento-definitiva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Headless WooCommerce: la solución de rendimiento definitiva&lt;/h2&gt;
&lt;p&gt;Cuando la optimización tradicional alcanza sus límites (típicamente PageSpeed 70-85 en móvil), la arquitectura headless rompe ese techo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Headless WooCommerce&lt;/strong&gt; mantiene el panel de administración WooCommerce para gestión de productos, pedidos e inventario. El frontend orientado al clientes se reconstruye con un framework moderno - Astro para tiendas enfocadas en contenido estático, Next.js para tiendas altamente dinámicas.&lt;/p&gt;
&lt;h3 id=&quot;comparación-de-rendimiento-tradicional-vs-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-rendimiento-tradicional-vs-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de rendimiento: tradicional vs. headless&lt;/h3&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Tradicional (optimizado)&lt;/th&gt;&lt;th&gt;Headless con Astro&lt;/th&gt;&lt;th&gt;Mejora&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;PageSpeed móvil&lt;/td&gt;&lt;td&gt;70-85&lt;/td&gt;&lt;td&gt;95-100&lt;/td&gt;&lt;td&gt;+15-30 puntos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTFB&lt;/td&gt;&lt;td&gt;200-400ms&lt;/td&gt;&lt;td&gt;20-50ms&lt;/td&gt;&lt;td&gt;-80-95%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LCP&lt;/td&gt;&lt;td&gt;2,0-3,5s&lt;/td&gt;&lt;td&gt;0,8-1,5s&lt;/td&gt;&lt;td&gt;-50-75%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JS total&lt;/td&gt;&lt;td&gt;300-800KB&lt;/td&gt;&lt;td&gt;20-80KB&lt;/td&gt;&lt;td&gt;-90%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso de página&lt;/td&gt;&lt;td&gt;1,5-4MB&lt;/td&gt;&lt;td&gt;200-600KB&lt;/td&gt;&lt;td&gt;-75-85%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CLS&lt;/td&gt;&lt;td&gt;0,05-0,25&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;Eliminado&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;cuándo-headless-tiene-sentido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-headless-tiene-sentido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo headless tiene sentido&lt;/h3&gt;
&lt;p&gt;Headless WooCommerce es la elección correcta cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tu tienda tiene 1000+ visitantes diarios y el rendimiento impacta directamente los ingresos&lt;/li&gt;
&lt;li&gt;Los Core Web Vitals son un factor de clasificación competitivo en tu nicho&lt;/li&gt;
&lt;li&gt;La optimización tradicional ha alcanzado una meseta en PageSpeed 70-85&lt;/li&gt;
&lt;li&gt;Necesitas una experiencia de compra altamente personalizada (configuradores, 3D, AR)&lt;/li&gt;
&lt;li&gt;El comercio multicanal requiere la misma API para web, móvil y quioscos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para tiendas más pequeñas, la inversión en desarrollo headless frecuentemente supera las ganancias de rendimiento. Concéntrate primero en las estrategias de optimización tradicionales - entregan el 80% de los resultados por el 20% del esfuerzo.&lt;/p&gt;
&lt;p&gt;Lee nuestra guía detallada sobre &lt;a href=&quot;/en/headless-woocommerce-astro-ecommerce-guide-2026/&quot;&gt;headless WooCommerce con Astro&lt;/a&gt; para la arquitectura completa y el recorrido de implementación.&lt;/p&gt;
&lt;h2 id=&quot;antesdespués-resultados-reales-de-optimización-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#antesdespués-resultados-reales-de-optimización-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Antes/después: resultados reales de optimización WooCommerce&lt;/h2&gt;
&lt;p&gt;Estos resultados provienen de optimizaciones reales de tiendas WooCommerce realizadas por nuestro equipo:&lt;/p&gt;

































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Antes de la optimización&lt;/th&gt;&lt;th&gt;Después (tradicional)&lt;/th&gt;&lt;th&gt;Después (headless)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;PageSpeed móvil&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;78&lt;/td&gt;&lt;td&gt;98&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTFB&lt;/td&gt;&lt;td&gt;1800ms&lt;/td&gt;&lt;td&gt;280ms&lt;/td&gt;&lt;td&gt;35ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LCP&lt;/td&gt;&lt;td&gt;6,2s&lt;/td&gt;&lt;td&gt;2,1s&lt;/td&gt;&lt;td&gt;1,0s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CLS&lt;/td&gt;&lt;td&gt;0,32&lt;/td&gt;&lt;td&gt;0,02&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;INP&lt;/td&gt;&lt;td&gt;450ms&lt;/td&gt;&lt;td&gt;120ms&lt;/td&gt;&lt;td&gt;45ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso de página&lt;/td&gt;&lt;td&gt;4,8MB&lt;/td&gt;&lt;td&gt;1,2MB&lt;/td&gt;&lt;td&gt;380KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Consultas DB/página&lt;/td&gt;&lt;td&gt;680&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;0 (estática)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tasa de conversión&lt;/td&gt;&lt;td&gt;1,2%&lt;/td&gt;&lt;td&gt;2,8%&lt;/td&gt;&lt;td&gt;3,9%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ingresos mensuales&lt;/td&gt;&lt;td&gt;42 000 EUR&lt;/td&gt;&lt;td&gt;98 000 EUR&lt;/td&gt;&lt;td&gt;136 500 EUR&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El camino de optimización tradicional (Redis, tuning de base de datos, optimización de imágenes, corrección de cart fragments) proporcionó un aumento de ingresos del 133%. La migración headless añadió un 39% adicional sobre eso.&lt;/p&gt;
&lt;h2 id=&quot;checklist-de-core-web-vitals-para-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-de-core-web-vitals-para-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist de Core Web Vitals para WooCommerce&lt;/h2&gt;
&lt;h3 id=&quot;largest-contentful-paint-lcp---objetivo-por-debajo-de-25s&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#largest-contentful-paint-lcp---objetivo-por-debajo-de-25s&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Largest Contentful Paint (LCP) - Objetivo: por debajo de 2,5s&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Precargar la imagen principal del producto en las páginas de producto&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Usar AVIF con fallback WebP para todas las imágenes de productos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar CDN para entrega de imágenes con edge caching&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Asegurar que la imagen LCP no tenga lazy loading&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Eliminar CSS y JavaScript bloqueadores de renderizado above-the-fold&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Establecer &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; en la imagen principal del producto&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cumulative-layout-shift-cls---objetivo-0&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cumulative-layout-shift-cls---objetivo-0&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cumulative Layout Shift (CLS) - Objetivo: 0&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Establecer &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt; explícitos en todas las imágenes de productos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Reservar espacio para galerías de imágenes de productos antes de que carguen&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Prevenir cambios de diseño por cart fragments cargados tarde&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Usar &lt;code&gt;font-display: swap&lt;/code&gt; con fuentes de respaldo ajustadas en tamaño&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;interaction-to-next-paint-inp---objetivo-por-debajo-de-200ms&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#interaction-to-next-paint-inp---objetivo-por-debajo-de-200ms&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Interaction to Next Paint (INP) - Objetivo: por debajo de 200ms&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Aplazar JavaScript no crítico a &lt;code&gt;requestIdleCallback&lt;/code&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Dividir tareas largas en el JavaScript de filtros de productos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Usar &lt;code&gt;content-visibility: auto&lt;/code&gt; para cuadrículas de productos fuera de la pantalla&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Minimizar trabajo del hilo principal de scripts de analytics y tracking&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;monitorización-y-optimización-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitorización-y-optimización-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitorización y optimización continua&lt;/h2&gt;
&lt;p&gt;La optimización de rendimiento no es un proyecto único. Las tiendas WooCommerce cambian constantemente - nuevos productos, nuevos plugins, actualizaciones de tema, picos de tráfico:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Configurar Real User Monitoring (RUM)&lt;/strong&gt; - Rastrear Core Web Vitals de sesiones reales de visitantes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatizar pruebas PageSpeed&lt;/strong&gt; - Ejecutar pruebas Lighthouse diarias en páginas clave&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorizar tasas de acierto de Redis&lt;/strong&gt; - Alertar cuando la tasa cae por debajo del 80%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rastrear conteo de consultas a la base de datos&lt;/strong&gt; - Alertar cuando las consultas por página exceden la línea base en un 20%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisar actualizaciones de plugins&lt;/strong&gt; - Probar actualizaciones en staging primero&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;próximos-pasos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#próximos-pasos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Próximos pasos&lt;/h2&gt;
&lt;p&gt;La optimización de rendimiento WooCommerce es un proceso por capas. Comienza con los cambios de mayor impacto - Redis object cache, corrección de cart fragments y optimización de imágenes - y luego avanza progresivamente hacia el tuning de base de datos, la configuración del servidor y las optimizaciones de frontend.&lt;/p&gt;
&lt;p&gt;Para tiendas donde el rendimiento es una ventaja competitiva crítica, la arquitectura headless WooCommerce entrega resultados que la optimización tradicional simplemente no puede igualar.&lt;/p&gt;
&lt;p&gt;¿Necesitas optimización profesional de WooCommerce? Nuestro equipo ha optimizado cientos de tiendas WooCommerce, desde pequeños catálogos de productos hasta operaciones enterprise con más de 50 000 SKUs. &lt;a href=&quot;/en/contact/&quot;&gt;Contáctanos para una auditoría de rendimiento&lt;/a&gt; y descubre exactamente qué está ralentizando tu tienda y cómo soluciónarlo.&lt;/p&gt;
&lt;p&gt;También ofrecemos servicios integrales de &lt;a href=&quot;/en/speed-up-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; que cubren toda la pila - servidor, base de datos, aplicación y frontend.&lt;/p&gt;</content:encoded><category>wordpress</category><category>woocommerce</category><category>rendimiento</category><category domain="tag">woocommerce</category><category domain="tag">performance</category><category domain="tag">optimization</category><category domain="tag">core-web-vitals</category><category domain="tag">redis</category><category domain="tag">headless</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>WordPress AI Workflows: La revolución de la Abilities API en WordPress 7.x</title><link>https://wppoland.com/es/wordpress-ai-workflows-abilities-api-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-ai-workflows-abilities-api-2026/</guid><description>Cómo la WordPress Abilities API permite a los agentes de IA descubrir y utilizar funcionalidades de WordPress programáticamente. Construye workflows inteligentes con servidores MCP, plugins de ChatGPT y herramientas de Claude.</description><pubDate>Sat, 21 Mar 2026 22:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;WordPress siempre ha sido extensible. Hooks, filtros, la REST API y GraphQL proporcionaron a los desarrolladores múltiples capas de acceso programático. Sin embargo, ninguno de estos sistemas fue diseñado para un mundo donde &lt;strong&gt;agentes de IA&lt;/strong&gt; necesitan descubrir, comprender y utilizar funcionalidades de WordPress de forma autónoma. La próxima &lt;strong&gt;Abilities API&lt;/strong&gt; en WordPress 7.x cambia eso fundamentalmente.&lt;/p&gt;
&lt;p&gt;La Abilities API introduce una forma estandarizada para que plugins y temas declaren lo que pueden hacer - no solo qué datos exponen, sino qué &lt;strong&gt;acciones&lt;/strong&gt; ejecutan y qué &lt;strong&gt;intenciones&lt;/strong&gt; satisfacen. Cuando un agente de IA se conecta a un sitio WordPress, lee un manifiesto de abilities legible por máquina y puede invocarlas con autenticación y ámbito de permisos adecuados. Esta es la base para workflows WordPress verdaderamente inteligentes.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;qué-es-la-wordpress-abilities-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-la-wordpress-abilities-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué es la WordPress Abilities API?&lt;/h2&gt;
&lt;h3 id=&quot;el-problema-con-los-enfoques-actuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-con-los-enfoques-actuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema con los enfoques actuales&lt;/h3&gt;
&lt;p&gt;La WordPress REST API es potente pero orientada a recursos. Expone endpoints como &lt;code&gt;/wp/v2/posts&lt;/code&gt; y &lt;code&gt;/wc/v3/products&lt;/code&gt; - operaciones CRUD sobre objetos de datos. Un agente de IA puede usar estos endpoints, pero necesita estar preprogramado para saber qué hace cada endpoint, qué parámetros acepta y cómo encadenar múltiples llamadas para lograr un objetivo.&lt;/p&gt;
&lt;p&gt;WPGraphQL mejora esto al permitir consultas flexibles, pero comparte la misma limitación fundamental: &lt;strong&gt;describe datos, no capacidades&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Consideremos este escenario: quieres que un agente de IA «escriba un artículo sobre jardinería primaveral, lo optimice para SEO, añada una imagen destacada y programe la publicación para el próximo martes.» Con la REST API, el agente necesita:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Conocer el endpoint &lt;code&gt;/wp/v2/posts&lt;/code&gt; y sus parámetros&lt;/li&gt;
&lt;li&gt;Saber que los datos SEO residen en un campo meta controlado por Yoast o RankMath&lt;/li&gt;
&lt;li&gt;Saber cómo subir medios vía &lt;code&gt;/wp/v2/media&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Conocer el formato de fecha para programación&lt;/li&gt;
&lt;li&gt;Encadenar estas llamadas en el orden correcto&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Con la Abilities API, el agente lee el manifiesto y descubre abilities como &lt;code&gt;create_content&lt;/code&gt;, &lt;code&gt;optimize_seo&lt;/code&gt;, &lt;code&gt;attach_media&lt;/code&gt; y &lt;code&gt;schedule_publication&lt;/code&gt;. Cada ability declara sus inputs, outputs y dependencias. El agente puede razonar sobre ellas y componer workflows sin conocimiento codificado de URLs de endpoints.&lt;/p&gt;
&lt;h3 id=&quot;visión-general-de-la-arquitectura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#visión-general-de-la-arquitectura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Visión general de la arquitectura&lt;/h3&gt;
&lt;p&gt;La Abilities API añade tres capas sobre la infraestructura WordPress existente:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Registro de Abilities&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Plugins y temas registran abilities a través de una API declarativa:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;register_ability&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mi-plugin/generar-informe&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;       =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Generar informe analítico&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Crea un informe PDF de analítica para un período específicado&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;analytics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;input_schema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;object&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;properties&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;start_date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;format&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;end_date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;format&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;metrics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;array&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;required&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;start_date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;end_date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;output_schema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;object&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;properties&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;report_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;format&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;uri&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;summary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;capability&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;view_analytics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;rate_limit&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;10/hour&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;mi_plugin_generar_informe&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Endpoint del manifiesto&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La API expone un endpoint de descubrimiento en &lt;code&gt;/wp-json/abilities/v1/manifest&lt;/code&gt; que retorna un documento JSON listando todas las abilities registradas, sus esquemas, requisitos de autenticación y límites de tasa. Los agentes de IA leen este manifiesto para entender qué puede hacer el sitio WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Capa de invocación&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Las abilities se invocan a través de &lt;code&gt;/wp-json/abilities/v1/invoke/{ability-slug}&lt;/code&gt; con input JSON que coincide con el esquema declarado. La capa gestiona validación, verificaciónes de permisos, limitación de tasa y registro de auditoría antes de despachar al callback de la ability.&lt;/p&gt;
&lt;h2 id=&quot;cómo-la-abilities-api-habilita-la-integración-con-agentes-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-la-abilities-api-habilita-la-integración-con-agentes-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo la Abilities API habilita la integración con agentes de IA&lt;/h2&gt;
&lt;h3 id=&quot;la-conexión-con-el-model-context-protocol-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-conexión-con-el-model-context-protocol-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La conexión con el Model Context Protocol (MCP)&lt;/h3&gt;
&lt;p&gt;El Model Context Protocol (MCP) de Anthropic define cómo los agentes de IA descubren y utilizan herramientas externas. El manifiesto de la Abilities API se mapea directamente al formato de definición de herramientas de MCP. Un sitio WordPress con la Abilities API se convierte en un servidor MCP al que cualquier agente compatible puede conectarse.&lt;/p&gt;
&lt;p&gt;El flujo funciona así:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agente de IA recibe una solicitud del usuario: «Actualiza todas las descripciones de productos con mensajes de sostenibilidad»&lt;/li&gt;
&lt;li&gt;Agente se conecta al endpoint MCP de WordPress&lt;/li&gt;
&lt;li&gt;Agente lee el manifiesto de abilities, descubriendo &lt;code&gt;update_product&lt;/code&gt;, &lt;code&gt;generate_content&lt;/code&gt; y &lt;code&gt;batch_operation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Agente compone un workflow: obtener productos → generar descripciones actualizadas → aplicar actualización masiva&lt;/li&gt;
&lt;li&gt;Agente ejecuta el workflow con autenticación correcta&lt;/li&gt;
&lt;li&gt;Cada paso se registra en el rastro de auditoría de WordPress&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;compatibilidad-con-plugins-de-openai&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#compatibilidad-con-plugins-de-openai&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Compatibilidad con plugins de OpenAI&lt;/h3&gt;
&lt;p&gt;El endpoint del manifiesto también puede generar especificaciones compatibles con plugins de OpenAI. Esto significa que un sitio WordPress puede funcionar como plugin de ChatGPT, permitiendo a los usuarios interactuar con su sitio WordPress a través de lenguaje natural en ChatGPT.&lt;/p&gt;
&lt;h3 id=&quot;soporte-genérico-de-tool-use&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soporte-genérico-de-tool-use&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soporte genérico de Tool-Use&lt;/h3&gt;
&lt;p&gt;Para sistemas de IA que utilizan llamadas de función genéricas (como el tool use de Claude), el manifiesto proporciona definiciones JSON Schema que se mapean directamente a parámetros de herramientas. Cualquier agente de IA que soporte llamadas de herramientas estructuradas puede consumir abilities de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;casos-de-uso-prácticos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-prácticos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso prácticos&lt;/h2&gt;
&lt;h3 id=&quot;workflows-de-creación-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#workflows-de-creación-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Workflows de creación de contenido&lt;/h3&gt;
&lt;p&gt;El caso de uso más inmediato es la creación inteligente de contenido. En lugar de que una IA genere texto bruto que un humano pega en WordPress, el agente de IA gestiona todo el workflow:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Usuario: &quot;Crea una guía completa sobre control biológico de plagas para nuestro blog de jardinería&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Workflow del agente de IA:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1. invoke: research_topics → encuentra subtemas en tendencia y brechas de la competencia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2. invoke: generate_content → crea artículo de 3000 palabras con encabezados y referencias de imágenes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;3. invoke: optimize_seo → añade meta descripción, palabra clave foco, enlaces internos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;4. invoke: generate_featured_image → crea imagen hero generada por IA&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;5. invoke: create_draft → guarda como borrador con todos los metadatos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;6. invoke: notify_editor → envía notificación de revisión al equipo editorial&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada ability es proporcionada por un plugin diferente - SEO por RankMath, generación de imágenes por un plugin de medios IA, notificaciones por un plugin de workflow. El agente de IA los orquesta a través de la Abilities API unificada.&lt;/p&gt;
&lt;h3 id=&quot;gestión-de-tienda-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-tienda-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de tienda WooCommerce&lt;/h3&gt;
&lt;p&gt;Para sitios de e-commerce, los agentes de IA pueden gestionar toda la operación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gestión de inventario&lt;/strong&gt;: monitorizar niveles de stock, generar sugerencias de reabastecimiento, actualizar cantidades&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de precios&lt;/strong&gt;: analizar precios de la competencia, sugerir ajustes, aplicar cambios masivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Descripciones de productos&lt;/strong&gt;: generar y actualizar descripciones basadas en atributos de productos y objetivos SEO&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servicio al clientes&lt;/strong&gt;: procesar reembolsos, actualizar estados de pedidos, generar etiquetas de envío&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de ventas&lt;/strong&gt;: generar informes, identificar tendencias, sugerir promociones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un propietario de tienda podría decir «Analiza los productos que no se han vendido en 90 días y sugiere si deben tener descuento, agruparse en bundle o descontinuarse» - y el agente de IA utilizaría abilities de WooCommerce para obtener datos de ventas, analizarlos y presentar recomendaciónes accionables.&lt;/p&gt;
&lt;h3 id=&quot;automatización-de-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatización-de-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatización de SEO&lt;/h3&gt;
&lt;p&gt;Las tareas de SEO que anteriormente requerían trabajo manual o herramientas separadas se convierten en abilities que los agentes de IA componen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;analyze_page_seo&lt;/code&gt; - retorna puntuación SEO, meta tags faltantes, densidad de palabras clave&lt;/li&gt;
&lt;li&gt;&lt;code&gt;suggest_internal_links&lt;/code&gt; - encuentra contenido relacionado para cross-linking&lt;/li&gt;
&lt;li&gt;&lt;code&gt;check_broken_links&lt;/code&gt; - escanea 404s y sugiere reemplazos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generate_schema_markup&lt;/code&gt; - crea datos estructurados JSON-LD&lt;/li&gt;
&lt;li&gt;&lt;code&gt;optimize_images&lt;/code&gt; - comprime y añade texto alt a imágenes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;audit_content_freshness&lt;/code&gt; - marca contenido desactualizado para revisión&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un agente de IA puede ejecutar una auditoría SEO completa invocando estas abilities secuencialmente, luego generar un plan de acción priorizado o incluso ejecutar las correcciones directamente.&lt;/p&gt;
&lt;h2 id=&quot;implementar-abilities-personalizadas-en-tu-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementar-abilities-personalizadas-en-tu-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementar Abilities personalizadas en tu plugin&lt;/h2&gt;
&lt;h3 id=&quot;registro-básico-de-ability&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#registro-básico-de-ability&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Registro básico de Ability&lt;/h3&gt;
&lt;p&gt;Cada ability necesita cuatro componentes: un slug único, metadatos, un esquema de input/output y una función de callback.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;abilities_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_ability&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/verificación-salud-sitio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;       =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Ejecutar verificación de salud del sitio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Ejecuta un análisis completo de salud del sitio WordPress y retorna resultados puntuados&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;maintenance&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;input_schema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;object&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;properties&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;checks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;array&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &apos;enum&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;performance&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;security&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;seo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;accessibility&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Qué verificaciónes de salud ejecutar. Por defecto: todas.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;output_schema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;object&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;properties&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;overall_score&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;minimum&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;maximum&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;checks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;array&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;object&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &apos;properties&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                            &apos;score&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                            &apos;issues&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;array&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;capability&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;rate_limit&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;5/hour&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wppoland_verificación_salud&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;abilities-componibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#abilities-componibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Abilities componibles&lt;/h3&gt;
&lt;p&gt;Las abilities pueden depender de otras abilities. La API soporta un parámetro &lt;code&gt;depends_on&lt;/code&gt; que informa a los agentes de IA sobre abilities prerrequisito:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;register_ability&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/publicar-artículo-optimizado&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Publicar artículo optimizado para SEO&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;depends_on&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland/generar-contenido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland/optimizar-seo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland/generar-imagen-destacada&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // ... resto de la definición&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;middleware-de-abilities&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#middleware-de-abilities&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Middleware de Abilities&lt;/h3&gt;
&lt;p&gt;Puedes añadir middleware a abilities usando filtros de WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ability_pre_invoke&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($input, $ability_slug, $agent_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Registrar todas las invocaciones de abilities&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    do_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_ability_invoked&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $ability_slug, $agent_id, $input);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Lógica de limitación de tasa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_rate_limited&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($agent_id, $ability_slug)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rate_limited&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Demasiadas solicitudes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 429&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $input;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad-para-wordpress-accesible-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad-para-wordpress-accesible-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad para WordPress accesible por IA&lt;/h2&gt;
&lt;h3 id=&quot;autenticación-y-autorización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-y-autorización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación y autorización&lt;/h3&gt;
&lt;p&gt;La Abilities API utiliza OAuth 2.1 con tokens de ámbito. Cada agente de IA recibe un token que específica exactamente qué abilities puede acceder:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;agent_id&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;claude-mcp-agent-001&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;scopes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;abilities:read_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;abilities:create_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;abilities:optimize_seo&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;rate_limits&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;global&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;100/hour&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;per_ability&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;20/hour&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;expires_at&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2026-04-21T00:00:00Z&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;aprobación-humana-human-in-the-loop&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aprobación-humana-human-in-the-loop&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aprobación humana (Human-in-the-Loop)&lt;/h3&gt;
&lt;p&gt;Las abilities destructivas (eliminar contenido, procesar pagos, cambiar configuraciónes del sitio) pueden requerir aprobación humana:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;register_ability&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tienda/procesar-reembolso&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;       =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Procesar reembolso de clientes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;requires_approval&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;approval_timeout&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 1 hora&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;approval_roles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;shop_manager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando un agente de IA invoca esta ability, la solicitud se pone en cola y se envía una notificación a los usuarios autorizados. El agente recibe un estado pendiente y puede verificar de nuevo tras la aprobación.&lt;/p&gt;
&lt;h3 id=&quot;rastro-de-auditoría&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rastro-de-auditoría&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rastro de auditoría&lt;/h3&gt;
&lt;p&gt;Cada invocación de ability se registra con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ID del agente y dirección IP&lt;/li&gt;
&lt;li&gt;Slug de la ability y parámetros de input&lt;/li&gt;
&lt;li&gt;Resultado de la ejecución y duración&lt;/li&gt;
&lt;li&gt;Usuario que autorizó el token del agente&lt;/li&gt;
&lt;li&gt;Marca temporal y detalles del entorno WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sanitización-de-input&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sanitización-de-input&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sanitización de input&lt;/h3&gt;
&lt;p&gt;La Abilities API válida todos los inputs contra el esquema JSON declarado antes de pasarlos al callback. Esto previene ataques de inyección y asegura la integridad de los datos. Adicionalmente, las funciones estándar de sanitización de WordPress (&lt;code&gt;sanitize_text_field()&lt;/code&gt;, &lt;code&gt;wp_kses_post()&lt;/code&gt;, etc.) deben usarse dentro de las funciones de callback.&lt;/p&gt;
&lt;h2 id=&quot;comparación-con-enfoques-existentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-con-enfoques-existentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación con enfoques existentes&lt;/h2&gt;
&lt;h3 id=&quot;rest-api-vs-abilities-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rest-api-vs-abilities-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;REST API vs. Abilities API&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Característica&lt;/th&gt;&lt;th&gt;REST API&lt;/th&gt;&lt;th&gt;Abilities API&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Enfoque&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Recursos de datos (CRUD)&lt;/td&gt;&lt;td&gt;Capacidades e intenciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Descubrimiento&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Esquema vía JSON Schema/OpenAPI&lt;/td&gt;&lt;td&gt;Manifiesto de abilities con descripciones semánticas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legibilidad IA&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Requiere conocimiento preprogramado&lt;/td&gt;&lt;td&gt;Autodescriptivo, descubrible por agentes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Composición&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Encadenamiento manual de endpoints&lt;/td&gt;&lt;td&gt;Dependencias y workflows declarados&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Modelo de auth&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Contraseñas de aplicación, JWT&lt;/td&gt;&lt;td&gt;OAuth 2.1 con ámbito por ability&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Limitación de tasa&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Global o por ruta&lt;/td&gt;&lt;td&gt;Por ability, por agente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Auditoría&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Requiere implementación personalizada&lt;/td&gt;&lt;td&gt;Rastro de auditoría integrado&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;wpgraphql-vs-abilities-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wpgraphql-vs-abilities-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WPGraphQL vs. Abilities API&lt;/h3&gt;
&lt;p&gt;WPGraphQL destaca en consultas flexibles de datos - los clientes solicitan exactamente los datos que necesitan en una única consulta. La Abilities API no es un reemplazo. Las abilities pueden usar GraphQL internamente para obtención de datos mientras exponen una interfaz de nivel superior para agentes de IA.&lt;/p&gt;
&lt;p&gt;Simplificando: GraphQL responde a «¿qué datos tienes?» mientras la Abilities API responde a «¿qué puedes hacer?»&lt;/p&gt;
&lt;h3 id=&quot;cuándo-usar-qué&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-usar-qué&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo usar qué&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;REST API&lt;/strong&gt;: integraciones servidor-a-servidor, aplicaciones móviles, consumo frontend tradicional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WPGraphQL&lt;/strong&gt;: obtención compleja de datos, frontends headless, arquitecturas Jamstack&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Abilities API&lt;/strong&gt;: integración con agentes de IA, workflows automatizados, descubrimiento de capacidades&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;el-futuro-de-los-workflows-wordpress-impulsados-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-de-los-workflows-wordpress-impulsados-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro de los workflows WordPress impulsados por IA&lt;/h2&gt;
&lt;h3 id=&quot;orquestación-multi-agente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#orquestación-multi-agente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Orquestación multi-agente&lt;/h3&gt;
&lt;p&gt;A medida que los sistemas de IA maduran, veremos múltiples agentes especializados colaborando en tareas WordPress. Un agente de contenido se encarga de la escritura, un agente SEO de la optimización, un agente de diseño del layout y las imágenes, y un agente QA de la revisión y pruebas. La Abilities API proporciona la infraestructura compartida que estos agentes usan para coordinarse.&lt;/p&gt;
&lt;h3 id=&quot;implicaciones-para-el-marketplace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implicaciones-para-el-marketplace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implicaciones para el marketplace&lt;/h3&gt;
&lt;p&gt;El ecosistema de plugins WordPress evolucionará para incluir &lt;strong&gt;bundles de abilities&lt;/strong&gt; - plugins que existen principalmente para exponer abilities a agentes de IA. Imagina un plugin que no añade interfaz pero registra 50 abilities SEO que los agentes de IA pueden usar. El valor se desplaza de interfaces orientadas a humanos a capacidades orientadas a máquinas.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-como-backend-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-como-backend-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress como backend de IA&lt;/h3&gt;
&lt;p&gt;Con la Abilities API, WordPress se convierte en más que un sistema de gestión de contenido. Se convierte en un &lt;strong&gt;backend orquestable por IA&lt;/strong&gt; que puede impulsar aplicaciones inteligentes. Un WordPress multisite con WooCommerce, LMS, membresía y plugins de eventos se convierte en una plataforma empresarial completa que los agentes de IA pueden gestionar de extremo a extremo.&lt;/p&gt;
&lt;h3 id=&quot;integración-con-servicios-de-ia-externos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-servicios-de-ia-externos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con servicios de IA externos&lt;/h3&gt;
&lt;p&gt;La Abilities API es bidireccional. WordPress puede no solo exponer abilities a agentes de IA, sino también consumir abilities de servicios de IA externos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// WordPress invocando una ability de IA externa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; invoke_external_ability&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;openai/generate-image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;prompt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Espacio de trabajo profesional con portátil mostrando panel de WordPress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;size&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;1792x1024&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;style&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;natural&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Usar el resultado en una ability de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_thumbnail_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $result[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;empezar-hoy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#empezar-hoy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Empezar hoy&lt;/h2&gt;
&lt;p&gt;La Abilities API completa llega con WordPress 7.x, pero puedes prepararte ahora:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Estructura el código del plugin en torno a capacidades&lt;/strong&gt; - separa lo que tu plugin &lt;em&gt;hace&lt;/em&gt; de cómo &lt;em&gt;presenta&lt;/em&gt; la información&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa JSON Schema para validación de input&lt;/strong&gt; - esto se mapea directamente a esquemás de abilities&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementa verificaciónes de permisos adecuadas&lt;/strong&gt; - la Abilities API se construye sobre el sistema de capabilities existente de WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construye endpoints REST API con documentación clara&lt;/strong&gt; - estos serán la base de tus abilities&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sigue las &lt;a href=&quot;/es/desarrollo-wordpress/&quot;&gt;mejores prácticas de desarrollo WordPress&lt;/a&gt;&lt;/strong&gt; en wppoland.com&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El cambio hacia workflows impulsados por IA no es un futuro lejano - está sucediendo ahora. Cada &lt;a href=&quot;/es/desarrollo-plugins-wordpress/&quot;&gt;plugin WordPress&lt;/a&gt; que construyes hoy debe considerar cómo los agentes de IA podrán interactuar con él mañana. Los sitios que adopten este paradigma temprano tendrán una ventaja competitiva significativa en descubribilidad, eficiencia de automatización y experiencia de usuario.&lt;/p&gt;
&lt;p&gt;Para &lt;a href=&quot;/es/soporte-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; y servicios de desarrollo que incorporan las últimás capacidades de workflow IA, visita &lt;a href=&quot;/es/contacto/&quot;&gt;wppoland.com&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;La especificación de la Abilities API está en desarrollo activo. Los detalles de implementación pueden cambiar antes del lanzamiento final de WordPress 7.x. Este artículo refleja la propuesta actual de marzo de 2026.&lt;/em&gt;&lt;/p&gt;</content:encoded><category>wordpress</category><category>desarrollo</category><category>ia</category><category>automatizacion</category><category domain="tag">wordpress</category><category domain="tag">ai</category><category domain="tag">abilities-api</category><category domain="tag">automation</category><category domain="tag">mcp</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Astro 5 vs Next.js 15: Comparación técnica completa 2026</title><link>https://wppoland.com/es/astro-5-vs-nextjs-15-comparison-2026/</link><guid isPermaLink="true">https://wppoland.com/es/astro-5-vs-nextjs-15-comparison-2026/</guid><description>Astro 5 o Next.js 15: cual framework elegir en 2026? Comparación en profundidad de rendimiento, arquitectura, casos de uso y cuando usar cada uno para proyectos WordPress Headless.</description><pubDate>Sat, 21 Mar 2026 20:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;Los dos frameworks más populares para construir frontends web modernos - incluyendo WordPress Headless - son &lt;strong&gt;Astro&lt;/strong&gt; y &lt;strong&gt;Next.js&lt;/strong&gt;. Ambos son excelentes. Ambos pueden impulsar sitios web de alto rendimiento. Pero resuelven problemas fundamentalmente diferentes, y elegir el incorrecto desperdicia tiempo de desarrollo y compromete el rendimiento.&lt;/p&gt;
&lt;p&gt;Esta no es una comparación de “cual es mejor”. Es una guía de &lt;strong&gt;“cual es el adecuado para tu proyecto”&lt;/strong&gt;, basada en experiencia real construyendo sitios WordPress Headless con ambos frameworks.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;la-diferencia-fundamental&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-diferencia-fundamental&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La diferencia fundamental&lt;/h2&gt;
&lt;h3 id=&quot;astro-contenido-primero-cero-javascript-por-defecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro-contenido-primero-cero-javascript-por-defecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro: Contenido primero, cero JavaScript por defecto&lt;/h3&gt;
&lt;p&gt;Astro fue construido para &lt;strong&gt;sitios web orientados a contenido&lt;/strong&gt;. Su principio central: enviar cero JavaScript al navegador a menos que un componente lo necesite explicitamente. El HTML estatico se genera en tiempo de compilacion, y solo las “islas” interactivas cargan JavaScript del lado del clientes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modelo mental:&lt;/strong&gt; Tu sitio es un documento estatico con widgets interactivos opcionales.&lt;/p&gt;
&lt;h3 id=&quot;nextjs-aplicación-react-full-stack&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nextjs-aplicación-react-full-stack&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Next.js: Aplicación React full-stack&lt;/h3&gt;
&lt;p&gt;Next.js fue construido para &lt;strong&gt;aplicaciones web interactivas&lt;/strong&gt;. Su principio central: React en el servidor y el clientes, con optimización automática. Cada página es un componente React, con multiples estrategias de renderizado (SSG, SSR, ISR, streaming).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modelo mental:&lt;/strong&gt; Tu sitio es una aplicación React que opcionalmente puede ser estatica.&lt;/p&gt;
&lt;h2 id=&quot;comparación-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de rendimiento&lt;/h2&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Astro 5&lt;/th&gt;&lt;th&gt;Next.js 15&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;JavaScript enviado por defecto&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0 KB&lt;/td&gt;&lt;td&gt;85-150 KB (runtime React)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PageSpeed tipico&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;98-100&lt;/td&gt;&lt;td&gt;90-98&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TTFB (páginas estaticas)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;20-50ms&lt;/td&gt;&lt;td&gt;30-80ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LCP&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0.5-1.5s&lt;/td&gt;&lt;td&gt;1-2.5s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;INP&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0-30ms&lt;/td&gt;&lt;td&gt;50-150ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tiempo de build (1000 páginas)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;30-60s&lt;/td&gt;&lt;td&gt;60-120s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tamaño del bundle (página de contenido)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;5-20 KB&lt;/td&gt;&lt;td&gt;85-200 KB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;por-que-astro-es-más-rápido-para-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-astro-es-más-rápido-para-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que Astro es más rápido para contenido&lt;/h3&gt;
&lt;p&gt;El cero-JS por defecto de Astro significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sin descarga de runtime React (ahorra 85KB+ en cada página)&lt;/li&gt;
&lt;li&gt;Sin paso de hidratacion (el navegador no re-ejecuta JavaScript renderizado en servidor)&lt;/li&gt;
&lt;li&gt;Sin overhead de DOM Virtual (el HTML ya esta renderizado, nada que reconciliar)&lt;/li&gt;
&lt;li&gt;Menor peso total de página = TTFB, LCP e INP más rápidos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;por-que-el-rendimiento-de-nextjs-sigue-siendo-excelente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-rendimiento-de-nextjs-sigue-siendo-excelente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el rendimiento de Next.js sigue siendo excelente&lt;/h3&gt;
&lt;p&gt;Next.js 15 con React Server Components (RSC) ha cerrado la brecha significativamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RSC renderiza componentes en el servidor sin enviar su JavaScript al clientes&lt;/li&gt;
&lt;li&gt;Division automática de código carga solo el JavaScript necesario por página&lt;/li&gt;
&lt;li&gt;ISR sirve HTML estatico con regeneracion en segundo plano - sin procesamiento de servidor para la mayoria de solicitudes&lt;/li&gt;
&lt;li&gt;Renderizado en el edge reduce el TTFB para audiencias globales&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;inmersion-profunda-en-la-arquitectura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inmersion-profunda-en-la-arquitectura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inmersion profunda en la arquitectura&lt;/h2&gt;
&lt;h3 id=&quot;astro-islands&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro-islands&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro Islands&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│     HTML estatico (sin JS)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                             │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ┌───────────┐              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  Isla     │ ← Se hidrata│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  React    │   al visible │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  └───────────┘              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                             │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ┌───────────┐              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  Isla     │ ← Se hidrata│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  Vue      │   al click   │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  └───────────┘              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                             │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│     HTML estatico (sin JS)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Propiedades clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada isla es independiente - no comparten estado&lt;/li&gt;
&lt;li&gt;Diferentes frameworks pueden coexistir (header React, slider Vue, formulario Svelte)&lt;/li&gt;
&lt;li&gt;La hidratacion se controla: &lt;code&gt;clientes:load&lt;/code&gt;, &lt;code&gt;clientes:visible&lt;/code&gt;, &lt;code&gt;clientes:idle&lt;/code&gt;, &lt;code&gt;clientes:media&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Las islas se pueden eliminar completamente para páginas sin JS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;nextjs-app-router&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nextjs-app-router&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Next.js App Router&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   Server Component (sin JS) │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                             │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ┌───────────────────────┐  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  Client Component     │  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  (hidratacion React)  │  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  ┌─────────────────┐  │  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  │ Server Component │  │  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  │ (anidado, sin JS)│  │  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  └─────────────────┘  │  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  └───────────────────────┘  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                             │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   Server Component (sin JS) │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Propiedades clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server Components se renderizan en el servidor, sin JavaScript de clientes&lt;/li&gt;
&lt;li&gt;Client Components (&lt;code&gt;&quot;use clientes&quot;&lt;/code&gt;) se hidratan normalmente&lt;/li&gt;
&lt;li&gt;Server y Client Components se pueden anidar en cualquier combinación&lt;/li&gt;
&lt;li&gt;Runtime React compartido, gestión de estado unificada&lt;/li&gt;
&lt;li&gt;Server Actions permiten mutaciones sin endpoints API&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;cuando-elegir-astro-5&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-elegir-astro-5&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando elegir Astro 5&lt;/h2&gt;
&lt;h3 id=&quot;perfecto-para&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#perfecto-para&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Perfecto para:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sitios corporativos y de negocios&lt;/strong&gt; - contenido estatico, carga rápida, minima interactividad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blogs y portales de contenido&lt;/strong&gt; - cientos/miles de páginas, soporte MDX, cero JS por página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitios de documentación&lt;/strong&gt; - búsqueda rápida, navegación limpia, excelente para SEO&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Landing pages&lt;/strong&gt; - maximo PageSpeed para optimización de conversiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitios de portfolio y escaparate&lt;/strong&gt; - contenido visual con interactividad ocasional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitios de marketing&lt;/strong&gt; - páginas de campana, lanzamientos de productos, sitios de eventos&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;el-punto-dulce-de-astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-punto-dulce-de-astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El punto dulce de Astro&lt;/h3&gt;
&lt;p&gt;Si tu sitio es &lt;strong&gt;80%+ contenido estatico&lt;/strong&gt; con elementos interactivos ocasionales (formularios de contacto, galerias de imágenes, búsqueda), Astro es el ganador claro. La ventaja de rendimiento se multiplica en cada página.&lt;/p&gt;
&lt;h3 id=&quot;astro-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro con WordPress&lt;/h3&gt;
&lt;p&gt;Astro se conecta a WordPress via WPGraphQL o REST API. El contenido se obtiene en tiempo de compilacion (SSG) o bajo demanda (SSR). La experiencia editorial permanece sin cambios - los editores usan el panel de administración de WordPress.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Obtener posts de WordPress en tiempo de compilacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://tu-wp.com/graphql&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  body: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ query: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;{ posts { nodes { title slug content } } }&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{data.posts.nodes.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;{post.title}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Fragment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{post.content} /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;))}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;cuando-elegir-nextjs-15&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-elegir-nextjs-15&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando elegir Next.js 15&lt;/h2&gt;
&lt;h3 id=&quot;perfecto-para-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#perfecto-para-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Perfecto para:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tiendas e-commerce&lt;/strong&gt; - carrito dinámico, checkout, inventario, recomendaciónes personalizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicaciones SaaS&lt;/strong&gt; - dashboards de usuario, configuraciónes, datos en tiempo real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plataformás sociales&lt;/strong&gt; - feeds, comentarios, notificaciones, contenido generado por usuarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paneles de administración&lt;/strong&gt; - tablas de datos, operaciones CRUD, formularios complejos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experiencias autenticadas&lt;/strong&gt; - areas de miembros, contenido restringido, perfiles de usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicaciones en tiempo real&lt;/strong&gt; - actualizaciones en vivo, integración WebSocket, edicion colaborativa&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;el-punto-dulce-de-nextjs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-punto-dulce-de-nextjs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El punto dulce de Next.js&lt;/h3&gt;
&lt;p&gt;Si tu sitio requiere &lt;strong&gt;autenticación, personalización, actualizaciones en tiempo real o estado complejo del lado del clientes&lt;/strong&gt;, Next.js es la eleccion correcta. Sus capacidades React full-stack manejan estos requisitos de forma nativa.&lt;/p&gt;
&lt;h3 id=&quot;nextjs-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nextjs-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Next.js con WordPress&lt;/h3&gt;
&lt;p&gt;Next.js se conecta a WordPress de manera similar, pero puede aprovechar ISR para contenido dinámico:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Next.js ISR: estatico con revalidacion automática&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; generateStaticParams&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getWordPressPosts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; posts.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({ slug: post.slug }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; revalidate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Regenerar cada hora&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ISR significa que los precios de productos, estado de inventario y actualizaciones de contenido aparecen automáticamente sin reconstrucciones completas - una ventaja significativa para e-commerce.&lt;/p&gt;
&lt;h2 id=&quot;el-enfoque-hibrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-enfoque-hibrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El enfoque hibrido&lt;/h2&gt;
&lt;p&gt;Algunos proyectos se benefician de usar ambos frameworks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Astro para el sitio de marketing&lt;/strong&gt; (homepage, blog, docs, precios) - maximo rendimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Next.js para la aplicación&lt;/strong&gt; (dashboard, checkout, admin) - maxima interactividad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto es arquitectonicamente limpio porque cada framework sirve su fortaleza. El sitio de marketing enlaza a la aplicación, y pueden compartir tokens de diseño y componentes.&lt;/p&gt;
&lt;h2 id=&quot;comparación-de-experiencia-de-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-experiencia-de-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de experiencia de desarrollo&lt;/h2&gt;




























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Aspecto&lt;/th&gt;&lt;th&gt;Astro 5&lt;/th&gt;&lt;th&gt;Next.js 15&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Curva de aprendizaje&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Baja (HTML-first, cualquier framework)&lt;/td&gt;&lt;td&gt;Media (se requiere React)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sintaxis de componentes&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;.astro&lt;/code&gt; (similar a HTML)&lt;/td&gt;&lt;td&gt;&lt;code&gt;.tsx&lt;/code&gt; (React)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Soporte de frameworks&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;React, Vue, Svelte, Solid, Lit&lt;/td&gt;&lt;td&gt;Solo React&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Soporte completo&lt;/td&gt;&lt;td&gt;Soporte completo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Obtencion de datos&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Top-level await, Astro.glob&lt;/td&gt;&lt;td&gt;fetch, server actions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Enrutamiento basado en archivos&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Soporte MDX&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Nativo&lt;/td&gt;&lt;td&gt;Via paquete&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Velocidad del servidor dev&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Muy rápido (Vite)&lt;/td&gt;&lt;td&gt;Rápido (Turbopack)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tamaño de la comunidad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Creciendo rápido&lt;/td&gt;&lt;td&gt;Muy grande&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ecosistema de plugins&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Mas pequeño pero enfocado&lt;/td&gt;&lt;td&gt;Extenso&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;hosting-y-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hosting-y-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hosting y despliegue&lt;/h2&gt;
&lt;h3 id=&quot;hosting-de-astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hosting-de-astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hosting de Astro&lt;/h3&gt;
&lt;p&gt;Astro genera archivos estaticos que se pueden alojar &lt;strong&gt;en cualquier lugar&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Pages&lt;/strong&gt; - tier gratuito, CDN más rápido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Netlify&lt;/strong&gt; - tier gratuito, funciones serverless&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vercel&lt;/strong&gt; - tier gratuito, funciones edge&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cualquier host estatico&lt;/strong&gt; - GitHub Pages, S3, cualquier servidor web&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El modo SSR requiere un servidor Node.js o adaptador compatible (Cloudflare Workers, Deno, etc.).&lt;/p&gt;
&lt;h3 id=&quot;hosting-de-nextjs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hosting-de-nextjs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hosting de Next.js&lt;/h3&gt;
&lt;p&gt;Next.js funciona mejor en plataformas que soportan su conjunto completo de funciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vercel&lt;/strong&gt; - soporte nativo, configuración cero&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; - via adaptador OpenNext&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto-alojado&lt;/strong&gt; - servidor Node.js, Docker&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exportacion estatica&lt;/strong&gt; - pierde capacidades ISR/SSR&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;comparación-de-costos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-costos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de costos&lt;/h2&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Escenario&lt;/th&gt;&lt;th&gt;Astro&lt;/th&gt;&lt;th&gt;Next.js&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sitio pequeño (100 páginas)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Gratis (hosting estatico)&lt;/td&gt;&lt;td&gt;Gratis (Vercel tier gratuito)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sitio mediano (1000 páginas)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Gratis-$20/mes&lt;/td&gt;&lt;td&gt;$20/mes (Vercel Pro)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sitio grande (10,000+ páginas)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;$0-20/mes&lt;/td&gt;&lt;td&gt;$20-150/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Aplicación dinámica&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;No ideal&lt;/td&gt;&lt;td&gt;$20-150/mes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La salida estatica de Astro es dramaticamente más economica de alojar a escala porque los CDNs sirven archivos estaticos de forma gratuita o casí gratuita.&lt;/p&gt;
&lt;h2 id=&quot;marco-de-decision&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marco-de-decision&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marco de decision&lt;/h2&gt;
&lt;p&gt;Hazte estas preguntas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Es 80%+ de tu sitio contenido estatico?&lt;/strong&gt; → Astro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Necesitas autenticación de usuarios?&lt;/strong&gt; → Next.js&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Es el maximo PageSpeed la prioridad #1?&lt;/strong&gt; → Astro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Necesitas actualizaciones de datos en tiempo real?&lt;/strong&gt; → Next.js&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tu equipo solo conoce React?&lt;/strong&gt; → Next.js&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quieres usar multiples frameworks?&lt;/strong&gt; → Astro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Es esto principalmente e-commerce con checkout?&lt;/strong&gt; → Next.js&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Es esto principalmente un blog o sitio corporativo?&lt;/strong&gt; → Astro&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Tanto Astro 5 como Next.js 15 son excelentes frameworks en 2026. La eleccion no se trata de calidad - se trata de ajuste.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige Astro&lt;/strong&gt; cuando el contenido es rey y cada kilobyte de JavaScript importa. Tus usuarios obtienen páginas más rápidas, tu SEO mejora y tus costos de hosting se mantienen minimos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige Next.js&lt;/strong&gt; cuando tu aplicación necesita funciones dinámicas, autenticación e interactividad en tiempo real. Obtienes un framework full-stack completo con el ecosistema React más grande.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige ambos&lt;/strong&gt; cuando tu proyecto tiene secciones estaticas y dinámicas distintas que se benefician de diferentes enfoques arquitectonicos.&lt;/p&gt;
&lt;p&gt;Para &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;proyectos de migración WordPress&lt;/a&gt;, evaluamos las necesidades de cada clientes individualmente y recomendamos el framework que mejor sirva sus objetivos de negocio. Si buscas un &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;desarrollador Astro con experiencia&lt;/a&gt;, &lt;a href=&quot;/es/contacto/&quot;&gt;contactanos&lt;/a&gt; para una evaluación gratuita.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category>development</category><category>architecture</category><category domain="tag">astro</category><category domain="tag">nextjs</category><category domain="tag">framework-comparison</category><category domain="tag">headless</category><category domain="tag">static-site-generation</category><category domain="tag">react</category><category domain="tag">performance</category><category domain="tag">core-web-vitals</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Schema.org para Búsqueda IA: Como Aparecer en ChatGPT, Perplexity y Google AI Mode</title><link>https://wppoland.com/es/schema-org-ai-search-aeo-geo-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/schema-org-ai-search-aeo-geo-guide-2026/</guid><description>Que tipos de Schema.org importan para los motores de búsqueda IA? Guia práctica de optimización AEO y GEO - haciendo tu contenido descubrible por ChatGPT, Perplexity, Google AI Mode y motores de respuesta.</description><pubDate>Sat, 21 Mar 2026 18:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduccion&quot;&gt;
&lt;p&gt;La búsqueda se esta fragmentando. En 2026, los usuarios no solo buscan en Google - preguntan a ChatGPT, consultan Perplexity, usan Google AI Mode y hablan con asistentes de voz. Cada uno de estos sistemas consume contenido web de forma diferente, pero comparten algo: &lt;strong&gt;los datos estructurados Schema.org les ayudan a entender, confiar y citar tu contenido&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El SEO tradicional te posiciono en los resultados de búsqueda. &lt;strong&gt;AEO (Answer Engine Optimization)&lt;/strong&gt; te posiciona en las respuestas generadas por IA. &lt;strong&gt;GEO (Generative Engine Optimization)&lt;/strong&gt; hace que te citen como fuente en conversaciones con IA. Schema.org es el puente entre tu contenido y estos sistemas de IA.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;el-panorama-de-búsqueda-ia-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-panorama-de-búsqueda-ia-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El panorama de búsqueda IA en 2026&lt;/h2&gt;
&lt;h3 id=&quot;como-los-sistemas-de-ia-consumen-tu-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-los-sistemas-de-ia-consumen-tu-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como los sistemas de IA consumen tu contenido&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Sistema&lt;/th&gt;&lt;th&gt;Como usa Schema.org&lt;/th&gt;&lt;th&gt;Que cita&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Google AI Mode&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;FAQPage, HowTo, Product para respuestas estructuradas&lt;/td&gt;&lt;td&gt;Páginas con señales E-E-A-T claras&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ChatGPT (Browse)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Article, Person, Organization para autoridad&lt;/td&gt;&lt;td&gt;Contenido bien estructurado y factual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Perplexity&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Todos los tipos de schema para verificación de hechos&lt;/td&gt;&lt;td&gt;Contenido con fuentes explicitas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Asistentes de voz&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Speakable, FAQPage para respuestas habladas&lt;/td&gt;&lt;td&gt;Contenido conciso, respuesta primero&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Compras IA&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Product, AggregateRating, Offer&lt;/td&gt;&lt;td&gt;Tiendas con datos de producto completos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;por-que-schemaorg-importa-más-que-nunca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-schemaorg-importa-más-que-nunca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que Schema.org importa más que nunca&lt;/h3&gt;
&lt;p&gt;Sin datos estructurados, los sistemas de IA deben inferir significado del texto crudo - un proceso propenso a errores. Con Schema.org, le dices explicitamente a la IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Que&lt;/strong&gt; trata tu contenido (entidades, temas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quien&lt;/strong&gt; lo creo (credenciales del autor, expertise)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuan confiable&lt;/strong&gt; es (calificaciones, reseñas, citaciones)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Que preguntas&lt;/strong&gt; responde (FAQ, HowTo)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Que partes&lt;/strong&gt; son más importantes (Speakable)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tipos-de-schemaorg-que-importan-para-búsqueda-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-schemaorg-que-importan-para-búsqueda-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de Schema.org que importan para búsqueda IA&lt;/h2&gt;
&lt;h3 id=&quot;1-faqpage---el-schema-1-para-aeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-faqpage---el-schema-1-para-aeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. FAQPage - El Schema #1 para AEO&lt;/h3&gt;
&lt;p&gt;FAQPage mapea directamente preguntas a respuestas - exactamente lo que los motores de búsqueda IA necesitan.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;FAQPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;mainEntity&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Question&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Cuanto cuesta un sitio web WordPress?&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;acceptedAnswer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Answer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Los costes de un sitio WordPress varian según complejidad...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Mejores prácticas para FAQ optimizado para IA:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Responde la pregunta exacta en la primera oracion&lt;/li&gt;
&lt;li&gt;Incluye números, fechas y hechos específicos&lt;/li&gt;
&lt;li&gt;Mantén respuestas bajo 300 palabras&lt;/li&gt;
&lt;li&gt;Cubre la pregunta desde multiples angulos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-speakable---marcado-de-secciones-para-voz-e-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-speakable---marcado-de-secciones-para-voz-e-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Speakable - Marcado de secciones para voz e IA&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WebPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;speakable&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;SpeakableSpecification&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;cssSelector&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;.aeo-quien&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;.aeo-que&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;.aeo-precios&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Marca tus secciones más concisas como speakable. Los sistemas de IA priorizan estas secciones al generar respuestas.&lt;/p&gt;
&lt;h3 id=&quot;3-howto---respuestas-ia-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-howto---respuestas-ia-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. HowTo - Respuestas IA paso a paso&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;HowTo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Como migrar WordPress a Astro&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;step&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;HowToStep&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Auditar sitio actual&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Documenta todo el contenido, URLs y funcionalidad...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-product--aggregaterating---compras-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-product--aggregaterating---compras-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Product + AggregateRating - Compras IA&lt;/h3&gt;
&lt;p&gt;Los asistentes de compra IA usan Product schema para recomendar y comparar productos. Sin Product schema, los asistentes de compra IA no pueden incluir tus productos en respuestas de comparación.&lt;/p&gt;
&lt;h3 id=&quot;5-article--person---e-e-a-t-para-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-article--person---e-e-a-t-para-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Article + Person - E-E-A-T para IA&lt;/h3&gt;
&lt;p&gt;Los sistemas de IA evaluan la credibilidad del autor. Article schema con un Person detallado como autor ayuda significativamente.&lt;/p&gt;
&lt;h3 id=&quot;6-vinculacion-de-entidades---conexiones-del-knowledge-graph&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-vinculacion-de-entidades---conexiones-del-knowledge-graph&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Vinculacion de entidades - Conexiones del Knowledge Graph&lt;/h3&gt;
&lt;p&gt;Las propiedades &lt;code&gt;about&lt;/code&gt; y &lt;code&gt;mentions&lt;/code&gt; con URLs de Wikidata conectan tu contenido al Knowledge Graph, reduciendo ambiguedad y aumentando confianza en las citaciones.&lt;/p&gt;
&lt;h2 id=&quot;implementación-de-schemaorg-para-ia-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-de-schemaorg-para-ia-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación de Schema.org para IA en WordPress&lt;/h2&gt;
&lt;h3 id=&quot;enfoque-1-json-ld-personalizado-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-1-json-ld-personalizado-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque 1: JSON-LD personalizado (Recomendado)&lt;/h3&gt;
&lt;p&gt;Genera schema programaticamente en tu tema o componentes para control total.&lt;/p&gt;
&lt;h3 id=&quot;enfoque-2-yoast-seo--rank-math&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-2-yoast-seo--rank-math&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque 2: Yoast SEO / Rank Math&lt;/h3&gt;
&lt;p&gt;Ambos plugins generan schema básico automáticamente. Sin embargo, la implementación personalizada ofrece más control sobre vinculacion de entidades y propiedades speakable.&lt;/p&gt;
&lt;h3 id=&quot;enfoque-3-componentes-astro--nextjs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-3-componentes-astro--nextjs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque 3: Componentes Astro / Next.js&lt;/h3&gt;
&lt;p&gt;En arquitecturas headless, el schema se genera por componentes frontend.&lt;/p&gt;
&lt;h2 id=&quot;configuración-de-robotstxt-para-crawlers-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-robotstxt-para-crawlers-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de robots.txt para crawlers IA&lt;/h2&gt;
&lt;p&gt;Tu robots.txt debe permitir crawlers IA para acceder a tu contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: GPTBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: PerplexityBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: ClaudeBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;principios-de-escritura-de-contenido-aeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#principios-de-escritura-de-contenido-aeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Principios de escritura de contenido AEO&lt;/h2&gt;
&lt;h3 id=&quot;estructura-respuesta-primero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-respuesta-primero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura respuesta-primero&lt;/h3&gt;
&lt;p&gt;Los sistemas de IA extraen la primera respuesta clara que encuentran. Estructura el contenido con la respuesta en el parrafo inicial.&lt;/p&gt;
&lt;h3 id=&quot;claridad-de-entidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#claridad-de-entidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Claridad de entidades&lt;/h3&gt;
&lt;p&gt;Se explicito sobre que entidades discutes. No asumás contexto.&lt;/p&gt;
&lt;h3 id=&quot;densidad-factual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#densidad-factual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Densidad factual&lt;/h3&gt;
&lt;p&gt;Los sistemas de IA prefieren contenido con hechos verificables: números específicos, fechas, estadísticas.&lt;/p&gt;
&lt;h2 id=&quot;checklist-de-optimización-geo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-de-optimización-geo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist de optimización GEO&lt;/h2&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; FAQPage schema en todas las páginas de servicio y blog clave&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Speakable schema marcando secciones respuesta-primero&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; HowTo schema para contenido de tutoriales y guías&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Product + AggregateRating para páginas de servicio&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Article + Person con credenciales del autor&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Vinculacion de entidades (about/mentions) con URLs de Wikidata&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; robots.txt permite GPTBot, PerplexityBot, ClaudeBot&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Estructura de contenido respuesta-primero&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Referencias explicitas a entidades&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Densidad factual con números y fechas específicos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Señales de frescura del contenido (lastVerified, dateModified)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Schema.org ya no es solo sobre resultados enriquecidos de Google. Es el lenguaje que los motores de búsqueda IA usan para entender, confiar y citar tu contenido. En 2026, los sitios sin datos estructurados completos son invisibles para el canal de descubrimiento de más rápido crecimiento.&lt;/p&gt;
&lt;p&gt;Necesitas ayuda con optimización AEO/GEO? Explora nuestros &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; o &lt;a href=&quot;/es/contacto/&quot;&gt;contactanos&lt;/a&gt; para una evaluación gratuita de visibilidad en IA.&lt;/p&gt;</content:encoded><category>wordpress</category><category>seo</category><category>ai</category><category>technology</category><category domain="tag">schema-org</category><category domain="tag">aeo</category><category domain="tag">geo</category><category domain="tag">structured-data</category><category domain="tag">ai-search</category><category domain="tag">chatgpt</category><category domain="tag">perplexity</category><category domain="tag">google-ai-mode</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Core Web Vitals 2026: La Guia Completa de Optimización INP para WordPress</title><link>https://wppoland.com/es/core-web-vitals-2026-inp-optimization-guide/</link><guid isPermaLink="true">https://wppoland.com/es/core-web-vitals-2026-inp-optimization-guide/</guid><description>Como optimizar Interaction to Next Paint (INP) en sitios WordPress. Correcciones prácticas para la metrica Core Web Vital más nueva que impacta directamente los rankings de Google.</description><pubDate>Sat, 21 Mar 2026 16:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;Los Core Web Vitals de Google ya no son opcionales para SEO. En 2026, estas metricas influyen directamente en los rankings de búsqueda, e &lt;strong&gt;INP (Interaction to Next Paint)&lt;/strong&gt; se ha convertido en la más desafiante para los sitios WordPress. Mientras que LCP y CLS se pueden corregir con optimización de imágenes y reservaciones de layout, INP requiere repensar fundamentalmente como se ejecuta JavaScript en tus páginas.&lt;/p&gt;
&lt;p&gt;INP reemplazo a FID (First Input Delay) como Core Web Vital en marzo de 2024. La diferencia es significativa: FID solo media la primera interacción, mientras que INP mide &lt;strong&gt;cada interacción&lt;/strong&gt; a lo largo de toda la visita a la página. Un sitio podria puntuar bien en FID pero terriblemente en INP, y muchos sitios WordPress lo hacen.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;entendiendo-core-web-vitals-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-core-web-vitals-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo Core Web Vitals en 2026&lt;/h2&gt;
&lt;h3 id=&quot;las-tres-metricas-que-importan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-tres-metricas-que-importan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las Tres Metricas que Importan&lt;/h3&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Que Mide&lt;/th&gt;&lt;th&gt;Bueno&lt;/th&gt;&lt;th&gt;Necesita Mejora&lt;/th&gt;&lt;th&gt;Pobre&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LCP&lt;/strong&gt; (Largest Contentful Paint)&lt;/td&gt;&lt;td&gt;Velocidad de carga&lt;/td&gt;&lt;td&gt;&amp;#x3C; 2.5s&lt;/td&gt;&lt;td&gt;2.5-4s&lt;/td&gt;&lt;td&gt;&gt; 4s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;INP&lt;/strong&gt; (Interaction to Next Paint)&lt;/td&gt;&lt;td&gt;Capacidad de respuesta&lt;/td&gt;&lt;td&gt;&amp;#x3C; 200ms&lt;/td&gt;&lt;td&gt;200-500ms&lt;/td&gt;&lt;td&gt;&gt; 500ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CLS&lt;/strong&gt; (Cumulative Layout Shift)&lt;/td&gt;&lt;td&gt;Estabilidad visual&lt;/td&gt;&lt;td&gt;&amp;#x3C; 0.1&lt;/td&gt;&lt;td&gt;0.1-0.25&lt;/td&gt;&lt;td&gt;&gt; 0.25&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;por-que-inp-es-el-mas-dificil-de-corregir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-inp-es-el-mas-dificil-de-corregir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por Que INP es el Mas Dificil de Corregir&lt;/h3&gt;
&lt;p&gt;LCP se trata principalmente de velocidad del servidor y optimización de imágenes: problemas bien entendidos con soluciones claras. CLS se trata de reservar espacio para contenido dinámico: una disciplina de CSS y HTML. INP se trata de &lt;strong&gt;eficiencia de ejecucion de JavaScript&lt;/strong&gt;: un problema fundamentalmente más dificil porque requiere entender el hilo principal del navegador, la programacion de tareas y el manejo de eventos.&lt;/p&gt;
&lt;p&gt;Los sitios WordPress son particularmente vulnerables a mal INP porque:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sobrecarga de plugins&lt;/strong&gt; — cada plugin puede agregar JavaScript que bloquea el hilo principal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constructores de páginas&lt;/strong&gt; — Elementor, Divi, WPBakery agregan frameworks frontend pesados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scripts de terceros&lt;/strong&gt; — analíticas, anuncios, widgets de chat, embeds sociales compiten por tiempo del hilo principal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencia de jQuery&lt;/strong&gt; — muchos temas y plugins WordPress todavia dependen de jQuery, agregando 85KB+ de JavaScript bloqueante&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin code splitting&lt;/strong&gt; — los temas WordPress tradicionales cargan todo el JavaScript en cada página&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;como-funciona-inp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-inp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como Funciona INP&lt;/h2&gt;
&lt;h3 id=&quot;el-ciclo-de-vida-de-la-interacción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ciclo-de-vida-de-la-interacción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Ciclo de Vida de la Interacción&lt;/h3&gt;
&lt;p&gt;Cuando un usuario hace clic en un boton, toca un enlace o presiona una tecla, el navegador lo procesa en tres fases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Retraso de entrada&lt;/strong&gt; — tiempo entre la interacción fisica y el navegador comenzando a procesar el manejador de eventos (causado por el hilo principal ocupado con otras tareas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiempo de procesamiento&lt;/strong&gt; — tiempo para ejecutar todos los manejadores de eventos para esta interacción&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retraso de presentacion&lt;/strong&gt; — tiempo para renderizar la actualización visual despues de que los manejadores de eventos completen&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;INP = Retraso de entrada + Tiempo de procesamiento + Retraso de presentacion&lt;/p&gt;
&lt;p&gt;La metrica captura la &lt;strong&gt;peor interacción&lt;/strong&gt; (realmente el percentil 98) durante toda la visita a la página. Esto significa que una sola interacción lenta puede hundir tu puntuacion INP, incluso si todas las demás interacciones son rápidas.&lt;/p&gt;
&lt;h3 id=&quot;que-cuenta-como-interacción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-cuenta-como-interacción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que Cuenta como Interacción&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clics&lt;/strong&gt; en botones, enlaces, toggles, menús&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Toques&lt;/strong&gt; en móvil (eventos touch)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pulsaciones de teclas&lt;/strong&gt; en campos de entrada, cajas de búsqueda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NO&lt;/strong&gt; scroll (el scroll se mide por separado)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NO&lt;/strong&gt; hover (el hover solo no activa INP)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;midiendo-inp-en-sitios-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-inp-en-sitios-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo INP en Sitios WordPress&lt;/h2&gt;
&lt;h3 id=&quot;google-search-console-datos-de-campo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-search-console-datos-de-campo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Search Console (Datos de Campo)&lt;/h3&gt;
&lt;p&gt;La fuente de datos más importante. Navega a Core Web Vitals -&gt; Movil/Escritorio. Search Console muestra datos INP de usuarios reales agregados durante 28 dias. Las páginas se agrupan por patron de URL y se califican como Bueno, Necesita Mejora o Pobre.&lt;/p&gt;
&lt;h3 id=&quot;pagespeed-insights-lab--campo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pagespeed-insights-lab--campo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PageSpeed Insights (Lab + Campo)&lt;/h3&gt;
&lt;p&gt;Ingresa cualquier URL y obtiene ambos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Datos de campo&lt;/strong&gt; — mediciones de usuarios reales del Chrome UX Report&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos de laboratorio&lt;/strong&gt; — mediciones simuladas de Lighthouse&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para INP, los datos de campo importan más porque las pruebas de laboratorio pueden no activar las mismás interacciones que los usuarios reales realizan.&lt;/p&gt;
&lt;h3 id=&quot;chrome-devtools-depuracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#chrome-devtools-depuracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Chrome DevTools (Depuracion)&lt;/h3&gt;
&lt;p&gt;Abre DevTools -&gt; panel Rendimiento -&gt; Grabar -&gt; Interactua con la página -&gt; Detener grabacion. Busca:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tareas Largas&lt;/strong&gt; (barras amarillas/rojas) — cualquier tarea mayor a 50ms bloquea el hilo principal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manejadores de eventos&lt;/strong&gt; — cuanto tiempo toma cada clic/toque en procesarse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layout thrashing&lt;/strong&gt; — layouts sincronos forzados durante interacciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;correcciones-inp-específicas-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#correcciones-inp-específicas-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Correcciones INP Específicas de WordPress&lt;/h2&gt;
&lt;h3 id=&quot;1-diferir-javascript-no-crítico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-diferir-javascript-no-crítico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Diferir JavaScript No Crítico&lt;/h3&gt;
&lt;p&gt;La correccion de mayor impacto. La mayoria de los plugins WordPress cargan JavaScript en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;, bloqueando el hilo principal antes de que la página siquiera renderice:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Antes: bloqueante --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;plugin-slider.js&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Despues: diferido --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;plugin-slider.js&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Plugins que más se benefician de diferir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Analiticas&lt;/strong&gt; (GA4, GTM) — agregar &lt;code&gt;defer&lt;/code&gt; o cargar via &lt;code&gt;requestIdleCallback&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Widgets de chat&lt;/strong&gt; (Intercom, Tawk.to) — cargar despues del scroll del usuario o despues de 5 segundos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embeds sociales&lt;/strong&gt; (Facebook, Twitter) — cargar solo cuando sean visibles (Intersection Observer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sliders y carruseles&lt;/strong&gt; — diferir inicializacion hasta que sean visibles&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-eliminar-javascript-de-plugins-no-usados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-eliminar-javascript-de-plugins-no-usados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Eliminar JavaScript de Plugins No Usados&lt;/h3&gt;
&lt;p&gt;Audita que plugins realmente necesitan JavaScript frontend:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Listar todos los scripts encolados en una página&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; eval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;global $wp_scripts; foreach($wp_scripts-&gt;queue as $s) echo $s . &quot;\n&quot;;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infractores comunes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contact Form 7&lt;/strong&gt; carga en cada página, pero los formularios existen en solo una página -&gt; cargar condicionalmente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WooCommerce&lt;/strong&gt; cart fragments AJAX se ejecuta en cada página -&gt; deshabilitar en páginas no-tienda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS/JS de bloques Gutenberg&lt;/strong&gt; carga para todos los bloques, incluso los no usados -&gt; eliminar estilos de bloques no usados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-romper-tareas-largas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-romper-tareas-largas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Romper Tareas Largas&lt;/h3&gt;
&lt;p&gt;Cualquier tarea de JavaScript mayor a 50ms bloquea el hilo principal. Usa &lt;code&gt;scheduler.yield()&lt;/code&gt; (moderno) o &lt;code&gt;setTimeout&lt;/code&gt; (fallback) para romper tareas largas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Romper un bucle largo en trozos más pequenos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; processItems&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; items) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    processItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(item);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Ceder al navegador entre items&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (navigator.scheduling?.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;isInputPending&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;?.()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; scheduler.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;yield&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-usar-event-listeners-pasivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-usar-event-listeners-pasivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Usar Event Listeners Pasivos&lt;/h3&gt;
&lt;p&gt;Los listeners de eventos de scroll y touch bloquean al navegador de hacer scroll suavemente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Antes: bloqueante&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;element.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;touchstart&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, handler);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Despues: pasivo (le dice al navegador que no se prevendran scrolls)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;element.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;touchstart&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, handler, { passive: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;5-optimizar-tamaño-del-dom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-optimizar-tamaño-del-dom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Optimizar Tamaño del DOM&lt;/h3&gt;
&lt;p&gt;Arboles DOM grandes (más de 1,500 elementos) ralentizan cada interacción porque el navegador debe recalcular estilos y layout para más elementos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eliminar divs wrapper innecesarios&lt;/li&gt;
&lt;li&gt;Lazy-load contenido debajo del fold&lt;/li&gt;
&lt;li&gt;Usar virtual scrolling para listas largas&lt;/li&gt;
&lt;li&gt;Simplificar layouts de constructores de páginas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;6-eliminar-jquery-donde-sea-posible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-eliminar-jquery-donde-sea-posible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Eliminar jQuery Donde Sea Posible&lt;/h3&gt;
&lt;p&gt;jQuery agrega 85KB de JavaScript y bloquea el hilo principal durante la inicializacion. Alternativas modernas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery: document.ready&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* ... */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Moderno: DOMContentLoaded&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DOMContentLoaded&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* ... */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery: selector&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.my-class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Moderno: querySelectorAll&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.my-class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;optimización-inp-avanzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-inp-avanzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización INP Avanzada&lt;/h2&gt;
&lt;h3 id=&quot;web-workers-para-computacion-pesada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#web-workers-para-computacion-pesada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Web Workers para Computacion Pesada&lt;/h3&gt;
&lt;p&gt;Mover operaciones intensivas de CPU fuera del hilo principal:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// main.js -- descargar procesamiento al worker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; worker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Worker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;heavy-task.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;worker.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;postMessage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;worker.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;onmessage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; updateUI&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(e.data);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;content-visibility-para-contenido-fuera-de-pantalla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#content-visibility-para-contenido-fuera-de-pantalla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Content Visibility para Contenido Fuera de Pantalla&lt;/h3&gt;
&lt;p&gt;Decirle al navegador que omita el renderizado de contenido aun no visible:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Omitir renderizado para secciones debajo del fold */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.below-fold-section&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  content-visibility&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  contain-intrinsic-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;requestidlecallback-para-trabajo-no-urgente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requestidlecallback-para-trabajo-no-urgente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;requestIdleCallback para Trabajo No Urgente&lt;/h3&gt;
&lt;p&gt;Diferir trabajo no esencial a periodos de inactividad del navegador:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cargar analíticas durante tiempo inactivo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;requestIdleCallback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  loadGoogleAnalytics&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, { timeout: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// fallback: cargar dentro de 3 segundos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;la-ventaja-headless-para-inp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ventaja-headless-para-inp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La Ventaja Headless para INP&lt;/h2&gt;
&lt;h3 id=&quot;astro-inp-esencialmente-cero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro-inp-esencialmente-cero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro: INP Esencialmente Cero&lt;/h3&gt;
&lt;p&gt;Astro envia cero JavaScript por defecto. En páginas sin islas interactivas, INP no aplica porque no hay nada bloqueando el hilo principal. Incluso con islas, solo los componentes interactivos específicos cargan JavaScript: el resto es HTML estatico.&lt;/p&gt;
&lt;h3 id=&quot;nextjs-react-server-components&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nextjs-react-server-components&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Next.js: React Server Components&lt;/h3&gt;
&lt;p&gt;Next.js con React Server Components renderiza UI en el servidor y envia solo el JavaScript del clientes necesario. Combinado con code splitting automático, cada página carga solo el JavaScript que necesita.&lt;/p&gt;
&lt;h3 id=&quot;comparación-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de Rendimiento&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Enfoque&lt;/th&gt;&lt;th&gt;INP Tipico&lt;/th&gt;&lt;th&gt;JavaScript Cargado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;WordPress tradicional + plugins&lt;/td&gt;&lt;td&gt;300-800ms&lt;/td&gt;&lt;td&gt;500KB-2MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WordPress optimizado (scripts diferidos)&lt;/td&gt;&lt;td&gt;150-300ms&lt;/td&gt;&lt;td&gt;200-500KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Next.js (App Router + RSC)&lt;/td&gt;&lt;td&gt;50-150ms&lt;/td&gt;&lt;td&gt;50-200KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Astro (estatico + islas)&lt;/td&gt;&lt;td&gt;0-50ms&lt;/td&gt;&lt;td&gt;0-50KB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;lista-de-verificación-de-optimización-inp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-de-optimización-inp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de Verificación de Optimización INP&lt;/h2&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar Search Console Core Web Vitals para puntuaciones INP actuales&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Identificar páginas con peor INP usando PageSpeed Insights&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Diferir todo JavaScript no crítico (&lt;code&gt;defer&lt;/code&gt; o &lt;code&gt;async&lt;/code&gt;)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Cargar condicionalmente scripts de plugins solo en páginas que los necesiten&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Eliminar o reemplazar código dependiente de jQuery donde sea posible&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Agregar &lt;code&gt;{ passive: true }&lt;/code&gt; a listeners de eventos de scroll/touch&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Romper tareas largas con &lt;code&gt;scheduler.yield()&lt;/code&gt; o &lt;code&gt;setTimeout&lt;/code&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Lazy-load contenido debajo del fold y embeds de terceros&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Reducir tamaño del DOM a menos de 1,500 elementos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Considerar &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Astro o Next.js&lt;/a&gt; para la mejora más dramatica&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Monitorear INP de campo en Search Console durante 28 dias despues de los cambios&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;INP es el Core Web Vital que separa los sitios que se sienten rápidos de los lentos. Mientras que LCP mide la carga y CLS mide la estabilidad, INP mide &lt;strong&gt;como se siente el sitio cuando interactuas con el&lt;/strong&gt;. Para sitios WordPress, el camino hacia un buen INP requiere gestión disciplinada de JavaScript o un cambio fundamental de arquitectura a Headless.&lt;/p&gt;
&lt;p&gt;La inversión se paga directamente en rankings de búsqueda, engagement del usuario y tasas de conversión. Cada milisegundo de mejora de INP hace que tu sitio se sienta más responsivo, y Google recompensa eso con mejor visibilidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda optimizando tus Core Web Vitals?&lt;/strong&gt; Explora nuestros &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;servicios de optimización de velocidad WordPress&lt;/a&gt; o &lt;a href=&quot;/es/contacto/&quot;&gt;contactanos&lt;/a&gt; para una evaluación de rendimiento gratuita.&lt;/p&gt;</content:encoded><category>wordpress</category><category>performance</category><category>seo</category><category>development</category><category domain="tag">core-web-vitals</category><category domain="tag">inp</category><category domain="tag">interaction-to-next-paint</category><category domain="tag">page-speed</category><category domain="tag">wordpress-performance</category><category domain="tag">lcp</category><category domain="tag">cls</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>WooCommerce Headless con Astro: Guia de rendimiento e-commerce 2026</title><link>https://wppoland.com/es/headless-woocommerce-astro-ecommerce-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/headless-woocommerce-astro-ecommerce-guide-2026/</guid><description>Como construir una tienda e-commerce ultra-rápida con WooCommerce Headless y Astro. Inmersion en la arquitectura, comparación de rendimiento y guía de implementación paso a paso.</description><pubDate>Sat, 21 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;Las tiendas WooCommerce tradicionales luchan con el rendimiento. El pesado renderizado PHP, docenas de plugins y consultas a la base de datos en cada carga de página crean una experiencia lenta que perjudica directamente las tasas de conversión. La investigación muestra consistentemente que cada segundo adicional de tiempo de carga reduce la conversión e-commerce en un 7%.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WooCommerce Headless con Astro&lt;/strong&gt; resuelve esto separando lo que el clientes ve (páginas estaticas ultra-rápidas) de lo que el gerente de tienda usa (el panel de administración familiar de WooCommerce). El resultado: PageSpeed 95-100 para páginas de productos, tiempos de carga inferiores a un segundo y una experiencia de compra dramaticamente mejor - sin cambiar la forma en que gestionas productos, pedidos o inventario.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;que-es-woocommerce-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-woocommerce-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es WooCommerce Headless?&lt;/h2&gt;
&lt;p&gt;En una configuración tradicional de WooCommerce, WordPress genera cada página en el servidor cuando un clientes la visita. Esto significa ejecutar PHP, realizar consultas a la base de datos, cargar plugins y construir HTML - para cada vista de página individual. Incluso con cache, esta arquitectura impone limites de rendimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WooCommerce Headless&lt;/strong&gt; cambia esto fundamentalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WooCommerce permanece como el backend&lt;/strong&gt; - la gestión de productos, pedidos, inventario, pagos, envios permanecen en el panel de administración de WooCommerce que conoces&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un frontend moderno reemplaza el tema&lt;/strong&gt; - en lugar de plantillas PHP, Astro genera páginas HTML estaticas ultra-rápidas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Las APIs conectan los dos&lt;/strong&gt; - WPGraphQL o la REST API de WooCommerce entrega datos de productos al frontend Astro&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los gerentes de tienda no ven ninguna diferencia en su flujo de trabajo diario. Los clientes experimentan una tienda dramaticamente más rápida.&lt;/p&gt;
&lt;h2 id=&quot;por-que-astro-para-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-astro-para-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que Astro para WooCommerce?&lt;/h2&gt;
&lt;h3 id=&quot;cero-javascript-por-defecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cero-javascript-por-defecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cero JavaScript por defecto&lt;/h3&gt;
&lt;p&gt;El principio central de Astro es enviar cero JavaScript al navegador a menos que sea explicitamente necesario. Para un catálogo e-commerce, esto es transformador:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas de listado de productos&lt;/strong&gt; - HTML y CSS puros, sin framework JavaScript cargado. Renderizado instantaneo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de detalle de productos&lt;/strong&gt; - contenido estatico con “islas” interactivas solo para el boton Agregar al carrito y la galeria de imágenes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de categoría&lt;/strong&gt; - generadas estaticamente en tiempo de compilacion, servidas desde CDN con cero procesamiento de servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compara esto con un frontend WooCommerce basado en Next.js o React donde todo el runtime de React (100KB+) se carga en cada página, incluso cuando la página es mayormente contenido estatico.&lt;/p&gt;
&lt;h3 id=&quot;arquitectura-islands-para-e-commerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-islands-para-e-commerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura Islands para e-commerce&lt;/h3&gt;
&lt;p&gt;La arquitectura Islands de Astro es perfecta para e-commerce porque la mayor parte de una tienda online es contenido estatico (descripciones de productos, imágenes, especificaciones) con areas interactivas pequeñas (boton de carrito, selector de cantidad, selector de variante).&lt;/p&gt;
&lt;h2 id=&quot;comparación-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de rendimiento&lt;/h2&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;WooCommerce tradicional&lt;/th&gt;&lt;th&gt;WooCommerce Headless + Astro&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TTFB&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;800-3000ms&lt;/td&gt;&lt;td&gt;30-100ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LCP&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3-8s&lt;/td&gt;&lt;td&gt;0.8-2s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PageSpeed (Página de producto)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;30-60&lt;/td&gt;&lt;td&gt;95-100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Peso de página&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2-5MB&lt;/td&gt;&lt;td&gt;150-400KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;JavaScript cargado&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;500KB-2MB&lt;/td&gt;&lt;td&gt;10-50KB (solo islas)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Procesamiento del servidor&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Cada solicitud&lt;/td&gt;&lt;td&gt;Ninguno (archivos estaticos)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Usuarios concurrentes&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Limitado por servidor&lt;/td&gt;&lt;td&gt;Ilimitado (CDN)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;impacto-real-en-la-conversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-real-en-la-conversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto real en la conversión&lt;/h3&gt;
&lt;p&gt;Estas mejoras de rendimiento se traducen directamente en metricas de negocio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Carga de página inferior a 2 segundos&lt;/strong&gt; → 15-25% mayor tasa de conversión&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento móvil&lt;/strong&gt; → 30%+ del tráfico e-commerce es móvil, donde la velocidad importa mas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core Web Vitals (verde)&lt;/strong&gt; → Mejora de clasificación en Google para páginas de productos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduccion de tasa de rebote&lt;/strong&gt; → páginas más rápidas mantienen a los compradores navegando más tiempo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mayor valor promedio de pedido&lt;/strong&gt; → una experiencia más fluida anima a agregar más artículos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;implementación-del-carrito-y-checkout&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-del-carrito-y-checkout&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación del carrito y checkout&lt;/h2&gt;
&lt;h3 id=&quot;carrito-del-lado-del-clientes-con-api-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#carrito-del-lado-del-clientes-con-api-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Carrito del lado del clientes con API WooCommerce&lt;/h3&gt;
&lt;p&gt;El carrito es un componente isla de Astro que usa la Store API de WooCommerce para agregar artículos, actualizar cantidades y gestionar el estado del carrito.&lt;/p&gt;
&lt;h3 id=&quot;estrategias-de-checkout&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-checkout&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de checkout&lt;/h3&gt;
&lt;p&gt;Tres enfoques para el checkout en WooCommerce Headless:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Checkout WooCommerce (Mas simple)&lt;/strong&gt;
Redirige a los clientes a una página de checkout tradicional de WooCommerce para el paso final de compra. Cumplimiento PCI más simple, funciona con todas las pasarelas de pago.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Checkout personalizado via API (Mas control)&lt;/strong&gt;
Construye todo el checkout en Astro usando la REST API de WooCommerce. Control de diseño total pero requiere manejar procesamiento de pagos, validación de direcciones y calculo de impuestos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Hibrido (Recomendado)&lt;/strong&gt;
Páginas de productos estaticas con Astro, carrito como isla del lado del clientes, checkout en WooCommerce. Equilibra rendimiento con simplicidad de cumplimiento.&lt;/p&gt;
&lt;h2 id=&quot;integración-de-pasarelas-de-pago&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-de-pasarelas-de-pago&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración de pasarelas de pago&lt;/h2&gt;
&lt;h3 id=&quot;stripe-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stripe-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Stripe (Recomendado)&lt;/h3&gt;
&lt;p&gt;Stripe funciona perfectamente en modo Headless. El clientes ingresa datos de pago en un componente Stripe Elements (isla Astro), Stripe procesa el pago y devuelve un token, el token se envia a la API de WooCommerce para completar el pedido. Ningun dato de tarjeta de credito toca tu servidor (compatible PCI DSS).&lt;/p&gt;
&lt;h3 id=&quot;paypal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paypal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PayPal&lt;/h3&gt;
&lt;p&gt;El SDK JavaScript de PayPal funciona como un componente isla de Astro. El boton de PayPal se renderiza solo donde se necesita, sin cargar el SDK en cada página.&lt;/p&gt;
&lt;h3 id=&quot;métodos-de-pago-locales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métodos-de-pago-locales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métodos de pago locales&lt;/h3&gt;
&lt;p&gt;BLIK (Polonia), iDEAL (Paises Bajos), MB Way (Portugal), Bizum (Espana) - todos funcionan a través de sus respectivos plugins de pasarela WooCommerce. El procesamiento backend es identico; solo cambia la presentacion frontend.&lt;/p&gt;
&lt;h2 id=&quot;seo-para-woocommerce-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-para-woocommerce-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO para WooCommerce Headless&lt;/h2&gt;
&lt;h3 id=&quot;schemaorg-de-productos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schemaorg-de-productos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema.org de productos&lt;/h3&gt;
&lt;p&gt;Cada página de producto genera datos estructurados apropiados con tipo Product, incluyendo nombre, imagen, descripción, precio, disponibilidad y calificaciones agregadas. Esto habilita resultados enriquecidos de Google Shopping, calificaciones con estrellas en SERP y visualización de precios en resultados de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;navegación-de-breadcrumbs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#navegación-de-breadcrumbs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Navegación de breadcrumbs&lt;/h3&gt;
&lt;p&gt;Los datos estructurados de breadcrumb apropiados ayudan a Google a entender la jerarquía de categorías de productos y muestra breadcrumbs en los resultados de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;optimización-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de imágenes&lt;/h3&gt;
&lt;p&gt;La optimización de imágenes integrada de Astro automáticamente convierte imágenes de productos a AVIF con fallback WebP, genera srcsets responsivos para todos los tamaños de pantalla, implementa carga lazy para imágenes debajo del fold y sirve imágenes desde CDN con headers de cache inmutables.&lt;/p&gt;
&lt;h2 id=&quot;cuando-no-ir-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-no-ir-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando NO ir Headless&lt;/h2&gt;
&lt;p&gt;WooCommerce Headless no siempre es la eleccion correcta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tiendas pequeñas con &amp;#x3C;50 productos&lt;/strong&gt; - la complejidad puede no justificar las ganancias de rendimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiendas muy dependientes de plugins frontend&lt;/strong&gt; - si dependes de constructores visuales, personalizadores de productos o plugins frontend complejos que no tienen equivalentes API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presupuesto de desarrollo limitado&lt;/strong&gt; - headless requiere más inversión de desarrollo inicial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambios de diseño frecuentes por no-desarrolladores&lt;/strong&gt; - los temas WooCommerce tradicionales son más fáciles de modificar para usuarios no técnicos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para estos casos, optimizar la instalación WooCommerce existente (cache, CDN, optimización de imágenes, limpieza de plugins) puede ser más rentable.&lt;/p&gt;
&lt;h2 id=&quot;ruta-de-migración-de-woocommerce-tradicional-a-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ruta-de-migración-de-woocommerce-tradicional-a-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ruta de migración: De WooCommerce tradicional a Headless&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-preparacion-de-api-semanas-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-preparacion-de-api-semanas-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Preparacion de API (Semanas 1-2)&lt;/h3&gt;
&lt;p&gt;Instala WPGraphQL y WooGraphQL en tu sitio WooCommerce existente. Esto no cambia nada para los clientes - solo agrega una API GraphQL junto al sitio existente.&lt;/p&gt;
&lt;h3 id=&quot;fase-2-desarrollo-del-frontend-astro-semanas-3-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-desarrollo-del-frontend-astro-semanas-3-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Desarrollo del frontend Astro (Semanas 3-6)&lt;/h3&gt;
&lt;p&gt;Construye el frontend Astro en paralelo con la tienda en vivo. Páginas de productos, páginas de categoría, búsqueda y funcionalidad de carrito. Prueba exhaustivamente con datos de productos reales.&lt;/p&gt;
&lt;h3 id=&quot;fase-3-integración-de-checkout-semanas-5-7&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-integración-de-checkout-semanas-5-7&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Integración de checkout (Semanas 5-7)&lt;/h3&gt;
&lt;p&gt;Implementa el flujo de checkout. Prueba cada pasarela de pago, método de envio y configuración de impuestos. Verifica el procesamiento de pedidos de extremo a extremo.&lt;/p&gt;
&lt;h3 id=&quot;fase-4-migración-seo-semana-7&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-migración-seo-semana-7&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Migración SEO (Semana 7)&lt;/h3&gt;
&lt;p&gt;Mapea todas las URLs, implementa redirecciones 301, transfiere datos estructurados, verifica sitemaps. Prueba con la herramienta de Inspeccion de URL de Google.&lt;/p&gt;
&lt;h3 id=&quot;fase-5-lanzamiento-y-monitoreo-semana-8&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-5-lanzamiento-y-monitoreo-semana-8&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 5: Lanzamiento y monitoreo (Semana 8)&lt;/h3&gt;
&lt;p&gt;Despliegue blue-green. Monitorea PageSpeed, tasa de conversión y Search Console diariamente durante 30 dias.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;WooCommerce Headless con Astro representa el futuro del e-commerce de alto rendimiento. Al separar el pesado backend de un frontend estatico ligero, obtienes lo mejor de ambos mundos: la experiencia de gestión familiar de WooCommerce con el rendimiento de un sitio estatico moderno.&lt;/p&gt;
&lt;p&gt;El resultado: páginas más rápidas, mayor conversión, mejores clasificaciónes SEO y clientes más satisfechos. Para tiendas donde el rendimiento impacta directamente los ingresos, esta arquitectura se paga sola rápidamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para acelerar tu tienda?&lt;/strong&gt; Explora nuestros &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;servicios de desarrollo WooCommerce&lt;/a&gt; o &lt;a href=&quot;/es/contacto/&quot;&gt;contactanos&lt;/a&gt; para una evaluación gratuita de rendimiento. Para la construccion del frontend con Astro, nuestro equipo de &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;desarrolladores Astro&lt;/a&gt; se encarga de toda la implementación técnica.&lt;/p&gt;</content:encoded><category>wordpress</category><category>woocommerce</category><category>technology</category><category>e-commerce</category><category>development</category><category domain="tag">headless-woocommerce</category><category domain="tag">astro</category><category domain="tag">e-commerce</category><category domain="tag">woocommerce-performance</category><category domain="tag">headless-cms</category><category domain="tag">core-web-vitals</category><category domain="tag">graphql</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>WordPress Playground MCP: Como los agentes IA ahora gestionan sitios WordPress</title><link>https://wppoland.com/es/wordpress-playground-mcp-ai-agents-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-playground-mcp-ai-agents-2026/</guid><description>WordPress Playground ahora soporta MCP (Model Context Protocol), permitiendo a agentes IA como Claude y Gemini instalar plugins, ejecutar PHP y gestionar WordPress directamente en el navegador. Que significa esto para desarrolladores y agencias.</description><pubDate>Sat, 21 Mar 2026 12:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;En marzo de 2026, WordPress Playground gano soporte para &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;, el estándar abierto que permite a los agentes IA interactuar con aplicaciones. Esto significa que asistentes IA como Claude, Gemini y bots personalizados ahora pueden instalar plugins, crear contenido, ejecutar PHP y gestionar sitios WordPress directamente a través del entorno Playground basado en navegador.&lt;/p&gt;
&lt;p&gt;Esto no es un futuro teorico. Funciona hoy. Y cambia como los desarrolladores, agencias y equipos de contenido pueden trabajar con WordPress. La integración MCP representa un cambio fundamental en la relación entre la inteligencia artificial y el sistema de gestión de contenido más popular del mundo.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;que-es-mcp-y-por-que-importa-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-mcp-y-por-que-importa-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es MCP y por que importa para WordPress?&lt;/h2&gt;
&lt;h3 id=&quot;el-model-context-protocol-explicado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-model-context-protocol-explicado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Model Context Protocol explicado&lt;/h3&gt;
&lt;p&gt;MCP (Model Context Protocol) es un estándar abierto desarrollado por Anthropic que define como los agentes IA descubren e interactuan con herramientas externas. Piensa en el como un adaptador universal entre modelos de IA y las aplicaciones que necesitan controlar.&lt;/p&gt;
&lt;p&gt;Sin MCP, integrar un agente IA con WordPress requiere código personalizado: llamadas a API, manejo de autenticación, gestión de errores y parseo de respuestas para cada operación individual. Con MCP, WordPress expone sus capacidades como un conjunto estructurado de “herramientas” que cualquier agente IA compatible puede descubrir y usar inmediatamente.&lt;/p&gt;
&lt;p&gt;Esta estandarizacion es revolucionaria porque elimina la necesidad de construir integraciones personalizadas para cada combinación de agente IA y aplicación WordPress. Un solo protocolo sirve para todos los agentes compatibles, reduciendo dramaticamente el costo de implementación.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona-wordpress-playground-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-wordpress-playground-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona WordPress Playground MCP&lt;/h3&gt;
&lt;p&gt;WordPress Playground ejecuta una instalación completa de WordPress en el navegador usando &lt;strong&gt;WebAssembly (WASM)&lt;/strong&gt;. Sin servidor, sin Docker, sin instalación local, solo un sitio WordPress completamente funcional en una pestana del navegador. El adaptador MCP agrega una capa de protocolo que expone las capacidades de Playground a los agentes IA.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas MCP disponibles:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wp_cli&lt;/code&gt; - ejecutar cualquier comando WP-CLI&lt;/li&gt;
&lt;li&gt;&lt;code&gt;php_eval&lt;/code&gt; - ejecutar código PHP arbitrario en el contexto WordPress&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin_install&lt;/code&gt; - instalar y activar plugins por slug&lt;/li&gt;
&lt;li&gt;&lt;code&gt;post_create&lt;/code&gt; - crear publicaciónes con título, contenido, categorías, etiquetas&lt;/li&gt;
&lt;li&gt;&lt;code&gt;option_update&lt;/code&gt; - modificar ajustes de WordPress&lt;/li&gt;
&lt;li&gt;&lt;code&gt;theme_switch&lt;/code&gt; - cambiar tema activo&lt;/li&gt;
&lt;li&gt;&lt;code&gt;file_write&lt;/code&gt; - crear o modificar archivos en la instalación WordPress&lt;/li&gt;
&lt;li&gt;&lt;code&gt;site_export&lt;/code&gt; - exportar el sitio completo como blueprint de Playground&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada herramienta tiene un schema definido que describe sus entradas, salidas y capacidades. El agente IA lee este schema y sabe exactamente como usar cada herramienta sin necesidad de documentación adicional.&lt;/p&gt;
&lt;h3 id=&quot;la-ventaja-del-navegador-primero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ventaja-del-navegador-primero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La ventaja del navegador primero&lt;/h3&gt;
&lt;p&gt;Porque Playground se ejecuta en el navegador via WASM, las interacciones MCP son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instantaneas&lt;/strong&gt; - sin aprovisionamiento de servidor, sin tiempo de arranque, WordPress esta listo en segundos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aisladas&lt;/strong&gt; - los cambios afectan solo la instancia en el navegador, nunca un sitio real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gratuitas&lt;/strong&gt; - sin costos de hosting, sin recursos de nube consumidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portables&lt;/strong&gt; - exporta como blueprint y reproduce en cualquier instancia de Playground&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privadas&lt;/strong&gt; - todo se ejecuta localmente, ningun dato sale del navegador&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;casos-de-uso-practicos-para-wordpress-playground-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-practicos-para-wordpress-playground-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso practicos para WordPress Playground MCP&lt;/h2&gt;
&lt;h3 id=&quot;1-pruebas-automatizadas-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-pruebas-automatizadas-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Pruebas automatizadas de plugins&lt;/h3&gt;
&lt;p&gt;Antes de desplegar un plugin a producción, los agentes IA pueden lanzar una instancia fresca de Playground, instalar el plugin via MCP, ejecutar verificaciónes automatizadas (errores de activacion, deteccion de conflictos, impacto en rendimiento), probar con diferentes versiones de PHP y configuraciónes de WordPress, y generar un reporte de compatibilidad completo.&lt;/p&gt;
&lt;p&gt;Esto reemplaza horas de QA manual con un proceso automatizado y repetible que puede ejecutarse en cada actualización del plugin.&lt;/p&gt;
&lt;h3 id=&quot;2-generación-y-publicación-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-generación-y-publicación-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Generación y publicación de contenido&lt;/h3&gt;
&lt;p&gt;Los agentes IA conectados via MCP pueden crear publicaciónes de blog con formato adecuado, categorías e imágenes destacadas. Pueden generar descripciones de productos para tiendas WooCommerce, construir estructuras de páginas completas con bloques Gutenberg, traducir contenido a multiples idiomas y programar publicaciónes para horarios optimos.&lt;/p&gt;
&lt;p&gt;La diferencia clave con las herramientas de escritura IA existentes: los agentes MCP interactuan directamente con WordPress, no a través de copiar-pegar. El contenido va de IA a publicación publicada en un solo paso.&lt;/p&gt;
&lt;h3 id=&quot;3-configuración-y-setup-de-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-configuración-y-setup-de-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Configuración y setup de sitios&lt;/h3&gt;
&lt;p&gt;Las agencias que configuran nuevos sitios para clientes pueden usar MCP para instalar y configurar un stack predefinido de plugins, configurar opciones de tema y personalizador, crear menús de navegación y areas de widgets, configurar ajustes SEO, formularios de contacto e integraciones, y aplicar medidas de hardening de seguridad.&lt;/p&gt;
&lt;p&gt;Un setup completo de sitio que toma 2-3 horas manualmente se convierte en un proceso de 5 minutos asistido por IA. Esto permite a las agencias escalar significativamente su capacidad de entrega.&lt;/p&gt;
&lt;h3 id=&quot;4-prototipado-de-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-prototipado-de-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Prototipado de desarrollo&lt;/h3&gt;
&lt;p&gt;Los desarrolladores pueden describir lo que quieren construir, y el agente IA crea la estructura del plugin personalizado, tipos de publicación personalizados con campos ACF, bloques Gutenberg personalizados, endpoints de REST API, datos de prueba para desarrollo y plantillas de tema.&lt;/p&gt;
&lt;h3 id=&quot;5-educación-y-formacion-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-educación-y-formacion-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Educación y formacion WordPress&lt;/h3&gt;
&lt;p&gt;Para aprender WordPress, Playground MCP habilita tutoriales interactivos donde una IA explica mientras hace cambios en tiempo real, el enfoque “pide a la IA que lo haga” para aprender por ejemplo, experimentacion segura donde puedes romper cosas, reiniciar y volver a intentar, y rutas de aprendizaje personalizadas basadas en las preguntas del aprendiz.&lt;/p&gt;
&lt;h2 id=&quot;wordpress-70-y-la-integración-ia-más-amplia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-70-y-la-integración-ia-más-amplia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress 7.0 y la integración IA más amplia&lt;/h2&gt;
&lt;h3 id=&quot;el-adaptador-mcp-en-el-nucleo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-adaptador-mcp-en-el-nucleo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El adaptador MCP en el nucleo&lt;/h3&gt;
&lt;p&gt;WordPress 7.0 introduce integración IA a nivel del nucleo con tres componentes principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adaptador MCP&lt;/strong&gt; - puede instalarse como plugin o paquete incluido, exponiendo capacidades de WordPress a agentes IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API de Habilidades&lt;/strong&gt; - un registro donde los plugins pueden declarar lo que pueden hacer, haciendo sus funcionalidades descubribles por agentes IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“Interruptor” de IA&lt;/strong&gt; - un toggle global para desactivar todas las funciones IA para sitios que no las quieran&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto es diferente del Playground MCP. Playground MCP es para desarrollo y pruebas en el navegador. El adaptador MCP del nucleo es para sitios de producción que quieren ser accesibles por IA.&lt;/p&gt;
&lt;h3 id=&quot;que-significa-esto-para-el-ecosistema-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-esto-para-el-ecosistema-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa esto para el ecosistema WordPress&lt;/h3&gt;
&lt;p&gt;El equipo de IA de WordPress esta posicionando a WordPress como el primer CMS importante con soporte nativo para agentes IA. Para &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores WordPress&lt;/a&gt; y agencias, esto crea nuevas oportunidades de servicio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consultoria de flujos de trabajo IA&lt;/strong&gt; - ayudar a clientes a configurar flujos de trabajo de contenido asistido por IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrollo de herramientas MCP personalizadas&lt;/strong&gt; - construir herramientas especializadas que los agentes IA puedan usar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura de sitios lista para IA&lt;/strong&gt; - asegurar que los sitios esten estructurados para interacción con agentes IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditoria de seguridad&lt;/strong&gt; - revisar configuraciónes MCP para seguridad en producción&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad&lt;/h2&gt;
&lt;h3 id=&quot;playground-mcp-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#playground-mcp-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Playground MCP (desarrollo)&lt;/h3&gt;
&lt;p&gt;Playground MCP es inherentemente seguro porque todo se ejecuta en el sandbox del navegador, no se afectan datos ni sitios reales, las sesiones son efimeras y no hay acceso de red a sistemas de producción.&lt;/p&gt;
&lt;h3 id=&quot;mcp-de-producción-wordpress-70&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mcp-de-producción-wordpress-70&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;MCP de producción (WordPress 7.0)&lt;/h3&gt;
&lt;p&gt;El MCP de producción requiere planificación de seguridad cuidadosa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autenticación&lt;/strong&gt; - solo agentes autorizados deben acceder a endpoints MCP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitacion de alcance&lt;/strong&gt; - restringir que herramientas estan disponibles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitacion de tasa&lt;/strong&gt; - prevenir que agentes IA sobrecarguen el servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registro de auditoria&lt;/strong&gt; - rastrear cada accion realizada por agentes IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lista blanca de IPs&lt;/strong&gt; - restringir acceso MCP a IPs conocidas de agentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Politicas CORS&lt;/strong&gt; - prevenir acceso MCP cross-origin no autorizado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nunca expongas un endpoint MCP de capacidad completa a internet público sin estas salvaguardas.&lt;/p&gt;
&lt;h2 id=&quot;primeros-pasos-con-wordpress-playground-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#primeros-pasos-con-wordpress-playground-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Primeros pasos con WordPress Playground MCP&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-probar-playground&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-probar-playground&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Probar Playground&lt;/h3&gt;
&lt;p&gt;Visita &lt;a href=&quot;https://playground.wordpress.net&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;playground.wordpress.net&lt;/a&gt; y lanza una instancia WordPress. Sin registro, sin instalación - inicia en segundos.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-explorar-capacidades-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-explorar-capacidades-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Explorar capacidades MCP&lt;/h3&gt;
&lt;p&gt;La documentación de Playground describe las herramientas MCP disponibles y sus schemas. Cada herramienta tiene entradas, salidas y manejo de errores definidos.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-conectar-un-agente-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-conectar-un-agente-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Conectar un agente IA&lt;/h3&gt;
&lt;p&gt;Si usas Claude Code, puedes agregar Playground como servidor MCP. Otros agentes IA con soporte de clientes MCP pueden conectarse de manera similar.&lt;/p&gt;
&lt;h3 id=&quot;paso-4-comenzar-a-automatizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-comenzar-a-automatizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Comenzar a automatizar&lt;/h3&gt;
&lt;p&gt;Empieza con tareas simples: instalar un plugin, crear una publicación, cambiar un ajuste. A medida que ganes confianza, construye flujos de trabajo más complejos: setup completo de sitios, migración de contenido, personalización de temas.&lt;/p&gt;
&lt;h2 id=&quot;profundizar-arquitectura-mcp-y-limites-de-confianza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#profundizar-arquitectura-mcp-y-limites-de-confianza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Profundizar: arquitectura MCP y limites de confianza&lt;/h2&gt;
&lt;p&gt;MCP separa tres roles: el &lt;strong&gt;host&lt;/strong&gt; (tu clientes de IA o IDE), el &lt;strong&gt;servidor MCP&lt;/strong&gt; (el adaptador que expone capacidades de WordPress) y las &lt;strong&gt;herramientas&lt;/strong&gt; (operaciones como &lt;code&gt;plugin_install&lt;/code&gt; o &lt;code&gt;post_create&lt;/code&gt;). El host negocia capacidades, el servidor válida peticiones contra schemás y solo entonces ejecuta la herramienta. Esa separacion hace la integración predecible para humanos y revisiones automáticas.&lt;/p&gt;
&lt;p&gt;En WordPress Playground la cadena permanece &lt;strong&gt;local por defecto&lt;/strong&gt;: nada sale de tu equipo salvo que exportes un blueprint o conectes un modelo remoto. El limite de confianza esta entre instrucciones en lenguaje natural y llamadas estructuradas que mutan el estado de WordPress. Trata cada llamada como accion privilegiada, incluso en Playground, porque los habitos se trasladan cuando conectes MCP en producción.&lt;/p&gt;
&lt;h2 id=&quot;mcp-frente-a-rest-api-frente-a-wp-cli-para-automatizacion-con-agentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mcp-frente-a-rest-api-frente-a-wp-cli-para-automatizacion-con-agentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;MCP frente a REST API frente a WP-CLI para automatizacion con agentes&lt;/h2&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Enfoque&lt;/th&gt;&lt;th&gt;Fortalezas&lt;/th&gt;&lt;th&gt;Ideal para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;MCP&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Herramientas schema-first, capacidades descubribles, uniforme entre clientes de IA&lt;/td&gt;&lt;td&gt;Agentes que orquestan muchas acciones de administración con poco código puente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REST API&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;HTTP estable, patrones de autenticación maduros&lt;/td&gt;&lt;td&gt;Front headless, apps móviles, entrega desacoplada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;WP-CLI&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Automatizacion probada, scripting, acceso servidor&lt;/td&gt;&lt;td&gt;Migraciones, buscar-reemplazar, multisitio, copias de seguridad&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Los agentes suelen combinar MCP con REST o WP-CLI en producción: MCP para descubrimiento y orquestacion, REST para entrega a frontales desacoplados, WP-CLI para tareas pesadas de mantenimiento que no deben exponerse al navegador. Documenta que superficie posee cada clase de riesgo para que las revisiones de seguridad sean rápidas.&lt;/p&gt;
&lt;h2 id=&quot;guia-para-agencias-puntos-de-control-antes-de-mcp-en-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-para-agencias-puntos-de-control-antes-de-mcp-en-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia para agencias: puntos de control antes de MCP en producción&lt;/h2&gt;
&lt;p&gt;Antes de exponer MCP más alla de un sandbox, los equipos en wppoland.com recomiendan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Matriz de alcance&lt;/strong&gt; - etiqueta herramientas como solo lectura, editoriales o privilegiadas (sistema de archivos, usuarios, opciones).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Higiene de credenciales&lt;/strong&gt; - rota tokens MCP como claves SSH; prefiere secretos de corta duracion y credenciales por entorno.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registro estructurado&lt;/strong&gt; - registra actor, nombre de herramienta, huella de argumentos, latencia y resultado de cada llamada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ensayo en Playground&lt;/strong&gt; - reproduce el mismo flujo en Playground primero; exporta un blueprint para que QA pueda repetirlo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validación de seguridad&lt;/strong&gt; - especialmente con WooCommerce, membresias o datos personales.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;blueprints-ci-y-entregas-a-preproducción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#blueprints-ci-y-entregas-a-preproducción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Blueprints, CI y entregas a preproducción&lt;/h2&gt;
&lt;p&gt;Un &lt;strong&gt;blueprint&lt;/strong&gt; de Playground es más que una demo. Los equipos pueden cargarlo en CI para probar actualizaciones sobre una pila conocida, importarlo en staging para revision humana o adjuntarlo a un ticket para que el equipo de proyecto vea exactamente que configuro el agente. Convierte “la IA hizo algo en una pestana” en un &lt;strong&gt;paquete repetible y revisable&lt;/strong&gt; alineado con como las agencias WordPress profesionales ya entregan trabajo.&lt;/p&gt;
&lt;h2 id=&quot;controles-de-calidad-y-resolución-de-problemas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#controles-de-calidad-y-resolución-de-problemas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Controles de calidad y resolución de problemas&lt;/h2&gt;
&lt;p&gt;Si los agentes se comportan mal, verifica: (1) que los schemás coincidan con las versiones de WordPress y PHP en tu Playground, (2) conflictos de plugins aislados con una pila minima, (3) que los limites de tasa no truncan flujos multipaso y (4) que capas de autenticación pensadas para REST o cookies no se mezclen incorrectamente con el tráfico MCP.&lt;/p&gt;
&lt;p&gt;Mide resultados con la misma barra que ya usas: Core Web Vitals tras cambios de plantilla, escaneos de enlaces rotos en contenido nuevo y confirmacion de que los editores humanos conservan acceso predecible al administrador. Si un agente pública contenido, ejecuta tu lista editorial habitual: MCP acelera la ejecucion, no sustituye la gobernanza.&lt;/p&gt;
&lt;h2 id=&quot;el-futuro-de-ia--wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-de-ia--wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro de IA + WordPress&lt;/h2&gt;
&lt;p&gt;WordPress Playground MCP es el comienzo, no el final. La trayectoria es clara:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2026 Q2&lt;/strong&gt;: WordPress 7.0 se lanza con adaptador MCP del nucleo y API de Habilidades&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026 Q3&lt;/strong&gt;: El ecosistema de plugins comienza a registrar habilidades, haciendo miles de plugins accesibles por IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026 Q4&lt;/strong&gt;: Las agencias ofrecen gestión WordPress asistida por IA como servicio estándar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2027&lt;/strong&gt;: Los agentes IA se convierten en parte normal del flujo de trabajo WordPress, como WP-CLI hoy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para desarrolladores y agencias, el mensaje es claro: aprende MCP ahora, construye flujos de trabajo temprano y posicionate como especialista en IA-WordPress antes de que el mercado se sature.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio IA WordPress&lt;/a&gt; para integrar agentes IA en tu estrategia comercial.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;WordPress Playground MCP representa un cambio fundamental en como interactuamos con WordPress. En lugar de hacer clic a través de paneles de admin, describimos lo que queremos y dejamos que los agentes IA lo ejecuten. En lugar de probar plugins manualmente, automatizamos todo el proceso de QA. En lugar de pasar horas en el setup de sitios, ejecutamos un blueprint.&lt;/p&gt;
&lt;p&gt;La tecnología es real, funciona hoy, y solo va a volverse más poderosa. Ya seas desarrollador, agencia o propietario de sitio, ahora es el momento de explorar lo que los agentes IA pueden hacer por tu flujo de trabajo WordPress.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category>ai</category><category>development</category><category domain="tag">wordpress-playground</category><category domain="tag">mcp</category><category domain="tag">ai-agents</category><category domain="tag">model-context-protocol</category><category domain="tag">claude</category><category domain="tag">wordpress-7-0</category><category domain="tag">automation</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Migración de Sitio Web a Next.js y Astro: Guia Completa 2026</title><link>https://wppoland.com/es/website-migration-nextjs-astro-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/website-migration-nextjs-astro-guide-2026/</guid><description>Como migrar tu sitio web a Next.js o Astro? Guia completa de migración desde WordPress, Joomla, Drupal y frameworks legacy. PageSpeed 95-100, preservacion SEO, cero tiempo de inactividad.</description><pubDate>Sat, 21 Mar 2026 08:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduccion&quot;&gt;
&lt;p&gt;En 2026, cada vez más empresas en todo el mundo estan migrando sus sitios web de plataformas tradicionales a frameworks modernos - &lt;strong&gt;Next.js&lt;/strong&gt; y &lt;strong&gt;Astro&lt;/strong&gt;. La razon es directa: la velocidad del sitio se traduce directamente en conversión, posicionamiento en Google y experiencia de usuario.&lt;/p&gt;
&lt;p&gt;La propia investigación de Google confirma que cada segundo de retraso más alla de 2 segundos aumenta la tasa de rebote en más del 40%. Los sitios construidos con Astro o Next.js logran consistentemente &lt;strong&gt;PageSpeed 95-100&lt;/strong&gt;, mientras que WordPress tradicional con plugins tipicamente puntua 40-70.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;por-que-migrar-tu-sitio-web-a-nextjs-o-astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-migrar-tu-sitio-web-a-nextjs-o-astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que migrar tu sitio web a Next.js o Astro?&lt;/h2&gt;
&lt;h3 id=&quot;rendimiento---números-reales-tras-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento---números-reales-tras-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento - Números reales tras la migración&lt;/h3&gt;
&lt;p&gt;Las empresas que migraron de WordPress monolitico a arquitectura Headless reportan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;80-90% reduccion de TTFB&lt;/strong&gt; - las páginas llegan a los usuarios dramaticamente más rápido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PageSpeed Insights 95-100&lt;/strong&gt; consistentemente, no como excepcion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LCP bajo 2.5 segundos&lt;/strong&gt; - cumpliendo requisitos de Google Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INP bajo 200ms&lt;/strong&gt; - respuesta instantanea a interacciones del usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLS cercano a cero&lt;/strong&gt; - sin cambios de diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;seguridad-del-sitio-tras-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-del-sitio-tras-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad del sitio tras la migración&lt;/h3&gt;
&lt;p&gt;WordPress tradicional con docenas de plugins es una puerta abierta para atacantes. La arquitectura Headless cambia fundamentalmente el modelo de seguridad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frontend estatico&lt;/strong&gt; - los usuarios visitan archivos HTML pre-construidos, no código PHP en vivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin riesgo de SQL Injection&lt;/strong&gt; - la base de datos no es accesible desde el frontend público&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminacion de vulnerabilidades de plugins&lt;/strong&gt; - sin página de login WordPress, sin plugins frontend&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;costes-de-hosting-tras-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-de-hosting-tras-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes de hosting tras la migración&lt;/h3&gt;
&lt;p&gt;El hosting de archivos estaticos en plataformas como Vercel o Netlify es dramaticamente más barato:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hosting WordPress tradicional&lt;/strong&gt;: $30-100/mes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting estatico tras migración&lt;/strong&gt;: $0-20/mes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;astro-o-nextjs---cual-elegir-para-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro-o-nextjs---cual-elegir-para-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro o Next.js - Cual elegir para la migración?&lt;/h2&gt;
&lt;h3 id=&quot;cuando-elegir-astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-elegir-astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando elegir Astro&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Astro&lt;/strong&gt; es un framework con filosofia “content-first”. Por defecto envia &lt;strong&gt;cero kilobytes de JavaScript&lt;/strong&gt; al navegador.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores casos de uso:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sitios corporativos y empresariales enfocados en conversión&lt;/li&gt;
&lt;li&gt;Blogs y portales de contenido con cientos de artículos&lt;/li&gt;
&lt;li&gt;Landing pages con maximo rendimiento&lt;/li&gt;
&lt;li&gt;Documentación técnica y bases de conocimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cuando-elegir-nextjs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-elegir-nextjs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando elegir Next.js&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Next.js&lt;/strong&gt; es un framework React completo con funcionalidad dinámica avanzada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores casos de uso:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiendas e-commerce con carrito dinámico y proceso de checkout&lt;/li&gt;
&lt;li&gt;Plataformás con login de usuario y dashboards personalizados&lt;/li&gt;
&lt;li&gt;Aplicaciones SaaS con multiples vistas&lt;/li&gt;
&lt;li&gt;Portales con búsqueda en tiempo real y filtrado avanzado&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;desde-que-plataformas-puedes-migrar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desde-que-plataformas-puedes-migrar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desde que plataformas puedes migrar?&lt;/h2&gt;
&lt;h3 id=&quot;wordpress-a-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-a-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress a Headless&lt;/h3&gt;
&lt;p&gt;WordPress es la fuente de migración más comun. En modo Headless, WordPress permanece como backend de gestión de contenido, mientras el nuevo frontend en Astro o Next.js obtiene datos via &lt;strong&gt;WPGraphQL&lt;/strong&gt; o &lt;strong&gt;REST API&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;joomla-y-drupal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#joomla-y-drupal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Joomla y Drupal&lt;/h3&gt;
&lt;p&gt;Sistemas CMS legacy requieren extraccion completa de contenido y reestructuracion.&lt;/p&gt;
&lt;h3 id=&quot;angular-vuejs-y-react-legacy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#angular-vuejs-y-react-legacy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Angular, Vue.js y React Legacy&lt;/h3&gt;
&lt;p&gt;Aplicaciones frontend se migran componente por componente.&lt;/p&gt;
&lt;h3 id=&quot;frameworks-php-y-generadores-estaticos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#frameworks-php-y-generadores-estaticos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Frameworks PHP y generadores estaticos&lt;/h3&gt;
&lt;p&gt;Laravel, Symfony, Hugo, Jekyll, Gatsby - todos migrables preservando lógica de negocio.&lt;/p&gt;
&lt;h2 id=&quot;proceso-de-migración-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-migración-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de migración paso a paso&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-auditoria-y-planificación-semana-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-auditoria-y-planificación-semana-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Auditoria y planificación (Semana 1)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inventario de contenido&lt;/strong&gt; - documentación de todas las páginas, publicaciónes, tipos personalizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mapa de URLs&lt;/strong&gt; - cada dirección URL mapeada a su nuevo destino&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditoria de funcionalidad&lt;/strong&gt; - formularios, integraciones CRM, analítica, pagos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medicion base&lt;/strong&gt; - PageSpeed, Core Web Vitals, rankings Google&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis competitivo&lt;/strong&gt; - como te comparas con el mercado&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-2-configuración-cms-headless-semanas-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-configuración-cms-headless-semanas-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Configuración CMS Headless (Semanas 1-2)&lt;/h3&gt;
&lt;p&gt;WordPress u otro CMS configurado como API: instalación de WPGraphQL, seguridad del panel admin, optimización de endpoints API.&lt;/p&gt;
&lt;h3 id=&quot;fase-3-desarrollo-del-nuevo-frontend-semanas-2-5&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-desarrollo-del-nuevo-frontend-semanas-2-5&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Desarrollo del nuevo frontend (Semanas 2-5)&lt;/h3&gt;
&lt;p&gt;Construccion de la nueva capa visual desde cero con diseño responsive, optimización de imágenes (AVIF/WebP automático), Schema.org, Core Web Vitals y accesibilidad WCAG 2.1.&lt;/p&gt;
&lt;h3 id=&quot;fase-4-migración-de-contenido-y-medios-semanas-4-5&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-migración-de-contenido-y-medios-semanas-4-5&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Migración de contenido y medios (Semanas 4-5)&lt;/h3&gt;
&lt;p&gt;Conversión de shortcodes a componentes React/Astro, optimización de medios, reescritura de enlaces internos y transferencia de metadata.&lt;/p&gt;
&lt;h3 id=&quot;fase-5-pruebas-y-despliegue-semanas-5-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-5-pruebas-y-despliegue-semanas-5-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 5: Pruebas y despliegue (Semanas 5-6)&lt;/h3&gt;
&lt;p&gt;Pruebas de regresion, verificación SEO, pruebas de rendimiento, despliegue blue-green con cambio DNS y capacidad de rollback instantaneo. Monitoreo diario durante 30 dias.&lt;/p&gt;
&lt;h2 id=&quot;preservacion-seo-durante-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preservacion-seo-durante-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preservacion SEO durante la migración&lt;/h2&gt;
&lt;h3 id=&quot;mapeo-de-urls-y-redirecciones-301&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mapeo-de-urls-y-redirecciones-301&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mapeo de URLs y redirecciones 301&lt;/h3&gt;
&lt;p&gt;Cada URL antigua debe tener una redireccion 301 a su nuevo destino. Las redirecciones 301 transfieren equidad de enlaces a las nuevas direcciones.&lt;/p&gt;
&lt;h3 id=&quot;transferencia-de-datos-estructurados-schemaorg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transferencia-de-datos-estructurados-schemaorg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transferencia de datos estructurados Schema.org&lt;/h3&gt;
&lt;p&gt;Los datos estructurados (JSON-LD) deben transferirse o mejorarse: Article, Product, FAQPage, HowTo, BreadcrumbList, Speakable.&lt;/p&gt;
&lt;h3 id=&quot;resultados-seo-tras-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resultados-seo-tras-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resultados SEO tras migración&lt;/h3&gt;
&lt;p&gt;La mayoria de clientes ven &lt;strong&gt;mejoras de ranking en 4-6 semanas&lt;/strong&gt;. Mejores Core Web Vitals, HTML más limpio, carga más rápida y datos estructurados mejorados.&lt;/p&gt;
&lt;h2 id=&quot;comparación-de-rendimiento-wordpress-vs-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-rendimiento-wordpress-vs-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de rendimiento: WordPress vs Headless&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;WordPress (tradicional)&lt;/th&gt;&lt;th&gt;Astro / Next.js&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TTFB&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;800-2000ms&lt;/td&gt;&lt;td&gt;50-200ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LCP&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3-6s&lt;/td&gt;&lt;td&gt;1-2.5s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PageSpeed&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;40-70&lt;/td&gt;&lt;td&gt;95-100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CLS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0.1-0.5&lt;/td&gt;&lt;td&gt;0-0.05&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Peso página&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2-5MB&lt;/td&gt;&lt;td&gt;200-500KB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;cuanto-cuesta-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuanto-cuesta-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuanto cuesta la migración?&lt;/h2&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tipo de sitio&lt;/th&gt;&lt;th&gt;Cronograma&lt;/th&gt;&lt;th&gt;Presupuesto&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sitio empresarial (5-15 páginas)&lt;/td&gt;&lt;td&gt;4-6 semanas&lt;/td&gt;&lt;td&gt;Presupuesto individual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Blog / portal (100+ artículos)&lt;/td&gt;&lt;td&gt;6-10 semanas&lt;/td&gt;&lt;td&gt;Presupuesto individual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tienda WooCommerce (100+ productos)&lt;/td&gt;&lt;td&gt;8-12 semanas&lt;/td&gt;&lt;td&gt;Presupuesto individual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Aplicación empresarial&lt;/td&gt;&lt;td&gt;12-20 semanas&lt;/td&gt;&lt;td&gt;Presupuesto individual&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;conclusion---vale-la-pena-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion---vale-la-pena-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion - Vale la pena la migración?&lt;/h2&gt;
&lt;p&gt;La migración a Astro o Next.js es una inversión en el futuro de tu negocio online. Escapas de la “deuda técnica” hacia una solución que es rápida, segura, escalable y más barata de mantener.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para acelerar?&lt;/strong&gt; &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt; para una consulta gratuita y auditoria de tu sitio. Descubre nuestros servicios de &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Next.js y Astro&lt;/a&gt; o &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;¿Necesitas un especialista para tu proyecto Astro? &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;Descubre mis servicios de desarrollo con Astro&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category>development</category><category domain="tag">migration</category><category domain="tag">nextjs</category><category domain="tag">astro</category><category domain="tag">headless</category><category domain="tag">performance</category><category domain="tag">core-web-vitals</category><category domain="tag">seo</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>WP Packages de Roots: repositorio Composer open source para WordPress en 2026</title><link>https://wppoland.com/es/roots-wp-packages-composer-wordpress-2026/</link><guid isPermaLink="true">https://wppoland.com/es/roots-wp-packages-composer-wordpress-2026/</guid><description>Roots ha lanzado WP Packages, un repositorio Composer open source para plugins y temas de WordPress. Qué significa para proyectos Bedrock y hosting español.</description><pubDate>Fri, 20 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduccion&quot;&gt;
&lt;h2 id=&quot;wordpress-gestionado-con-composer-en-un-párrafo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-gestionado-con-composer-en-un-párrafo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress gestionado con Composer en un párrafo&lt;/h2&gt;
&lt;p&gt;WP Packages es el segundo repositorio Composer open source para el directorio de WordPress.org. WPackagist hace el mismo trabajo desde 2013. La historia interesante no es “qué mirror gana”, sino el hecho de que en 2026 cualquier agencia WordPress española que ejecute CI/CD, despliegues multientorno, o incluso un solo proyecto Bedrock, gana tratando los plugins como dependencias Composer. El botón “Instalar” del dashboard no sobrevive al contacto con un artefacto de despliegue.&lt;/p&gt;
&lt;p&gt;El resto de esta guía recorre el stack Roots (Bedrock, Sage, Trellis), las concesiones entre WP Packages y WPackagist, el problema de los plugins premium del que nadie quiere hablar, y los modos de fallo que tropiezan a equipos que abandonan el flujo de instalación por dashboard.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;lo-que-roots-realmente-entregó&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-roots-realmente-entregó&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que Roots realmente entregó&lt;/h2&gt;
&lt;p&gt;En marzo de 2026 el equipo de Roots (Scott Walkinshaw, Ben Word y colaboradores) lanzó WP Packages en wp-packages.org. Replica cada plugin y tema gratuito del directorio WordPress.org y los sirve como repositorio Composer JSON.&lt;/p&gt;
&lt;p&gt;El lanzamiento no fue suave. El proyecto salió un martes como “WP Composer”. Para el viernes Nils Adermann (cocreador de Composer, también colaborador de la especificación SemVer) había contactado para señalar que Composer es una marca registrada del proyecto Composer. Roots renombró durante el fin de semana, mantuvo las URLs wp-composer.org existentes respondiendo con 410 más aviso de descontinuación, y empujó una actualización de plantilla Bedrock para que los nuevos proyectos apuntaran al host renombrado. Este es el tipo de incidente que en un proveedor corporativo habría llevado seis semanas de revisión jurídica. Los proyectos open source lo arreglan antes de que aterrice el post mortem en el blog.&lt;/p&gt;
&lt;h3 id=&quot;el-composerjson-que-reemplaza-tu-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-composerjson-que-reemplaza-tu-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El composer.json que reemplaza tu dashboard&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;repositories&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;composer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wp-packages.org&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;require&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&gt;=8.2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wp-packages/advanced-custom-fields&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^6.3&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wp-packages/woocommerce&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^9.4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wp-packages/wordpress-seo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^23.0&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;composer install&lt;/code&gt; resuelve entonces un árbol, escribe &lt;code&gt;composer.lock&lt;/code&gt; y descarga ZIPs en &lt;code&gt;web/app/plugins/&lt;/code&gt; (layout Bedrock) o &lt;code&gt;wp-content/plugins/&lt;/code&gt; (WordPress vanilla con &lt;code&gt;composer/installers&lt;/code&gt;). En un proyecto Bedrock con 25 plugins, la instalación con cache caliente corre en 30 a 90 segundos. Cache fría, sin directorio de cache de Composer, runner CI fresco: 2 a 4 minutos, principalmente tiempo de descarga. Ese número empieza a importar cuando encadenas &lt;code&gt;composer install&lt;/code&gt; en cada build de PR.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-el-autoalojamiento-realmente-te-aporta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-el-autoalojamiento-realmente-te-aporta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que el autoalojamiento realmente te aporta&lt;/h3&gt;
&lt;p&gt;Autoalojar WP Packages es la única funcionalidad que WPackagist no iguala. Tres escenarios reales del mercado español donde compensa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento AEPD y auditoría de cadena de suministro.&lt;/strong&gt; Bancos (BBVA, Santander con dependencias WordPress en sitios corporativos secundarios), aseguradoras y administración pública regional tienen requisitos LOPDGDD que exigen que cada dependencia se sirva desde infraestructura controlada. Con WP Packages forkeas el proyecto, lo replicas en un endpoint interno en Stackscale, OVHcloud Datacenter Madrid, o un servidor dedicado de LucusHost, y tu composer.json deja de hablar con un host de terceros durante el despliegue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runners CI en red cerrada.&lt;/strong&gt; Jenkins o GitLab Runner dentro de una VPN bancaria o ministerial no alcanza wpackagist.org ni wp-packages.org. Con WP Packages autoalojado más una cache local Composer, el pipeline de despliegue es offline-clean.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filtrado personalizado.&lt;/strong&gt; Un caso real de una agencia de Madrid: plugins no actualizados en más de 18 meses fueron bloqueados de instalación en infraestructura interna. Forkearon WP Packages, añadieron el filtro en tiempo de indexación, y &lt;code&gt;composer require&lt;/code&gt; en un plugin desactualizado falla ahora con error claro en lugar de instalar silenciosamente código abandonado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para la mayoría de los equipos, WPackagist basta. Los casos anteriores son aquellos en los que deja de bastar.&lt;/p&gt;
&lt;h2 id=&quot;wpackagist-sigue-siendo-el-default-por-una-razón&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wpackagist-sigue-siendo-el-default-por-una-razón&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WPackagist: sigue siendo el default por una razón&lt;/h2&gt;
&lt;p&gt;WPackagist lo gestiona Outlandish, una cooperativa británica. Replica el directorio WordPress.org desde 2013 con muy pocas caídas. La convención de nombres de paquete (&lt;code&gt;wpackagist-plugin/woocommerce&lt;/code&gt;, &lt;code&gt;wpackagist-theme/twentytwentyfour&lt;/code&gt;) se convirtió en convención de facto; casi todo tutorial Bedrock escrito antes de marzo 2026 asume WPackagist.&lt;/p&gt;
&lt;h3 id=&quot;comparación-lado-a-lado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-lado-a-lado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación lado a lado&lt;/h3&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Propiedad&lt;/th&gt;&lt;th&gt;WPackagist&lt;/th&gt;&lt;th&gt;WP Packages&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Activo desde&lt;/td&gt;&lt;td&gt;2013&lt;/td&gt;&lt;td&gt;Marzo 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mantenido por&lt;/td&gt;&lt;td&gt;Outlandish&lt;/td&gt;&lt;td&gt;Roots&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Código del repositorio open source&lt;/td&gt;&lt;td&gt;Cerrado&lt;/td&gt;&lt;td&gt;Sí (MIT)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Autoalojable&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Prefijo de vendor&lt;/td&gt;&lt;td&gt;&lt;code&gt;wpackagist-plugin/&lt;/code&gt;, &lt;code&gt;wpackagist-theme/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;wp-packages/&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Método de sincronización&lt;/td&gt;&lt;td&gt;Cron consulta SVN de WordPress.org&lt;/td&gt;&lt;td&gt;Cron consulta API de WordPress.org&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Default en esqueleto Bedrock&lt;/td&gt;&lt;td&gt;Sí (hoy)&lt;/td&gt;&lt;td&gt;No (cambio manual)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trayectoria operativa&lt;/td&gt;&lt;td&gt;12+ años&lt;/td&gt;&lt;td&gt;Pocas semanas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;cuándo-cambiar-cuándo-no&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-cambiar-cuándo-no&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo cambiar, cuándo no&lt;/h3&gt;
&lt;p&gt;Cambia a WP Packages si necesitas autoalojamiento, si ya estandarizaste todo el stack Roots y prefieres soporte de un solo proveedor, o si has visto un retraso de sincronización de WPackagist que rompió un build y quieres un segundo mirror como respaldo. Quédate con WPackagist si tu CI está verde, tu &lt;code&gt;composer.lock&lt;/code&gt; es reproducible, y “migremos el prefijo de vendor en 200 sitios de cliente” no está en el roadmap de nadie.&lt;/p&gt;
&lt;p&gt;Los dos no se excluyen mutuamente. Nada te impide declarar ambos repositorios y fijar plugins específicos a mirrors específicos. Eso es lo que la mayoría de las agencias terminarán haciendo en la práctica.&lt;/p&gt;
&lt;h2 id=&quot;bedrock-sage-trellis-donde-composer-realmente-compensa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bedrock-sage-trellis-donde-composer-realmente-compensa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bedrock, Sage, Trellis: donde Composer realmente compensa&lt;/h2&gt;
&lt;p&gt;El stack Roots es la razon por la que Composer-en-WordPress se siente nativo en lugar de atornillado.&lt;/p&gt;
&lt;h3 id=&quot;bedrock-el-layout-del-proyecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bedrock-el-layout-del-proyecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bedrock: el layout del proyecto&lt;/h3&gt;
&lt;p&gt;Bedrock es un esqueleto de proyecto, no un framework. Lo que efectivamente hace:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Separa el core de WordPress en &lt;code&gt;web/wp/&lt;/code&gt; (gestionado por Composer), de modo que &lt;code&gt;wp-config.php&lt;/code&gt; es un loader fino en lugar del archivo de configuración canónico.&lt;/li&gt;
&lt;li&gt;Mueve toda la configuración de entorno a &lt;code&gt;.env&lt;/code&gt; (leído por &lt;code&gt;vlucas/phpdotenv&lt;/code&gt;) y &lt;code&gt;config/environments/{development,staging,production}.php&lt;/code&gt;. La constante &lt;code&gt;WP_ENV&lt;/code&gt; controla qué archivo de entorno se carga.&lt;/li&gt;
&lt;li&gt;Trata &lt;code&gt;web/app/plugins/&lt;/code&gt;, &lt;code&gt;web/app/themes/&lt;/code&gt; y &lt;code&gt;web/app/mu-plugins/&lt;/code&gt; como destinos de instalación Composer vía &lt;code&gt;composer/installers&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Trae un autoloader &lt;code&gt;mu-plugins/register-theme-directory.php&lt;/code&gt; para que &lt;code&gt;composer require&lt;/code&gt; en un tema lo registre realmente con WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;.env&lt;/code&gt; está en gitignore. Los secretos de producción viven en el gestor de secretos (HashiCorp Vault, AWS Secrets Manager), no en &lt;code&gt;wp-config.php&lt;/code&gt;. Este es el contrato que hace que WP_DEBUG, claves de licencia ACF Pro y credenciales de base de datos sean seguras por entorno. Para cumplimiento RGPD y la supervisión de la AEPD, esta separación entre código versionado y almacenamiento de secretos es prácticamente obligatoria.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;composer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create-project&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; roots/bedrock&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mi-proyecto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mi-proyecto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;cp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .env.example&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .env&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# editar .env con credenciales locales de DB y WP_ENV=development&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;composer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hosting español para Bedrock: LucusHost tiene SSH y Composer en plan Profesional y superiores, con documentación para Bedrock. Stackscale ofrece servidores dedicados con root para cualquier toolchain. Webempresa tiene SSH en plan M2 y superiores. Raiola Networks soporta Composer en planes Pro y superiores. Profesional Hosting ofrece SSH en planes Empresa y dedicado. Don Dominio Wordpress Pro también lo soporta. En general, evita hosting compartido sin SSH; en 2026 Composer-build-en-servidor es un antipatrón.&lt;/p&gt;
&lt;h3 id=&quot;sage-10-a-sage-11-el-impuesto-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sage-10-a-sage-11-el-impuesto-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sage 10 a Sage 11: el impuesto de migración&lt;/h3&gt;
&lt;p&gt;Sage es el tema de Roots. Sage 11 (lanzado en 2024) trajo Acorn, un contenedor estilo Laravel corriendo dentro de WordPress, más plantillas Blade en lugar de PHP plano. Las migraciones de Sage 10 a Sage 11 tienen modos de fallo específicos que conviene conocer antes de apuntarse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cambios incompatibles de Acorn.&lt;/strong&gt; Hooks registrados a través del mecanismo de service provider de Acorn se disparan después que los mismos hooks registrados en &lt;code&gt;functions.php&lt;/code&gt;. Código que asumía prioridad 10 en &lt;code&gt;init&lt;/code&gt; puede necesitar moverse a prioridad 20 o a otro hook.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blade vs plantillas PHP.&lt;/strong&gt; &lt;code&gt;single.blade.php&lt;/code&gt; en lugar de &lt;code&gt;single.php&lt;/code&gt;. Llamadas antiguas a &lt;code&gt;get_template_part&lt;/code&gt; siguen funcionando pero saltan la pipeline Blade y pierden la mecánica section/yield.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipeline de assets.&lt;/strong&gt; Sage 10 usaba Bud (wrapper de Webpack 5); Sage 11 pasó a Vite. Archivos de configuración Bud no son portables. Tu &lt;code&gt;tailwind.config.js&lt;/code&gt; sí, pero ojo a diferencias en el orden de plugins PostCSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La migración no es un solo botón. Reserva dos días para un tema pequeño, una semana para algo con bloques Gutenberg personalizados.&lt;/p&gt;
&lt;h3 id=&quot;trellis-la-opción-que-probablemente-no-necesitas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trellis-la-opción-que-probablemente-no-necesitas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trellis: la opción que probablemente no necesitas&lt;/h3&gt;
&lt;p&gt;Trellis es Ansible más Vagrant para desarrollo local y aprovisionamiento remoto. Construye servidores Ubuntu LTS con Nginx, MariaDB, PHP-FPM, Redis y un pipeline de despliegue. En claro: Trellis es excelente para agencias con infraestructura propia (50 a 200 sitios en dedicados de Stackscale o Hetzner) y excesivo para todos los demás. Si despliegas a hosting WordPress gestionado (Webempresa Cloud, WP Engine, Kinsta), Trellis no es la herramienta correcta. Si gestionas tu propia flota DigitalOcean o Hetzner, sí lo es.&lt;/p&gt;
&lt;h2 id=&quot;modos-de-fallo-que-nadie-menciona-en-la-introducción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modos-de-fallo-que-nadie-menciona-en-la-introducción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modos de fallo que nadie menciona en la introducción&lt;/h2&gt;
&lt;p&gt;Estos son los cuatro modos en los que &lt;code&gt;composer install&lt;/code&gt; arruina la tarde a alguien.&lt;/p&gt;
&lt;h3 id=&quot;drift-de-versión-php-entre-local-y-ci&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#drift-de-versión-php-entre-local-y-ci&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Drift de versión PHP entre local y CI&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;composer require&lt;/code&gt; resuelve contra la versión PHP que ve hoy. Un plugin marcado &lt;code&gt;&quot;php&quot;: &quot;&gt;=8.2&quot;&lt;/code&gt; se instala bien en tu portátil con PHP 8.3. Un entorno staging congelado en PHP 8.1 fallará &lt;code&gt;composer install&lt;/code&gt; con un error poco útil de platform-requirement. Fija &lt;code&gt;config.platform.php&lt;/code&gt; en &lt;code&gt;composer.json&lt;/code&gt; a la versión más baja que cualquier entorno ejecute:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;config&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;platform&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;8.2.20&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta única línea salva más despliegues que cualquier optimización CI. Especialmente relevante para hosting compartido español donde PHP 8.1 y 8.2 siguen siendo default en planes antiguos de Webempresa, Raiola y LucusHost en 2026.&lt;/p&gt;
&lt;h3 id=&quot;mu-pluginsregisterphp-cargado-contra-la-versión-wordpress-equivocada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mu-pluginsregisterphp-cargado-contra-la-versión-wordpress-equivocada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;mu-plugins/register.php cargado contra la versión WordPress equivocada&lt;/h3&gt;
&lt;p&gt;El autoloader &lt;code&gt;mu-plugins/&lt;/code&gt; de Bedrock corre en tiempo de boot PHP, antes de que el core de WordPress se inicialice. Si haces &lt;code&gt;composer update&lt;/code&gt; del core WordPress a una versión que cambió la semántica de &lt;code&gt;WP_PLUGIN_DIR&lt;/code&gt; (pasó en WP 6.5), el autoloader puede registrar directorios de tema que ya no existen. Síntoma: pantalla blanca en producción, OK en staging. Solución: bloquea &lt;code&gt;roots/wordpress&lt;/code&gt; a una minor conocida buena y sube deliberadamente.&lt;/p&gt;
&lt;h3 id=&quot;activación-de-licencia-acf-pro-en-entornos-de-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#activación-de-licencia-acf-pro-en-entornos-de-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Activación de licencia ACF Pro en entornos de despliegue&lt;/h3&gt;
&lt;p&gt;ACF Pro autentica su licencia contra advancedcustomfields.com. Builds de artefacto de despliegue (Bitbucket Pipelines, GitHub Actions) corren como contenedor fresco sin DOM, sin sesión de admin, y con IP que el servidor de licencias de ACF nunca ha visto. El flujo de activación que funciona en &lt;code&gt;wp-admin&lt;/code&gt; no funciona en un runner CI. Soluciones que de verdad funcionan en 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa el proxy Roots Premium si estás en plan de organización Roots (intermedia ACF Pro y otras licencias premium a través de Composer).&lt;/li&gt;
&lt;li&gt;Pon &lt;code&gt;ACF_PRO_LICENSE&lt;/code&gt; como variable de entorno leída por la API PHP de ACF y omite el flujo de activación del dashboard por completo.&lt;/li&gt;
&lt;li&gt;Usa HTTP basic auth de Composer (&lt;code&gt;auth.json&lt;/code&gt;) para autenticar contra el endpoint Composer oficial de ACF en &lt;code&gt;connect.advancedcustomfields.com&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las dos primeras son las únicas que sobreviven a una migración de servidor sin intervención manual.&lt;/p&gt;
&lt;h3 id=&quot;incompatibilidad-de-lockfile-composer-27-vs-composer-26&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#incompatibilidad-de-lockfile-composer-27-vs-composer-26&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Incompatibilidad de lockfile Composer 2.7 vs Composer 2.6&lt;/h3&gt;
&lt;p&gt;Composer 2.7 cambió cómo &lt;code&gt;composer.lock&lt;/code&gt; registra platform overrides. Un &lt;code&gt;composer.lock&lt;/code&gt; escrito por 2.7 falla la instalación en 2.6 con un error confuso “the lock file is not up to date”. Estandariza la versión de Composer en CI (&lt;code&gt;composer self-update 2.7.7&lt;/code&gt;) y documéntalo en el README. Sí, esto es molesto. Sí, ha mordido a suficientes equipos como para que Composer 2.8 vaya a avisar explícitamente.&lt;/p&gt;
&lt;h2 id=&quot;plugins-premium-la-parte-que-la-documentación-omite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-premium-la-parte-que-la-documentación-omite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins premium: la parte que la documentación omite&lt;/h2&gt;
&lt;p&gt;La mitad de los plugins en un sitio de cliente real no están en el directorio WordPress.org. ACF Pro, Gravity Forms, WP Migrate, GP Premium, FacetWP, WP All Import Pro. En contexto español, añade frecuentemente Cookiebot o Complianz para cumplimiento RGPD/AEPD, y a menudo Yoast Premium o RankMath Pro. El soporte Composer varía mucho:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ACF Pro:&lt;/strong&gt; endpoint Composer oficial en &lt;code&gt;connect.advancedcustomfields.com&lt;/code&gt;. Funciona bien, requiere &lt;code&gt;auth.json&lt;/code&gt; con clave de licencia como password.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gravity Forms:&lt;/strong&gt; soporte oficial Composer desde 2023. Clave de licencia en &lt;code&gt;auth.json&lt;/code&gt;, nombre de paquete &lt;code&gt;gravityforms/gravityforms&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cookiebot/Complianz:&lt;/strong&gt; sin endpoint oficial Composer. SatisPress o inclusión manual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP Migrate Pro (Delicious Brains, ahora WP Engine):&lt;/strong&gt; descarga ZIP con URL de licencia. Repositorio Composer personalizado declarando el paquete como tipo &lt;code&gt;package&lt;/code&gt; con URL inline, o proxy vía SatisPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP All Import Pro:&lt;/strong&gt; sin endpoint Composer. ZIPs alojados en URL con clave de licencia. SatisPress o commit del ZIP a un repositorio privado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tres patrones cubren todo lo anterior:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Roots Premium&lt;/strong&gt; (&lt;a href=&quot;https://roots.io/premium/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;roots.io/premium&lt;/a&gt;). Un proxy Composer gestionado que maneja licencias para ACF Pro, Gravity Forms y otros. Precio individual; para agencias que llevan 50+ sitios la cuenta normalmente cuadra.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SatisPress.&lt;/strong&gt; Un plugin WordPress que convierte tu propia instalación WordPress en un repositorio Composer. Instala plugins premium normalmente, exponlos vía &lt;code&gt;https://tu-host-privado/satispress/&lt;/code&gt;, asegúralos con HTTP basic auth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Private Packagist&lt;/strong&gt; de packagist.com. Repositorio Composer alojado con soporte a paquetes privados. Cuesta más que SatisPress, requiere cero infraestructura.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sea cual sea la elección, la regla es: las claves de licencia nunca van en &lt;code&gt;composer.json&lt;/code&gt; o &lt;code&gt;auth.json&lt;/code&gt; versionado en git. Viven en variables de entorno leídas en tiempo de instalación, o en secretos CI inyectados en &lt;code&gt;auth.json&lt;/code&gt; durante el paso de build. El cumplimiento RGPD exige separación clara entre código versionado y almacén de credenciales.&lt;/p&gt;
&lt;h2 id=&quot;integracion-ci-que-sobrevive-a-la-realidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integracion-ci-que-sobrevive-a-la-realidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integracion CI que sobrevive a la realidad&lt;/h2&gt;
&lt;p&gt;Una pipeline de despliegue funcional:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# .github/workflows/deploy.yml (extracto)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Set up PHP 8.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;shivammathur/setup-php@v2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    php-version&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;8.2&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    tools&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;composer:2.7&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Cache Composer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;actions/cache@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;~/.composer/cache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;composer-${{ hashFiles(&apos;composer.lock&apos;) }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Install&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;composer install --no-dev --optimize-autoloader --prefer-dist --no-interaction&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  env&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    COMPOSER_AUTH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.COMPOSER_AUTH_JSON }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy artifact&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;rsync -avz --delete --exclude=&apos;.git&apos; --exclude=&apos;node_modules&apos; ./ deploy@host:/var/www/html/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tres reglas que ahorran tiempo de debug:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nunca ejecutes &lt;code&gt;composer update&lt;/code&gt; en CI.&lt;/strong&gt; Actualiza en local, haz commit del nuevo &lt;code&gt;composer.lock&lt;/code&gt;, push. CI ejecuta &lt;code&gt;composer install&lt;/code&gt; contra exactamente ese lockfile.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cachea &lt;code&gt;~/.composer/cache&lt;/code&gt; con hash de &lt;code&gt;composer.lock&lt;/code&gt; como clave.&lt;/strong&gt; Instalaciones frías bajan de 4 minutos a 30 segundos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inyecta &lt;code&gt;auth.json&lt;/code&gt; desde un secreto.&lt;/strong&gt; La variable de entorno &lt;code&gt;COMPOSER_AUTH&lt;/code&gt; es leída nativamente por Composer. Nunca hagas commit de credenciales licenciadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lo-que-cambió-en-la-cultura-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-cambió-en-la-cultura-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que cambió en la cultura WordPress en 2026&lt;/h2&gt;
&lt;p&gt;Composer-en-WordPress era antes cosa de tienda Roots. En 2026 es el default para cualquier agencia española o equipo interno que despliegue a más de un entorno. Tres señales del ecosistema más amplio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las publicaciones de plugins en WordPress.org superaron las 500 por semana a inicios de 2026, frente a 100 a 150 semanales durante 2022 a 2024 (fuente: informes semanales del Plugin Review Team). La mayor parte del nuevo volumen es código asistido por IA. El equipo de Plugins recluta revisores voluntarios; el listón de calidad del directorio está bajo presión.&lt;/li&gt;
&lt;li&gt;Tanto Kinsta como WP Engine añadieron soporte nativo a builds Composer en su despliegue Git push a finales de 2025. Webempresa Cloud siguió una ruta similar en el primer trimestre de 2026. La categoría “managed WordPress hosting que ignora composer.json” se encoge.&lt;/li&gt;
&lt;li&gt;WP-CLI 2.10 añadió subcomandos &lt;code&gt;wp composer&lt;/code&gt; que envuelven &lt;code&gt;composer install&lt;/code&gt;, &lt;code&gt;composer update&lt;/code&gt; y validación de lockfile. Composer se convierte en parte de la superficie oficial de WP-CLI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La lección para gestión de plugin-como-dependencia: las herramientas maduran más rápido que la capacidad de revisión del directorio WordPress.org. Un mirror autoalojable como WP Packages es más útil en este contexto que lo habría sido hace cinco años, cuando el directorio era un jardín cerrado en el que todos confiaban por defecto.&lt;/p&gt;
&lt;h2 id=&quot;última-actualización-2026-04-01&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#última-actualización-2026-04-01&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Última actualización: 2026-04-01&lt;/h2&gt;
&lt;p&gt;¿Necesitas ayuda para migrar un sitio a Bedrock o configurar una pipeline de despliegue dirigida por Composer? Mira nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category>development</category><category domain="tag">composer</category><category domain="tag">roots</category><category domain="tag">wp-packages</category><category domain="tag">dependency-management</category><category domain="tag">wordpress-development</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Instalar WordPress con Docker y Composer: configuración de desarrollo moderna para 2026</title><link>https://wppoland.com/es/instalar-wordpress-docker-composer-configuracion-desarrollo-moderna/</link><guid isPermaLink="true">https://wppoland.com/es/instalar-wordpress-docker-composer-configuracion-desarrollo-moderna/</guid><description>Guia completa para instalar WordPress con Docker Compose y Composer (Bedrock). Incluye docker-compose.yml completo, configuración de Xdebug, configuración .env y flujos de despliegue desde local hasta producción.</description><pubDate>Tue, 17 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;El desarrollo de WordPress ha superado las subidas por FTP y los paneles de alojamiento compartido. En 2026, los equipos profesionales tratan WordPress como cualquier otro proyecto de software, con dependencias versiónadas, entornos containerizados y pipelines de despliegue automatizados. Si todavia esta editando archivos directamente en un servidor en producción, esta guía cambiara su forma de trabajar.&lt;/p&gt;
&lt;p&gt;Este tutorial cubre dos enfoques complementarios para el desarrollo moderno de WordPress: &lt;strong&gt;Docker Compose&lt;/strong&gt; para entornos de servidor reproducibles y &lt;strong&gt;Composer con Bedrock&lt;/strong&gt; para la gestión de dependencias. Obtendra archivos de configuración completos y listos para copiar, configuración de Xdebug para depuracion PHP adecuada y un flujo de despliegue que lleva su código desde la maquina local hasta producción de forma segura.&lt;/p&gt;
&lt;h2 id=&quot;por-que-la-configuración-tradicional-de-wordpress-le-esta-frenando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-la-configuración-tradicional-de-wordpress-le-esta-frenando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que la configuración tradicional de WordPress le esta frenando&lt;/h2&gt;
&lt;p&gt;El enfoque clásico de descargar un archivo ZIP de wordpress.org y subirlo via FTP crea varios problemas que se acumulan con el tiempo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desviacion de entorno&lt;/strong&gt; - su configuración local MAMP o XAMPP nunca coincide exactamente con el servidor de producción, lo que lleva a errores del tipo “funciona en mi maquina”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin seguimiento de dependencias&lt;/strong&gt; - los plugins y temas se descargan y actualizan manualmente, haciendo imposible reproducir exactamente el mismo sitio en otra maquina.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin control de versiones para el nucleo&lt;/strong&gt; - los archivos del nucleo de WordPress estan en su repositorio (o peor, no se rastrean en absoluto), mezclando código de aplicación con código de framework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegues manuales&lt;/strong&gt; - copiar archivos por FTP es propenso a errores y no proporciona mecanismo de reversión.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Docker y Composer resuelven cada uno de estos problemas de forma sistemática.&lt;/p&gt;
&lt;h2 id=&quot;configurar-wordpress-con-docker-compose&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-wordpress-con-docker-compose&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar WordPress con Docker Compose&lt;/h2&gt;
&lt;p&gt;Docker Compose le permite definir toda su pila de servidor en un único archivo YAML. Cada desarrollador del equipo obtiene exactamente la misma versión de PHP, versión de MySQL y configuración de servidor ejecutando un solo comando.&lt;/p&gt;
&lt;h3 id=&quot;prerrequisitos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prerrequisitos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prerrequisitos&lt;/h3&gt;
&lt;p&gt;Instale &lt;a href=&quot;https://www.docker.com/products/docker-desktop/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Docker Desktop&lt;/a&gt; para su sistema operativo. Docker Desktop incluye tanto el motor Docker como el plugin CLI &lt;code&gt;docker compose&lt;/code&gt;. Verifique la instalación:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --versión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; versión&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estructura-del-proyecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-del-proyecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura del proyecto&lt;/h3&gt;
&lt;p&gt;Cree un directorio de proyecto limpio:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress-docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress-docker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/themes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/plugins&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/uploads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;el-docker-composeyml-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-docker-composeyml-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El docker-compose.yml completo&lt;/h3&gt;
&lt;p&gt;Cree un archivo &lt;code&gt;docker-compose.yml&lt;/code&gt; en la raiz de su proyecto:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;3.9&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;mysql:8.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    container_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_mysql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    restart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;unless-stopped&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    environment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      MYSQL_DATABASE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_NAME:-wordpress}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      MYSQL_USER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_USER:-wpuser}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      MYSQL_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_PASSWORD:-wppassword}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_ROOT_PASSWORD:-rootpassword}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    volumes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;db_data:/var/lib/mysql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    ports&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;3306:3306&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    networks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    healthcheck&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      test&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;CMD&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;mysqladmin&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ping&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;-h&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;localhost&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      interval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;10s&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      timeout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;5s&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      retries&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress:6.7-php8.3-apache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    container_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_app&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    restart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;unless-stopped&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    depends_on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        condition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;service_healthy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    environment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      WORDPRESS_DB_HOST&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;db:3306&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      WORDPRESS_DB_NAME&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_NAME:-wordpress}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      WORDPRESS_DB_USER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_USER:-wpuser}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      WORDPRESS_DB_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_PASSWORD:-wppassword}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      WORDPRESS_DEBUG&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${WP_DEBUG:-1}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      WORDPRESS_CONFIG_EXTRA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        define(&apos;WP_DEBUG_LOG&apos;, true);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        define(&apos;WP_DEBUG_DISPLAY&apos;, false);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        define(&apos;SCRIPT_DEBUG&apos;, true);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        define(&apos;DISALLOW_FILE_EDIT&apos;, true);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    volumes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;./wp-content/themes:/var/www/html/wp-content/themes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;./wp-content/plugins:/var/www/html/wp-content/plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;./wp-content/uploads:/var/www/html/wp-content/uploads&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;./php-custom.ini:/usr/local/etc/php/conf.d/custom.ini&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    ports&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;8080:80&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    networks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  phpmyadmin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;phpmyadmin:5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    container_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_phpmyadmin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    restart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;unless-stopped&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    depends_on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;db&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    environment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      PMA_HOST&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;db&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      PMA_PORT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3306&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${DB_ROOT_PASSWORD:-rootpassword}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    ports&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;8081:80&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    networks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  mailhog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;mailhog/mailhog:latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    container_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_mailhog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    ports&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1025:1025&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;8025:8025&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    networks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;volumes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  db_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;networks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  wp_network&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    driver&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;bridge&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta configuración le proporciona cuatro servicios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MySQL 8.0&lt;/strong&gt; con verificación de salud para que WordPress espere a que la base de datos este lista antes de iniciar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress 6.7 en PHP 8.3&lt;/strong&gt; con Apache, montando solo sus temas, plugins y subidas personalizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;phpMyAdmin&lt;/strong&gt; para gestión visual de la base de datos en &lt;code&gt;http://localhost:8081&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MailHog&lt;/strong&gt; para capturar correos electronicos salientes durante el desarrollo en &lt;code&gt;http://localhost:8025&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;variables-de-entorno-con-env&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#variables-de-entorno-con-env&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Variables de entorno con .env&lt;/h3&gt;
&lt;p&gt;Cree un archivo &lt;code&gt;.env&lt;/code&gt; en la raiz del proyecto:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_NAME&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_USER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wpuser&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;secure_local_password_2026&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_ROOT_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;secure_root_password_2026&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;WP_DEBUG&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Sitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SITE_URL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;http://localhost:8080&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Docker Compose lee automáticamente archivos &lt;code&gt;.env&lt;/code&gt; del directorio del proyecto. Agregue &lt;code&gt;.env&lt;/code&gt; a su &lt;code&gt;.gitignore&lt;/code&gt; inmediatamente y haga commit de una plantilla &lt;code&gt;.env.example&lt;/code&gt; en su lugar.&lt;/p&gt;
&lt;h3 id=&quot;configuración-php-personalizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-php-personalizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración PHP personalizada&lt;/h3&gt;
&lt;p&gt;Cree &lt;code&gt;php-custom.ini&lt;/code&gt; para ajustes PHP amigables con el desarrollo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;upload_max_filesize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 128M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;post_max_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 128M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;memory_limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 512M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_execution_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 300&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_input_vars&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 3000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;display_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;error_reporting&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = E_ALL&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;iniciar-el-entorno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#iniciar-el-entorno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Iniciar el entorno&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; up&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra &lt;code&gt;http://localhost:8080&lt;/code&gt; y complete la instalación de WordPress. Sus directorios de temas y plugins estan montados desde la maquina anfitriona, por lo que cualquier cambio que haga en su editor aparece instantaneamente en la instancia de WordPress en ejecucion.&lt;/p&gt;
&lt;h3 id=&quot;comandos-docker-utiles-para-el-trabajo-diario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comandos-docker-utiles-para-el-trabajo-diario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comandos Docker utiles para el trabajo diario&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Ver registros de todos los contenedores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; logs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Ver registros solo de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; logs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Abrir una shell dentro del contenedor WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Ejecutar comandos WP-CLI dentro del contenedor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --allow-root&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Detener todos los contenedores (preserva datos)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; stop&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Detener y eliminar contenedores (preserva datos de volumenes)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; down&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Reinicio completo incluyendo base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; down&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -v&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;wordpress-basado-en-composer-con-bedrock&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-basado-en-composer-con-bedrock&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress basado en Composer con Bedrock&lt;/h2&gt;
&lt;p&gt;Mientras Docker maneja el entorno de servidor, &lt;a href=&quot;https://roots.io/bedrock/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Bedrock de Roots&lt;/a&gt; reestructura WordPress en si mismo como una aplicación correctamente gestionada por Composer. Bedrock trata el nucleo de WordPress como una dependencia, no como la raiz del proyecto, lo que cambia todo sobre como gestiona y despliega WordPress.&lt;/p&gt;
&lt;h3 id=&quot;por-que-bedrock-importa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-bedrock-importa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que Bedrock importa&lt;/h3&gt;
&lt;p&gt;WordPress estándar mezcla código de aplicación (su tema, plugins) con código de framework (wp-admin, wp-includes) en el mismo directorio. Bedrock separa estas preocupaciones:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;project-root/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  config/              # Configuración específica del entorno&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    application.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    environments/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      development.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      staging.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      production.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  web/                 # Raiz del documento (publica)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    app/               # Equivalente a wp-content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      themes/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      plugins/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      uploads/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    wp/                # Nucleo de WordPress (gestionado por Composer)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    wp-config.php      # Cargador minimo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  vendor/              # Dependencias de Composer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  .env                 # Variables de entorno&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  composer.json        # Manifiesto de dependencias&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El nucleo de WordPress reside en &lt;code&gt;web/wp/&lt;/code&gt; y nunca se modifica. Su código personalizado reside en &lt;code&gt;web/app/&lt;/code&gt;. El directorio &lt;code&gt;vendor/&lt;/code&gt; y &lt;code&gt;web/wp/&lt;/code&gt; estan ambos en el gitignore porque Composer los recrea a partir de &lt;code&gt;composer.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;instalar-bedrock&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#instalar-bedrock&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Instalar Bedrock&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;composer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create-project&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; roots/bedrock&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; my-wordpress-project&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; my-wordpress-project&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;la-estructura-de-composerjson&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-estructura-de-composerjson&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La estructura de composer.json&lt;/h3&gt;
&lt;p&gt;El &lt;code&gt;composer.json&lt;/code&gt; de Bedrock gestiona el nucleo de WordPress, plugins y temas como paquetes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;your-agency/clientes-project&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;project&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;license&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;MIT&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;description&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WordPress project managed with Bedrock and Composer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;require&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&gt;=8.1&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;composer/installers&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^2.3&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;vlucas/phpdotenv&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^5.6&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;oscarotero/env&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^2.1&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;roots/bedrock-autoloader&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^1.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;roots/bedrock-disallow-indexing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^2.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;roots/wordpress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;6.7.*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;roots/wp-config&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.0.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;roots/wp-password-bcrypt&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.1.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wpackagist-plugin/wordpress-seo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^23.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wpackagist-plugin/wp-super-cache&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^1.12&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wpackagist-plugin/wordfence&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^7.11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;require-dev&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;squizlabs/php_codesniffer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^3.10&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;roave/security-advisories&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;dev-latest&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;config&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;optimize-autoloader&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;preferred-install&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;dist&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;allow-plugins&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;composer/installers&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;roots/wordpress-core-installer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;repositories&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;composer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wpackagist.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;only&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;wpackagist-plugin/*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;wpackagist-theme/*&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;extra&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;installer-paths&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;web/app/mu-plugins/{$name}/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;type:wordpress-muplugin&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;web/app/plugins/{$name}/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;type:wordpress-plugin&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;web/app/themes/{$name}/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;type:wordpress-theme&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wordpress-install-dir&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;web/wp&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El punto clave: &lt;a href=&quot;https://wpackagist.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress Packagist&lt;/a&gt; replica todo el repositorio de plugins y temas de WordPress.org como paquetes Composer. Agregar un plugin es tan simple como:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;composer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; require&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wpackagist-plugin/advanced-custom-fields&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eliminarlo es igualmente limpio:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;composer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wpackagist-plugin/advanced-custom-fields&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configuración-de-entorno-bedrock&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-entorno-bedrock&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de entorno Bedrock&lt;/h3&gt;
&lt;p&gt;Bedrock usa archivos &lt;code&gt;.env&lt;/code&gt; en lugar de codificar valores directamente en &lt;code&gt;wp-config.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Archivo .env para Bedrock&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_NAME&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_USER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wpuser&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;secure_local_password_2026&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_HOST&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;db:3306&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DB_PREFIX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp_&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;WP_ENV&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;development&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;WP_HOME&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;http://localhost:8080&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;WP_SITEURL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;${WP_HOME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/wp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Genere estos en https://roots.io/salts.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;AUTH_KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-key-here&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SECURE_AUTH_KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-key-here&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;LOGGED_IN_KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-key-here&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;NONCE_KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-key-here&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;AUTH_SALT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-salt-here&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SECURE_AUTH_SALT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-salt-here&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;LOGGED_IN_SALT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-salt-here&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;NONCE_SALT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;generate-unique-salt-here&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada entorno (desarrollo, staging, producción) tiene su propio archivo &lt;code&gt;.env&lt;/code&gt; en su respectivo servidor. La misma base de código se ejecuta en todas partes, con el comportamiento controlado completamente por variables de entorno.&lt;/p&gt;
&lt;h2 id=&quot;combinar-docker-y-bedrock&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#combinar-docker-y-bedrock&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Combinar Docker y Bedrock&lt;/h2&gt;
&lt;p&gt;El verdadero poder surge al ejecutar Bedrock dentro de Docker. Modifique el docker-compose.yml para montar su proyecto Bedrock en lugar de la imagen WordPress predeterminada:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    build&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      context&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      dockerfile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Dockerfile&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    volumes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.:/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    environment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;WP_ENV=development&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con un &lt;code&gt;Dockerfile&lt;/code&gt; personalizado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;dockerfile&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; php:8.3-apache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; apt-get update &amp;#x26;&amp;#x26; apt-get install -y \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    libzip-dev \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    libpng-dev \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    libjpeg-dev \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    libfreetype6-dev \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    libicu-dev \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x26;&amp;#x26; docker-php-ext-configure gd --with-freetype --with-jpeg \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x26;&amp;#x26; docker-php-ext-install \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    mysqli \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    pdo_mysql \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    zip \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    gd \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    intl \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    opcache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; a2enmod rewrite&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;COPY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; --from=composer:latest /usr/bin/composer /usr/bin/composer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ENV&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; APACHE_DOCUMENT_ROOT /var/www/html/web&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; sed -ri -e &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;s!/var/www/html!${APACHE_DOCUMENT_ROOT}!g&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    /etc/apache2/sites-available/*.conf \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    /etc/apache2/apache2.conf&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WORKDIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /var/www/html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto le da un entorno Bedrock completamente containerizado donde &lt;code&gt;composer install&lt;/code&gt; se ejecuta dentro del contenedor y la raiz del documento apunta al directorio &lt;code&gt;web/&lt;/code&gt; de Bedrock.&lt;/p&gt;
&lt;h2 id=&quot;configuración-de-xdebug-para-depuracion-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-xdebug-para-depuracion-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de Xdebug para depuracion PHP&lt;/h2&gt;
&lt;p&gt;La depuracion paso a paso reemplaza &lt;code&gt;var_dump&lt;/code&gt; y &lt;code&gt;error_log&lt;/code&gt; con un depurador adecuado que le permite pausar la ejecucion, inspeccionar variables y recorrer el código linea por linea.&lt;/p&gt;
&lt;h3 id=&quot;agregar-xdebug-a-su-contenedor-docker&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agregar-xdebug-a-su-contenedor-docker&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agregar Xdebug a su contenedor Docker&lt;/h3&gt;
&lt;p&gt;Cree un archivo &lt;code&gt;xdebug.ini&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;[xdebug]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;zend_extensión=xdebug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;xdebug.mode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=debug,develop&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;xdebug.start_with_request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=yes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;xdebug.clientes_host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=host.docker.internal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;xdebug.clientes_port&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=9003&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;xdebug.discover_client_host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;xdebug.log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=/tmp/xdebug.log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;xdebug.idekey&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=VSCODE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Agregue la instalación de Xdebug a su Dockerfile:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;dockerfile&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; pecl install xdebug-3.3.2 \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x26;&amp;#x26; docker-php-ext-enable xdebug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;COPY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configuración-de-vs-code&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-vs-code&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de VS Code&lt;/h3&gt;
&lt;p&gt;Cree &lt;code&gt;.vscode/launch.json&lt;/code&gt; en la raiz de su proyecto:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;versión&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0.2.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;configurations&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Listen for Xdebug (Docker)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;request&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;launch&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;port&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9003&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;pathMappings&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;/var/www/html&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;${workspaceFolder}&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;log&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale la extensión &lt;strong&gt;PHP Debug&lt;/strong&gt; de Xdebug en VS Code, establezca un breakpoint en cualquier archivo PHP, presione F5 para comenzar a escuchar y recargue su página WordPress. El depurador se detendra en su breakpoint.&lt;/p&gt;
&lt;h3 id=&quot;configuración-de-phpstorm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-phpstorm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de PhpStorm&lt;/h3&gt;
&lt;p&gt;PhpStorm maneja las conexiónes Xdebug de Docker de forma nativa:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vaya a &lt;strong&gt;Settings &gt; PHP &gt; Debug&lt;/strong&gt; y verifique que el puerto 9003 esta configurado.&lt;/li&gt;
&lt;li&gt;Vaya a &lt;strong&gt;Settings &gt; PHP &gt; Servers&lt;/strong&gt;, agregue un nuevo servidor con &lt;code&gt;localhost&lt;/code&gt; en el puerto &lt;code&gt;8080&lt;/code&gt; y configure el mapeo de rutas de &lt;code&gt;/var/www/html&lt;/code&gt; a la raiz de su proyecto.&lt;/li&gt;
&lt;li&gt;Haga clic en el boton &lt;strong&gt;Start Listening for PHP Debug Connections&lt;/strong&gt; en la barra de herramientas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;flujo-de-despliegue-de-local-a-staging-a-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-despliegue-de-local-a-staging-a-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de despliegue: de local a staging a producción&lt;/h2&gt;
&lt;p&gt;Una pipeline de despliegue profesional asegura que los cambios de código fluyan predeciblemente desde el desarrollo hasta producción sin copia manual de archivos.&lt;/p&gt;
&lt;h3 id=&quot;el-modelo-de-tres-entornos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-modelo-de-tres-entornos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El modelo de tres entornos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Local&lt;/strong&gt; (Docker) - donde escribe y prueba código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Staging&lt;/strong&gt; - un servidor que refleja producción para pruebas finales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Producción&lt;/strong&gt; - el sitio en vivo.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;despliegue-basado-en-git-con-github-actions&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despliegue-basado-en-git-con-github-actions&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despliegue basado en Git con GitHub Actions&lt;/h3&gt;
&lt;p&gt;Su repositorio debe contener el código del tema, plugin y configuración de Bedrock. &lt;strong&gt;No debe&lt;/strong&gt; contener el nucleo de WordPress, &lt;code&gt;vendor/&lt;/code&gt; ni &lt;code&gt;uploads/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ejemplo &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy to staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  push&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    branches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;staging&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;jobs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  deploy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    runs-on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    steps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;actions/checkout@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Setup PHP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;shivammathur/setup-php@v2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          php-versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;8.3&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Install dependencies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;composer install --no-dev --optimize-autoloader&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Run code quality checks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;vendor/bin/phpcs --standard=WordPress web/app/themes/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy via rsync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;burnett01/rsync-deployments@7.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          switches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;-avz --delete --exclude=&apos;.env&apos; --exclude=&apos;web/app/uploads/&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;./&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/var/www/staging.example.com/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.STAGING_HOST }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.STAGING_USER }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.STAGING_SSH_KEY }}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sincronizacion-de-base-de-datos-y-archivos-subidos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sincronizacion-de-base-de-datos-y-archivos-subidos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sincronizacion de base de datos y archivos subidos&lt;/h3&gt;
&lt;p&gt;El código se despliega a través de Git, pero las bases de datos y los archivos multimedia requieren un manejo separado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar base de datos de producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; production-backup.sql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=user@production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Importar en staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; production-backup.sql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=user@staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Buscar y reemplazar URLs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://example.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://staging.example.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=user@staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Sincronizar subidas de producción a staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user@production:/var/www/html/web/app/uploads/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  user@staging:/var/www/html/web/app/uploads/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para el desarrollo local, use los comandos WP-CLI &lt;code&gt;wp db export&lt;/code&gt; y &lt;code&gt;wp db import&lt;/code&gt; a través de Docker:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /tmp/backup.sql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --allow-root&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp_app:/tmp/backup.sql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ./backups/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;comparación-docker-vs-composer-vs-localwp-vs-mamp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-docker-vs-composer-vs-localwp-vs-mamp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación: Docker vs Composer vs LocalWP vs MAMP&lt;/h2&gt;


















































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Funcionalidad&lt;/th&gt;&lt;th&gt;Docker Compose&lt;/th&gt;&lt;th&gt;Composer (Bedrock)&lt;/th&gt;&lt;th&gt;LocalWP&lt;/th&gt;&lt;th&gt;MAMP/XAMPP&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Reproducibilidad del entorno&lt;/td&gt;&lt;td&gt;Excelente - definida en código&lt;/td&gt;&lt;td&gt;N/A (solo gestión de código)&lt;/td&gt;&lt;td&gt;Limitada - por maquina&lt;/td&gt;&lt;td&gt;Limitada - por maquina&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Consistencia de equipo&lt;/td&gt;&lt;td&gt;Paridad total entre maquinas&lt;/td&gt;&lt;td&gt;Paridad total para dependencias&lt;/td&gt;&lt;td&gt;Configuración manual por desarrollador&lt;/td&gt;&lt;td&gt;Configuración manual por desarrollador&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control de versión PHP&lt;/td&gt;&lt;td&gt;Versión exacta en Dockerfile&lt;/td&gt;&lt;td&gt;Requiere servidor separado&lt;/td&gt;&lt;td&gt;Intercambiable por sitio&lt;/td&gt;&lt;td&gt;Configuración global&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gestión de dependencias&lt;/td&gt;&lt;td&gt;N/A (solo servidor)&lt;/td&gt;&lt;td&gt;Excelente - composer.lock&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Paridad con producción&lt;/td&gt;&lt;td&gt;Coincide exactamente con producción&lt;/td&gt;&lt;td&gt;Coincide con dependencias de producción&lt;/td&gt;&lt;td&gt;Aproximada&lt;/td&gt;&lt;td&gt;Aproximada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Curva de aprendizaje&lt;/td&gt;&lt;td&gt;Moderada - requiere comodidad con CLI&lt;/td&gt;&lt;td&gt;Moderada - conocimiento del ecosistema PHP&lt;/td&gt;&lt;td&gt;Baja - basada en GUI&lt;/td&gt;&lt;td&gt;Baja - basada en GUI&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Integración CI/CD&lt;/td&gt;&lt;td&gt;Nativa&lt;/td&gt;&lt;td&gt;Nativa&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Aislamiento multiproyecto&lt;/td&gt;&lt;td&gt;Aislamiento completo de contenedores&lt;/td&gt;&lt;td&gt;Separado por proyecto&lt;/td&gt;&lt;td&gt;Separado por sitio&lt;/td&gt;&lt;td&gt;Servidor compartido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Configuraciónes de servidor&lt;/td&gt;&lt;td&gt;Control total&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;td&gt;Limitadas&lt;/td&gt;&lt;td&gt;Limitadas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Velocidad de arranque&lt;/td&gt;&lt;td&gt;Moderada (el primer pull es lento)&lt;/td&gt;&lt;td&gt;Rápida (composer install)&lt;/td&gt;&lt;td&gt;Rápida&lt;/td&gt;&lt;td&gt;Rápida&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La conclusion principal: Docker y Composer son complementarios, no competidores. Docker reemplaza a MAMP/XAMPP como entorno de servidor, mientras que Composer reemplaza la gestión manual de plugins/temas. LocalWP sigue siendo una opción válida para prototipado rápido, pero carece de la reproducibilidad e integración CI/CD que los equipos profesionales necesitan.&lt;/p&gt;
&lt;h2 id=&quot;consejos-de-rendimiento-para-docker-en-macos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consejos-de-rendimiento-para-docker-en-macos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consejos de rendimiento para Docker en macOS&lt;/h2&gt;
&lt;p&gt;Docker en macOS sufrio historicamente de un rendimiento lento del sistema de archivos debido a la capa de virtualizacion. En 2026, Docker Desktop usa VirtioFS por defecto, lo que mejora dramaticamente las velocidades de E/S. Si todavia experimenta lentitud:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifique que VirtioFS esta habilitado en &lt;strong&gt;Docker Desktop &gt; Settings &gt; General&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Limite los volumenes montados solo a lo que necesita (temas, plugins, subidas), no a toda la instalación de WordPress.&lt;/li&gt;
&lt;li&gt;Use las directivas de cache integradas de Docker si es necesario: &lt;code&gt;volumes: - ./wp-content:/var/www/html/wp-content:cached&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Asigne recursos suficientes en &lt;strong&gt;Docker Desktop &gt; Settings &gt; Resources&lt;/strong&gt; (al menos 4 GB de RAM y 2 CPUs).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad-para-el-desarrollo-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad-para-el-desarrollo-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad para el desarrollo local&lt;/h2&gt;
&lt;p&gt;Incluso en entornos locales, los habitos de seguridad importan porque las configuraciónes a menudo se filtran a producción:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nunca haga commit de archivos &lt;code&gt;.env&lt;/code&gt; en Git. Use &lt;code&gt;.env.example&lt;/code&gt; como plantilla.&lt;/li&gt;
&lt;li&gt;Use contrasenas fuertes y únicas en su &lt;code&gt;.env&lt;/code&gt; incluso localmente, para nunca desplegar accidentalmente credenciales debiles.&lt;/li&gt;
&lt;li&gt;Mantenga &lt;code&gt;DISALLOW_FILE_EDIT&lt;/code&gt; configurado como &lt;code&gt;true&lt;/code&gt; en todos los entornos.&lt;/li&gt;
&lt;li&gt;Ejecute &lt;code&gt;composer audit&lt;/code&gt; regularmente para verificar vulnerabilidades conocidas en sus dependencias.&lt;/li&gt;
&lt;li&gt;Fije versiones específicas en &lt;code&gt;composer.json&lt;/code&gt; para despliegues en producción en lugar de usar restricciones de versión flexibles.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;solución-de-problemas-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-de-problemas-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución de problemas comunes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;El contenedor MySQL se cierra inmediatamente&lt;/strong&gt;
Verifique los registros con &lt;code&gt;docker compose logs db&lt;/code&gt;. La causa más comun es un volumen existente con datos incompatibles. Ejecute &lt;code&gt;docker compose down -v&lt;/code&gt; para eliminar volumenes y comenzar de nuevo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress no puede conectarse a la base de datos&lt;/strong&gt;
Verifique que el valor &lt;code&gt;WORDPRESS_DB_HOST&lt;/code&gt; coincide con el nombre del servicio en docker-compose.yml (tipicamente &lt;code&gt;db:3306&lt;/code&gt;). Asegurese de que el contenedor de la base de datos esta saludable antes de que WordPress inicie, usando la condicion &lt;code&gt;depends_on&lt;/code&gt; mostrada en la configuración anterior.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xdebug no se conecta&lt;/strong&gt;
Confirme que &lt;code&gt;host.docker.internal&lt;/code&gt; se resuelve correctamente dentro del contenedor. En Linux, puede necesitar agregar &lt;code&gt;extra_hosts: - &quot;host.docker.internal:host-gateway&quot;&lt;/code&gt; a la definicion del servicio WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Errores de permisos de archivos&lt;/strong&gt;
Si WordPress no puede escribir en &lt;code&gt;wp-content/uploads&lt;/code&gt;, ajuste los permisos dentro del contenedor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; compose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chown&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -R&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; www-data:www-data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/uploads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;proximos-pasos-para-su-flujo-de-trabajo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proximos-pasos-para-su-flujo-de-trabajo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proximos pasos para su flujo de trabajo&lt;/h2&gt;
&lt;p&gt;Una vez que tenga Docker y Composer funcionando, considere estas adiciones para profesionalizar aun más su configuración:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP-CLI como dependencia de Composer&lt;/strong&gt; para gestión de WordPress mediante scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHPStan o Psalm&lt;/strong&gt; para análisis estatico del código PHP de sus temas y plugins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions o GitLab CI&lt;/strong&gt; para pruebas automatizadas en cada pull request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis o Memcached&lt;/strong&gt; como servicio Docker adicional para cache de objetos durante el desarrollo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traefik o Nginx Proxy&lt;/strong&gt; para gestionar multiples proyectos WordPress locales con dominios personalizados en lugar de números de puerto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La ingenieria WordPress moderna significa tratar su sitio como un producto de software, con builds reproducibles, pruebas automatizadas y despliegues seguros. Las herramientas cubiertas en esta guía, Docker Compose para entornos y Composer con Bedrock para gestión de dependencias, forman la base que todo equipo WordPress serio necesita en 2026.&lt;/p&gt;
&lt;p&gt;En &lt;a href=&quot;https://wppoland.com&quot;&gt;wppoland.com&lt;/a&gt;, construimos y mantenemos proyectos WordPress usando exactamente estos flujos de trabajo. Si su equipo necesita ayuda para modernizar su proceso de desarrollo WordPress, configurar pipelines CI/CD o migrar de configuraciónes heredadas a entornos containerizados, nuestro equipo de ingenieria esta disponible para consultoria e implementación. Los precios son siempre individuales y dependen del alcance de su proyecto.&lt;/p&gt;</content:encoded><category>development</category><category>devops</category><category domain="tag">docker</category><category domain="tag">composer</category><category domain="tag">bedrock</category><category domain="tag">wordpress-local-development</category><category domain="tag">xdebug</category><category domain="tag">deployment</category><category domain="tag">docker-compose</category><category domain="tag">php-development</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>Adam Zielinski y WordPress Playground: del experimento a la infraestructura de IA</title><link>https://wppoland.com/es/adam-zielinski-wordpress-playground-from-experiment-to-ai-infrastructure-2026/</link><guid isPermaLink="true">https://wppoland.com/es/adam-zielinski-wordpress-playground-from-experiment-to-ai-infrastructure-2026/</guid><description>WordPress Playground ya no es solo una herramienta de demostracion. Análisis de como la vision de Adam Zielinski conecta pruebas, espacios de trabajo privados, IA y nuevos flujos de trabajo de WordPress en 2026.</description><pubDate>Sun, 15 Mar 2026 17:03:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion&lt;/h2&gt;
&lt;p&gt;Si hay una persona en WordPress a la que vale la pena seguir de cerca en temas de pruebas, entornos de demostracion e IA en este momento, esa es Adam Zielinski. La razon es sencilla: WordPress Playground ya no parece un proyecto secundario ingenioso para desarrolladores. Esta comenzando a comportarse como una verdadera capa de infraestructura para una parte creciente del ecosistema.&lt;/p&gt;
&lt;p&gt;Esto ya no se trata simplemente de ejecutar WordPress en un navegador. Entre el 10 y el 12 de marzo de 2026, WordPress realizo varios movimientos que encajan en una historia coherente. Primero, Playground se presento como el camino mas rápido para probar WordPress 7.0 beta 4. Luego, el 11 de marzo de 2026, WordPress lanzo &lt;a href=&quot;https://my.wordpress.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;my.WordPress.net&lt;/a&gt;, un entorno WordPress privado y persistente basado en el navegador. Un dia despues, llego &lt;a href=&quot;https://wordpress.org/news/2026/03/wordpress-7-0-beta-5/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress 7.0 Beta 5&lt;/a&gt;. Eso ya no parece un experimento secundario. Parece una dirección estrategica.&lt;/p&gt;
&lt;p&gt;Por eso un artículo sobre Adam Zielinski tiene más sentido como análisis del cambio de producto que como un perfil estándar.&lt;/p&gt;
&lt;p&gt;Hay otra capa de contexto util. Adam Zielinski ya aparece en la sección de ponentes del sitio web oficial de &lt;a href=&quot;https://cmsconf.com/#speakers&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CMS Conf 2026&lt;/a&gt;. Aunque el evento aun no tiene una publicación de blog dedicada a su sesion, la sección oficial de ponentes por si sola es suficiente para demostrar que Playground ya no es un tema de nicho en WordPress. Se esta convirtiendo en parte de una conversacion mas amplia sobre el futuro de las plataformas CMS.&lt;/p&gt;
&lt;h2 id=&quot;puntos-clave-de-un-vistazo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#puntos-clave-de-un-vistazo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Puntos clave de un vistazo&lt;/h2&gt;
&lt;p&gt;Si deseas la versión más corta posible de este artículo, estos son los puntos principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adam Zielinski importa porque Playground ya no es un experimento secundario. Se esta convirtiendo en parte del flujo de trabajo oficial de WordPress.&lt;/li&gt;
&lt;li&gt;my.WordPress.net demuestra que WordPress puede funcionar como un espacio de trabajo privado y persistente en el navegador, no solo como un sitio público en hosting.&lt;/li&gt;
&lt;li&gt;Playground esta ganando importancia para pruebas beta, incorporacion de usuarios, demos de productos, QA y experimentacion segura con IA.&lt;/li&gt;
&lt;li&gt;Para agencias y equipos de software, esto significa costos de prueba más bajos, prueba de valor más rápida y menos friccion al inicio de los proyectos.&lt;/li&gt;
&lt;li&gt;Para SEO, GEO y AEO, el valor real esta en que la experimentacion más economica puede mejorar la estructura, la velocidad de iteracion y la calidad del contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;playground-esta-cambiando-su-rol&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#playground-esta-cambiando-su-rol&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Playground esta cambiando su rol&lt;/h2&gt;
&lt;p&gt;Hasta hace poco, la forma más sencilla de describir WordPress Playground era como un sandbox. Era útil para pruebas rápidas, demos de plugins y educación sin configuración local. Esa descripción sigue siendo cierta, pero desde marzo de 2026 se ha vuelto demasiado limitada.&lt;/p&gt;
&lt;p&gt;La publicación oficial de WordPress sobre &lt;a href=&quot;https://wordpress.org/news/2026/03/announcing-my-wordpress/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;my.WordPress.net&lt;/a&gt; apunta a una ambicion mucho mas amplia. WordPress se ejecuta alli de manera completa y persistente dentro del navegador, sin hosting, registro ni una decision temprana de dominio. Los datos permanecen locales en el navegador y el entorno es privado por defecto. Eso cambia la forma en que las personas pueden pensar sobre WordPress en si.&lt;/p&gt;
&lt;p&gt;En lugar del modelo clásico de “configura un sitio y publicalo al mundo”, aparece un modelo diferente: “entra a WordPress y comienza a trabajar”. Para algunas personas, eso significa un cuaderno, una base de conocimiento o un lector RSS. Para otras, significa un lugar seguro para aprender, probar, hacer pruebas de concepto y experimentar con nuevos flujos de trabajo.&lt;/p&gt;
&lt;p&gt;Aqui es donde el trabajo de Adam Zielinski se vuelve especialmente importante. Playground no resuelve un problema aislado. Reune varios problemas antiguos de WordPress en una respuesta moderna:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;demasiada friccion para nuevos usuarios,&lt;/li&gt;
&lt;li&gt;entornos de demo pesados y costosos para agencias y equipos de producto,&lt;/li&gt;
&lt;li&gt;costos de prueba que siguen siendo demasiado altos para equipos pequeños,&lt;/li&gt;
&lt;li&gt;demasiado riesgo al experimentar con IA en sistemas de producción.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;ya-no-es-solo-una-herramienta-para-desarrolladores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ya-no-es-solo-una-herramienta-para-desarrolladores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ya no es solo una herramienta para desarrolladores&lt;/h2&gt;
&lt;p&gt;La parte más interesante de este cambio es que Playground se esta moviendo más alla de las audiencias puramente técnicas.&lt;/p&gt;
&lt;p&gt;En la publicación oficial sobre &lt;a href=&quot;https://wordpress.org/news/2026/03/wordpress-6-9-3-and-7-0-beta-4/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress 6.9.3 y 7.0 beta 4&lt;/a&gt;, WordPress enumero Playground como una de las formas estándar de probar la versión beta sin configuración. Esa es una señal importante. Si el propio proyecto trata Playground como un entorno de prueba instantaneo para el Core, entonces ya no estamos hablando de una novedad. Estamos hablando de flujo de trabajo.&lt;/p&gt;
&lt;p&gt;Al mismo tiempo, my.WordPress.net muestra un segundo vector: el movimiento de las pruebas hacia un espacio de trabajo privado. La narrativa más amplia de WordPress 7.0 agrega un tercer vector: IA, conectores y nuevos flujos de trabajo de contenido.&lt;/p&gt;
&lt;p&gt;En la práctica, esto crea tres casos de uso muy concretos.&lt;/p&gt;
&lt;h3 id=&quot;1-demos-y-ventas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-demos-y-ventas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Demos y ventas&lt;/h3&gt;
&lt;p&gt;Una agencia o creador de plugins puede mostrar un producto real en funcionamiento sin mantener un servidor de demostracion separado. El clientes no esta viendo diapositivas o una grabacion. Esta haciendo clic en una interfaz real.&lt;/p&gt;
&lt;h3 id=&quot;2-qa-y-soporte&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-qa-y-soporte&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. QA y soporte&lt;/h3&gt;
&lt;p&gt;Los errores se pueden reproducir más rápido porque los equipos no necesitan construir un entorno local desde cero cada vez. Eso puede acortar el diagnóstico de soporte y acelerar las pruebas de regresion.&lt;/p&gt;
&lt;h3 id=&quot;3-ia-sin-riesgo-de-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-ia-sin-riesgo-de-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. IA sin riesgo de producción&lt;/h3&gt;
&lt;p&gt;Si WordPress quiere desarrollar flujos de trabajo de IA nativos, necesita lugares seguros para experimentar, integrar e iterar. Playground es naturalmente adecuado para probar cambios sin tocar sitios en vivo.&lt;/p&gt;
&lt;h2 id=&quot;que-significa-esto-para-seo-geo-y-aeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-esto-para-seo-geo-y-aeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa esto para SEO, GEO y AEO&lt;/h2&gt;
&lt;p&gt;Este tema no debe leerse solo como una historia técnica. Los propietarios de sitios, equipos de contenido y agencias se preocupan cada vez menos por si WordPress tiene “una nueva función” y más por si un cambio hace que la publicación sea más rápida, estructura mejor el contenido, reduce el costo de experimentacion y mejora la visibilidad en búsquedas e interfaces impulsadas por IA.&lt;/p&gt;
&lt;p&gt;Ahi es donde Playground se vuelve genuinamente interesante.&lt;/p&gt;
&lt;h3 id=&quot;seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO&lt;/h3&gt;
&lt;p&gt;Desde una perspectiva SEO clásica, WordPress Playground no es un factor de clasificación en si mismo. No empujara una página más arriba en Google solo porque existe. Lo que puede hacer es mejorar el proceso que conduce a mejores resultados SEO. Si un equipo puede probar estructuras de enlaces internos, variantes de páginas de destino, patrones de bloques, cambios de plantillas o disposiciones de datos estructurados más rápido, puede llegar a mejores decisiones antes.&lt;/p&gt;
&lt;p&gt;En terminos practicos, eso significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pruebas más rápidas de arquitectura de la información,&lt;/li&gt;
&lt;li&gt;evaluación más fácil de variaciones de plantillas de categorías y artículos,&lt;/li&gt;
&lt;li&gt;experimentacion más simple con la implementación de datos estructurados,&lt;/li&gt;
&lt;li&gt;menor riesgo de romper la producción durante el trabajo de SEO técnico.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso no es un atajo de SEO. Es un camino más corto de la hipotesis a la validación.&lt;/p&gt;
&lt;p&gt;Si deseas la perspectiva más amplia de visibilidad, consulta también mi guía sobre &lt;a href=&quot;/es/seo-ai-search-llm-citations-guide-2026/&quot;&gt;búsqueda IA, GEO y optimización de citaciones LLM para WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;geo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#geo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GEO&lt;/h3&gt;
&lt;p&gt;Por GEO aquí me refiero a la visibilidad en entornos de búsqueda generativa, donde los sistemas de IA construyen respuestas a partir de multiples fuentes, citan sitios web, extraen hechos y los conectan con entidades. Para funcionar bien alli, el contenido necesita ser no solo preciso sino también fácil de procesar.&lt;/p&gt;
&lt;p&gt;Playground ayuda porque reduce el costo de experimentar con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;estructuras de preguntas y respuestas,&lt;/li&gt;
&lt;li&gt;secciones de preguntas frecuentes,&lt;/li&gt;
&lt;li&gt;cuadros de datos y resumenes concisos,&lt;/li&gt;
&lt;li&gt;información más clara organizada alrededor de entidades,&lt;/li&gt;
&lt;li&gt;enlaces internos más fuertes entre piezas de contenido experto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para los equipos que quieren crear contenido dirigido a citaciones de IA, la experiencia sola no es suficiente. También necesitan la capacidad de iterar rápidamente en el formato. Un entorno WordPress basado en navegador puede ayudar exactamente con eso.&lt;/p&gt;
&lt;h3 id=&quot;aeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;AEO&lt;/h3&gt;
&lt;p&gt;AEO, u Optimización para Motores de Respuestas, recompensa el contenido que responde de forma clara, rápida y con minima friccion. Un artículo que puede ser escaneado, resumido y citado fácilmente tiene una ventaja obvia sobre uno que es vago, inflado o técnicamente desordenado.&lt;/p&gt;
&lt;p&gt;Desde ese angulo, Playground importa porque soporta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;prototipado más rápido de artículos enfocados en respuestas,&lt;/li&gt;
&lt;li&gt;pruebas de bloques para respuestas concisas y puntos clave,&lt;/li&gt;
&lt;li&gt;construccion de plantillas más modulares para contenido experto,&lt;/li&gt;
&lt;li&gt;experimentacion con flujos de trabajo asistidos por IA sin tocar producción.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De nuevo, nada de esto garantiza el éxito. Pero reduce el costo de alcanzar un mejor modelo de publicación.&lt;/p&gt;
&lt;h2 id=&quot;por-que-esto-importa-para-las-empresas-no-solo-para-los-expertos-en-tecnología&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-esto-importa-para-las-empresas-no-solo-para-los-expertos-en-tecnología&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que esto importa para las empresas, no solo para los expertos en tecnología&lt;/h2&gt;
&lt;p&gt;Muchas personas todavia miran proyectos como este solo a través de la lente de la experiencia del desarrollador. Eso es demasiado limitado. Para empresas y equipos de marketing, el mayor valor puede estar en otra parte.&lt;/p&gt;
&lt;p&gt;Primero, Playground acorta la distancia de la idea al prototipo funcional. Si un equipo quiere probar un flujo de trabajo de contenido, una integración simple o una nueva estructura de página de destino, no necesariamente necesita involucrar un entorno de staging completo inmediatamente.&lt;/p&gt;
&lt;p&gt;Segundo, reduce el costo de entrada a WordPress para personas que previamente se desanimaron con el hosting, la configuración o los entornos locales. Eso importa no solo para el aprendizaje. También importa para la incorporacion, talleres y procesos de ventas.&lt;/p&gt;
&lt;p&gt;Tercero, crea una base solida para nuevos tipos de productos alrededor de WordPress. Si los entornos basados en navegador se vuelven lo suficientemente estables, los equipos pueden construir flujos de incorporacion, tutoriales interactivos, demos específicas de la industria y espacios de trabajo privados más avanzados encima de ellos.&lt;/p&gt;
&lt;p&gt;En ese sentido, la vision de Adam Zielinski no es solo técnica. Es economica. Cambia la estructura de costos de trabajar con WordPress.&lt;/p&gt;
&lt;h2 id=&quot;por-que-esto-va-más-alla-de-wordpress-en-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-esto-va-más-alla-de-wordpress-en-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que esto va más alla de WordPress en si&lt;/h2&gt;
&lt;p&gt;La referencia a &lt;a href=&quot;https://cmsconf.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CMS Conf&lt;/a&gt; importa por otra razon también. Este no es un evento que exista puramente dentro de la burbuja de WordPress. El hecho de que el tema aparezca en una conversacion CMS mas amplia sugiere que Playground esta comenzando a ser visto como una señal de cambio mas amplio.&lt;/p&gt;
&lt;p&gt;El mercado de CMS ha sido jalado entre tres modelos principales durante años:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;el CMS clásico alojado con un panel de administración y flujo de trabajo basado en servidor,&lt;/li&gt;
&lt;li&gt;el CMS headless enfocado en APIs y entrega multicanal,&lt;/li&gt;
&lt;li&gt;entornos más nuevos asistidos por IA donde la velocidad, la orquestacion y la experimentacion importan más que una configuración pesada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Playground no reemplaza todos esos modelos. Lo que hace es cruzarlos de una manera muy interesante. Combina entrada de baja friccion, prototipado rápido, la apertura de WordPress y un camino hacia flujos de trabajo más ricos sin requerir una infraestructura completa desde el primer dia.&lt;/p&gt;
&lt;p&gt;Eso significa que un artículo sobre Adam Zielinski no es solo sobre un proyecto de código abierto. Es sobre como podria verse la proxima generación de trabajo con CMS.&lt;/p&gt;
&lt;h2 id=&quot;que-hay-realmente-de-nuevo-en-esta-vision&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hay-realmente-de-nuevo-en-esta-vision&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hay realmente de nuevo en esta vision&lt;/h2&gt;
&lt;p&gt;El cambio más interesante no es simplemente que Playground pueda hacer más de lo que podia hace un año. El cambio más profundo es que WordPress en si esta comenzando a usarlo como base para movimientos de producto posteriores.&lt;/p&gt;
&lt;p&gt;Puedes ver eso en varios lugares a la vez:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playground soporta pruebas beta del Core,&lt;/li&gt;
&lt;li&gt;my.WordPress.net construye un espacio de trabajo privado encima de el,&lt;/li&gt;
&lt;li&gt;la narrativa de WordPress 7.0 conecta cada vez más la plataforma con la IA y nuevos flujos de trabajo editoriales,&lt;/li&gt;
&lt;li&gt;el navegador se esta convirtiendo en un lugar no solo para consumir contenido sino para crear, aprender y experimentar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Desde esa perspectiva, el enfoque de The Repository sobre un cambio “de herramienta experimental a infraestructura de IA” se siente preciso. Incluso si esto aun no es una capa de plataforma completamente madura, la dirección ya es visible.&lt;/p&gt;
&lt;h2 id=&quot;como-pueden-usarlo-las-empresas-ahora-mismo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-pueden-usarlo-las-empresas-ahora-mismo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como pueden usarlo las empresas ahora mismo&lt;/h2&gt;
&lt;p&gt;Lo mejor de este tipo de cambio es que no tienes que esperar a algun estado futuro final antes de obtener valor de el. Una parte significativa del valor ya esta disponible.&lt;/p&gt;
&lt;h3 id=&quot;pre-ventas-más-rápidas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pre-ventas-más-rápidas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pre-ventas más rápidas&lt;/h3&gt;
&lt;p&gt;En lugar de explicar como funcionara algo despues de la entrega, puedes mostrar un prototipo funcional. Para muchos clientes, esa es la diferencia entre una promesa abstracta y una prueba creible.&lt;/p&gt;
&lt;h3 id=&quot;mejor-incorporacion-del-equipo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejor-incorporacion-del-equipo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejor incorporacion del equipo&lt;/h3&gt;
&lt;p&gt;Un nuevo editor, mercadologo o desarrollador junior puede obtener un entorno seguro para practicar sin el riesgo de danar un proyecto real. Eso acorta la incorporacion y reduce el estres dentro del equipo.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-concepto-más-economicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-concepto-más-economicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de concepto más economicas&lt;/h3&gt;
&lt;p&gt;No toda idea merece un despliegue completo en staging, y ciertamente no exposicion en producción. Playground puede convertirse en una capa de “pre-staging” donde las ideas debiles se rechazan más economicamente y las fuertes se refinan antes.&lt;/p&gt;
&lt;h3 id=&quot;mas-coraje-en-la-experimentacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mas-coraje-en-la-experimentacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mas coraje en la experimentacion&lt;/h3&gt;
&lt;p&gt;Muchas organizaciónes no carecen de ideas. Carecen de lugares seguros para probarlas. Cuando la barrera baja, el número de experimentos utiles generalmente sube. Desde una perspectiva de crecimiento, eso puede importar más que cualquier función nueva individual.&lt;/p&gt;
&lt;h2 id=&quot;donde-vale-la-pena-mantenerse-cauto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-vale-la-pena-mantenerse-cauto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde vale la pena mantenerse cauto&lt;/h2&gt;
&lt;p&gt;Todavia es importante no sobrevender nada de esto. WordPress es bastante claro sobre las limitaciones de my.WordPress.net:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;el almacenamiento inicial es de aproximadamente 100 MB,&lt;/li&gt;
&lt;li&gt;el primer lanzamiento tarda más porque WordPress necesita descargarse e inicializarse,&lt;/li&gt;
&lt;li&gt;los datos son locales al navegador y dispositivo,&lt;/li&gt;
&lt;li&gt;cada dispositivo tiene una instalación separada,&lt;/li&gt;
&lt;li&gt;las copias de seguridad deben descargarse manualmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso significa que Playground no es un reemplazo para el hosting de producción tradicional. No es la respuesta correcta para cada tienda, cada publicación o cada proceso de negocio. Pero no tiene que serlo. Solo necesita convertirse en el mejor lugar para pruebas, aprendizaje, creación rápida de entornos y experimentacion segura.&lt;/p&gt;
&lt;p&gt;Esa es una afirmacion más madura que pretender que todo deberia moverse al navegador inmediatamente.&lt;/p&gt;
&lt;p&gt;Si estas viendo esto desde una perspectiva operativa, también vale la pena combinar Playground con un plan clásico de seguridad en producción, especialmente mis artículos sobre &lt;a href=&quot;/es/wordpress-login-access-recovery-guide-2026/&quot;&gt;inicio de sesion, acceso y recuperacion de WordPress&lt;/a&gt; y &lt;a href=&quot;/es/wordpress-security-performance-guide/&quot;&gt;mejores practicas de seguridad y rendimiento de WordPress&lt;/a&gt;. Juntos, facilitan separar la experimentacion segura de la responsabilidad real de producción.&lt;/p&gt;
&lt;p&gt;También hay tensiones reales que vale la pena reconocer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;algunas agencias necesitaran repensar procesos de entrega establecidos,&lt;/li&gt;
&lt;li&gt;no todos los clientes entenderan la diferencia entre un entorno de navegador y hosting de producción,&lt;/li&gt;
&lt;li&gt;el entusiasmo por la IA puede superar la disciplina de implementación práctica,&lt;/li&gt;
&lt;li&gt;los equipos pueden confundir una demo rápida con preparacion para producción.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esos son riesgos reales, pero no invalidan la dirección. Simplemente muestran que la tecnología a menudo madura más rápido que las organizaciónes que la adoptan.&lt;/p&gt;
&lt;h2 id=&quot;que-vigilar-a-continuacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-vigilar-a-continuacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que vigilar a continuacion&lt;/h2&gt;
&lt;p&gt;Si este tema se desarrolla más en público, incluyendo la aparicion de Adam Zielinski en CMS Conf 2026 y otras conferencias de otono, tres preguntas me parecen especialmente importantes.&lt;/p&gt;
&lt;h3 id=&quot;cual-es-el-camino-del-navegador-a-la-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cual-es-el-camino-del-navegador-a-la-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cual es el camino del navegador a la producción?&lt;/h3&gt;
&lt;p&gt;El mayor valor comercial aparecera cuando un prototipo de Playground pueda pasar a staging o hosting con poca friccion.&lt;/p&gt;
&lt;h3 id=&quot;como-usara-la-ia-los-entornos-aislados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-usara-la-ia-los-entornos-aislados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como usara la IA los entornos aislados?&lt;/h3&gt;
&lt;p&gt;Los sandboxes seguros para agentes, cambios generados y pruebas automatizadas probablemente se convertiran en una de las direcciones de desarrollo más prácticas.&lt;/p&gt;
&lt;h3 id=&quot;cuanto-puede-wordpress-simplificar-la-entrada-para-nuevos-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuanto-puede-wordpress-simplificar-la-entrada-para-nuevos-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuanto puede WordPress simplificar la entrada para nuevos usuarios?&lt;/h3&gt;
&lt;p&gt;Si my.WordPress.net genuinamente reduce la barrera de entrada, podria convertirse en uno de los cambios de producto más importantes en WordPress en años. No porque lo resuelva todo, sino porque cambia el primer contacto con la plataforma.&lt;/p&gt;
&lt;h3 id=&quot;como-afectara-esto-las-operaciones-de-contenido-experto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-afectara-esto-las-operaciones-de-contenido-experto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como afectara esto las operaciones de contenido experto?&lt;/h3&gt;
&lt;p&gt;Esta parte todavia se siente subestimada. Si WordPress proporciona entornos más simples para construir, probar y perfeccionar contenido, entonces la economia de la publicación experta también cambia. Eso importa directamente para las empresas que compiten por visibilidad organica, citaciones de IA y generación de leads a través del contenido.&lt;/p&gt;
&lt;p&gt;Un mejor flujo de trabajo generalmente significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;publicación experta más rápida,&lt;/li&gt;
&lt;li&gt;actualizaciones más fáciles de artículos antiguos,&lt;/li&gt;
&lt;li&gt;estructura de contenido más consistente,&lt;/li&gt;
&lt;li&gt;pruebas más simples de plantillas dirigidas a fragmentos destacados y motores de respuestas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si Adam Zielinski habla mas publicamente sobre esta dimension alrededor de &lt;a href=&quot;https://cmsconf.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CMS Conf 2026&lt;/a&gt;, el angulo comercial y editorial puede resultar ser uno de los mas relevantes para una audiencia mas amplia.&lt;/p&gt;
&lt;h2 id=&quot;por-que-vale-la-pena-seguir-este-tema-ahora-mismo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-vale-la-pena-seguir-este-tema-ahora-mismo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que vale la pena seguir este tema ahora mismo&lt;/h2&gt;
&lt;p&gt;Hay una razon más para tomar esto en serio ahora y no despues. En WordPress, los cambios más importantes a menudo no llegan como un lanzamiento gigante. Vienen como una serie de movimientos más pequeños que parecen modestos en aislamiento pero cambian la lógica de la plataforma cuando se ven juntos.&lt;/p&gt;
&lt;p&gt;Eso es exactamente lo que parece marzo de 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playground se usa para pruebas beta,&lt;/li&gt;
&lt;li&gt;my.WordPress.net introduce un nuevo modelo de entrada para WordPress,&lt;/li&gt;
&lt;li&gt;WordPress 7.0 continua impulsando la narrativa de IA y flujos de trabajo,&lt;/li&gt;
&lt;li&gt;el tema de Adam Zielinski se esta moviendo hacia una conversacion de conferencias y medios más amplia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso no parece accidental. Parece el momento en que un proyecto separado comienza a convertirse en infraestructura estrategica para el ecosistema.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Adam Zielinski importa hoy no solo porque ayudo a crear una tecnología impresionante. Importa porque WordPress esta comenzando a construir capas de producto adicionales encima de esa tecnología.&lt;/p&gt;
&lt;p&gt;En la semana entre el 10 y el 12 de marzo de 2026, WordPress envio una señal muy clara: Playground soporta pruebas del Core, impulsa un espacio de trabajo privado en el navegador y encaja cada vez más naturalmente en la conversacion de IA. Esto ya no es un experimento secundario para un pequeño grupo de desarrolladores. Es un candidato serio para una de las capas más prácticas del WordPress moderno.&lt;/p&gt;
&lt;p&gt;Si quieres entender hacia donde realmente se dirige WordPress en 2026, observar Playground y personas como Adam Zielinski probablemente te ensenara más que simplemente rastrear nuevas listas de bloques o cambios cosmeticos en el administrador.&lt;/p&gt;
&lt;p&gt;Si deseas el contexto técnico más amplio, consulta también mi artículo sobre &lt;a href=&quot;/es/wordpress-playground-guide-2026/&quot;&gt;WordPress Playground&lt;/a&gt; y mi análisis sobre &lt;a href=&quot;/es/wordpress-7-0-complete-guide-ai-integration/&quot;&gt;WordPress 7.0, IA y colaboración en tiempo real&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">adam-zielinski</category><category domain="tag">wordpress-playground</category><category domain="tag">ai</category><category domain="tag">my-wordpress-net</category><category domain="tag">wordpress-7-0</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Optimización de imágenes WordPress y critical CSS: Una guía completa de rendimiento</title><link>https://wppoland.com/es/optimizacion-imagenes-wordpress-critical-css-guia-rendimiento/</link><guid isPermaLink="true">https://wppoland.com/es/optimizacion-imagenes-wordpress-critical-css-guia-rendimiento/</guid><description>Compara los mejores plugins de optimización de imágenes para WordPress, configura la entrega de WebP/AVIF, extrae critical CSS y configura LiteSpeed Cache para puntuaciones máximás en PageSpeed.</description><pubDate>Sun, 15 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;La primera vez que un cliente WooCommerce alojado en Webempresa abrió PageSpeed Insights y vio un LCP de 4,0 s junto a un hero PNG de 200 KB, el diagnóstico llevó treinta segundos y el arreglo una tarde. La conversión del hero a AVIF (Webempresa lleva años con AVIF activo en sus planes LiteSpeed) más &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; llevó la página a 1,4 s de LCP. El lado del CSS fue más difícil: una hoja de estilos de 800 KB de un tema page-builder bloqueaba el renderizado en móvil, y solo la extracción de critical CSS con 12 KB inline bajó el FCP por debajo de un segundo. Estos dos patrones se repiten en casi todos los sitios WordPress españoles que auditamos.&lt;/p&gt;
&lt;p&gt;Esta guía recorre la pipeline que realmente mueve los Core Web Vitals en una instalación WordPress española: elección de formato entre AVIF, WebP y JPEG XL frente a la realidad actual de los navegadores (Safari 16+ entrega AVIF, Chrome decodifica JPEG XL solo tras una flag, Firefox aparcó JPEG XL en 2024); selección de plugin entre ShortPixel, Imagify, Smush y EWWW con los límites de API y particularidades de DPA que cada uno trae bajo RGPD y supervisión de la AEPD; la regla de los 14 KB above-the-fold que viene del TCP slow start, no de una diapositiva de marketing; y los ajustes de LiteSpeed Cache que producen un delta medible de LCP en lugar de placebo. Hosts españoles como Webempresa, Raiola Networks y SiteGround-ES ya soportan AVIF nativamente en planes LiteSpeed, lo cual cambia el cálculo de adopción.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;de-dónde-vienen-realmente-las-pérdidas-de-lcp-y-fcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#de-dónde-vienen-realmente-las-pérdidas-de-lcp-y-fcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;De dónde vienen realmente las pérdidas de LCP y FCP&lt;/h2&gt;
&lt;p&gt;Abre el panel Network en un sitio WordPress español típico alojado en Webempresa, Raiola Networks o Hostalia y verás dos culpables comerse el presupuesto de LCP: una imagen hero de 1-2 MB entregada como JPEG o PNG, y una hoja de estilos principal de 300-800 KB marcada como bloqueante de renderizado. El tercer culpable, fuentes web cargadas sin &lt;code&gt;font-display: swap&lt;/code&gt;, es menor en bytes pero bloquea el paint hasta que llegan.&lt;/p&gt;
&lt;p&gt;La imagen hero es el objetivo obvio porque LCP, por definición, es el elemento visible más grande sobre el pliegue, y en la mayoría de portadas WordPress españolas ese elemento es un JPEG. WebP corta ese archivo aproximadamente un 25-35% con calidad visual equivalente, y AVIF lo corta de nuevo, aterrizando frecuentemente un 40-55% más pequeño que el JPEG original según el contenido. El soporte AVIF es ahora amplio: Chrome desde la 85, Firefox desde la 93, Safari desde la 16. JPEG XL es el ausente ruidoso: Chromium retiró el flag de decodificación, Firefox lo aparcó indefinidamente, solo Safari lo entrega nativamente, así que para audiencia española no es un formato de producción en 2026.&lt;/p&gt;
&lt;p&gt;El lado del CSS es donde la regla de los 14 KB importa. TCP slow start abre una conexión con unos diez paquetes, alrededor de 14 KB después de cabeceras, antes del primer round-trip de ACK. Inlinea más que eso en tu &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; y estiras el primer paint un RTT completo. Esa es toda la razón por la que los extractores de critical CSS apuntan a un techo de 14 KB y no a un número redondo de una checklist. En operaciones de retail anonimizadas que conocemos (un grupo textil de moda con LCP móvil de 4,2 s antes de la auditoría) cada RTT en 4G español equivalía a una caída medible en la tasa de añadir al carrito.&lt;/p&gt;
&lt;h2 id=&quot;elección-del-plugin-de-optimización-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elección-del-plugin-de-optimización-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elección del plugin de optimización de imágenes&lt;/h2&gt;
&lt;p&gt;Cuatro plugins hacen la mayor parte del trabajo en optimización de imágenes WordPress en 2026, y la elección entre ellos rara vez se reduce solo a la calidad de compresión. Los límites de API, dónde se ejecuta la conversión y qué datos salen de tu servidor importan tanto bajo RGPD y supervisión de la AEPD como el tamaño final del archivo.&lt;/p&gt;
&lt;h3 id=&quot;shortpixel-image-optimizer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#shortpixel-image-optimizer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ShortPixel Image Optimizer&lt;/h3&gt;
&lt;p&gt;ShortPixel comprime a través de su API en la nube y entrega WebP más AVIF como estándar. Tres modos: lossy, glossy, lossless. En sitios con muchas fotografías, el preset glossy aterriza normalmente dentro de unos pocos puntos porcentuales de la calidad visual lossless con la mitad de bytes. La trampa en ejecuciones masivas es el techo de rate de la API: empujar 10 000+ imágenes en un día en un plan pequeño dispara throttling, y el procesador en lote del plugin se repliega en lugar de fallar visiblemente, lo que hace que un lote estancado parezca un lote roto. Ángulo AEPD: ShortPixel tiene encargado de tratamiento publicado, pero los endpoints están parcialmente fuera de la UE, así que el proveedor entra en el registro de actividades de tratamiento.&lt;/p&gt;
&lt;p&gt;Fortalezas principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generación de AVIF en producción desde 2023&lt;/li&gt;
&lt;li&gt;Procesamiento masivo con cola en segundo plano&lt;/li&gt;
&lt;li&gt;Preset glossy como predeterminado práctico para editorial y comercio electrónico&lt;/li&gt;
&lt;li&gt;Precios por cuota e individuales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;imagify&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imagify&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imagify&lt;/h3&gt;
&lt;p&gt;Construido por el equipo detrás de WP Rocket, Imagify se integra perfectamente con ese plugin de caché. Ofrece tres modos de compresión (normal, agresivo, ultra) y genera archivos WebP automáticamente.&lt;/p&gt;
&lt;p&gt;Fortalezas principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integración profunda con WP Rocket para optimización combinada&lt;/li&gt;
&lt;li&gt;Herramienta de comparación visual para previsualizar resultados de compresión&lt;/li&gt;
&lt;li&gt;Redimensionamiento automático de subidas sobredimensionadas&lt;/li&gt;
&lt;li&gt;Generación de WebP con un clic&lt;/li&gt;
&lt;li&gt;Precios basados en cuota (individual, varía según el uso)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;smush&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#smush&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Smush&lt;/h3&gt;
&lt;p&gt;Smush de WPMU DEV es la opción más amigable para principiantes. La versión gratuita maneja compresión básica y lazy loading. La versión Pro añade conversión WebP, entrega CDN y optimización más agresiva.&lt;/p&gt;
&lt;p&gt;Fortalezas principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nivel gratuito con imágenes ilimitadas (hasta 5 MB cada una)&lt;/li&gt;
&lt;li&gt;Lazy loading integrado&lt;/li&gt;
&lt;li&gt;CDN incluido con Pro&lt;/li&gt;
&lt;li&gt;Smush a nivel de directorio para imágenes fuera de la biblioteca de medios&lt;/li&gt;
&lt;li&gt;Precios Pro varían según el plan&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ewww-image-optimizer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ewww-image-optimizer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;EWWW Image Optimizer&lt;/h3&gt;
&lt;p&gt;EWWW es el único plugin de esta lista que puede correr enteramente en el servidor sin un API externo. Eso cuenta bajo RGPD: ninguna transferencia a tercer país de imágenes subidas, ningún encargado de tratamiento adicional necesario, ninguna entrada en el registro de actividades de tratamiento por un procesador SaaS de imágenes, una ventaja clara en revisiones de la AEPD. El modo local usa jpegoptim, optipng, pngquant y cwebp invocados desde PHP, así que los binarios deben estar en disco; en hosts españoles compartidos como Webempresa y Raiola Networks es una conversación corta con soporte.&lt;/p&gt;
&lt;p&gt;Fortalezas principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modo de compresión local sin viaje de ida y vuelta a la nube&lt;/li&gt;
&lt;li&gt;Conversión WebP y AVIF&lt;/li&gt;
&lt;li&gt;Opción CDN ExactDN con entrega por negociación de contenido&lt;/li&gt;
&lt;li&gt;Comandos WP-CLI para ejecuciones masivas via cron&lt;/li&gt;
&lt;li&gt;Precios varían según el modo, local es gratuito, planes API son individuales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;comparación-de-plugins-de-un-vistazo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-plugins-de-un-vistazo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de plugins de un vistazo&lt;/h3&gt;






















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Funcionalidad&lt;/th&gt;&lt;th&gt;ShortPixel&lt;/th&gt;&lt;th&gt;Imagify&lt;/th&gt;&lt;th&gt;Smush&lt;/th&gt;&lt;th&gt;EWWW&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Soporte WebP&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;Solo Pro&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Soporte AVIF&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Compresión local&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Procesamiento masivo&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Integración WP Rocket&lt;/td&gt;&lt;td&gt;Básica&lt;/td&gt;&lt;td&gt;Nativa&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Básica&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Nivel gratuito&lt;/td&gt;&lt;td&gt;100 imágenes/mes&lt;/td&gt;&lt;td&gt;20 MB/mes&lt;/td&gt;&lt;td&gt;Ilimitado (limitado)&lt;/td&gt;&lt;td&gt;Modo local&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para la mayoría de los sitios WordPress profesionales, ShortPixel o EWWW ofrecen la mejor combinación de soporte de formatos, calidad de compresión y flexibilidad.&lt;/p&gt;
&lt;h2 id=&quot;configurar-la-entrega-de-webp-y-avif&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-la-entrega-de-webp-y-avif&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar la entrega de WebP y AVIF&lt;/h2&gt;
&lt;p&gt;Instalar un plugin de optimización es solo la mitad del trabajo. También necesitas asegurar que los navegadores realmente reciban el formato moderno en lugar del JPEG o PNG original.&lt;/p&gt;
&lt;h3 id=&quot;método-1-reescritura-del-elemento-picture&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-reescritura-del-elemento-picture&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Reescritura del elemento picture&lt;/h3&gt;
&lt;p&gt;El enfoque más fiable usa el elemento HTML &lt;code&gt;&amp;#x3C;picture&gt;&lt;/code&gt; para ofrecer múltiples formatos con respaldo automático:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image.avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Descripción&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;800&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;600&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La mayoría de los plugins de optimización gestionan esta reescritura automáticamente. ShortPixel y EWWW insertan etiquetas &lt;code&gt;&amp;#x3C;picture&gt;&lt;/code&gt; cuando se configuran para ello.&lt;/p&gt;
&lt;h3 id=&quot;método-2-negociación-de-contenido-vía-htaccess&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-negociación-de-contenido-vía-htaccess&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Negociación de contenido vía .htaccess&lt;/h3&gt;
&lt;p&gt;Si tu servidor ejecuta Apache o LiteSpeed, puedes servir archivos WebP de forma transparente usando negociación de contenido. El navegador envía una cabecera &lt;code&gt;Accept&lt;/code&gt; listando formatos soportados, y el servidor responde con el mejor archivo disponible:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_rewrite.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  # Servir AVIF si está disponible y soportado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_ACCEPT}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; image/avif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; (.+)\.(jpe?g|png|gif)$&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}.avif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; (.+)\.(jpe?g|png|gif)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; $1.$2.avif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [T=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;image/avif,E=REQUEST_image,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  # Servir WebP si está disponible y soportado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_ACCEPT}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; image/webp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; (.+)\.(jpe?g|png|gif)$&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}.webp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; (.+)\.(jpe?g|png|gif)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; $1.$2.webp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [T=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;image/webp,E=REQUEST_image,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; append Vary Accept env=REQUEST_image&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este enfoque es invisible para tu HTML y funciona con cualquier tema o constructor de páginas.&lt;/p&gt;
&lt;h3 id=&quot;método-3-filtro-wordpress-para-control-programático&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-filtro-wordpress-para-control-programático&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Filtro WordPress para control programático&lt;/h3&gt;
&lt;p&gt;Para desarrolladores que desean control preciso, puedes filtrar la salida de imágenes a nivel de PHP:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_image_attributes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WP_Post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attachment)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $webp_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;(jpe?g|png)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/i&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.webp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $upload_dir &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_upload_dir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $webp_path &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($upload_dir[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;baseurl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], $upload_dir[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;basedir&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], $webp_url);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;file_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($webp_path)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $webp_url;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;srcset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;srcset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;(jpe?g|png)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/i&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.webp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;srcset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;limpiar-los-tamaños-de-imagen-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limpiar-los-tamaños-de-imagen-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limpiar los tamaños de imagen de WordPress&lt;/h2&gt;
&lt;p&gt;WordPress y WooCommerce registran númerosos tamaños de imagen por defecto. Cada imagen subida genera una copia en cada tamaño registrado, consumiendo almacenamiento y ralentizando la optimización masiva. Eliminar tamaños que no usas es una victoria rápida.&lt;/p&gt;
&lt;h3 id=&quot;eliminar-tamaños-predeterminados-no-utilizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminar-tamaños-predeterminados-no-utilizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminar tamaños predeterminados no utilizados&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar tamaños que no utilizas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;1536x1536&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;2048x2048&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;intermediate_image_sizes_advanced&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $sizes)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Conservar solo los tamaños que tu tema realmente usa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $remove &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;medium_large&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($remove &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $size) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sizes[$size]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $sizes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;registrar-solo-lo-que-necesitas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#registrar-solo-lo-que-necesitas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Registrar solo lo que necesitas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero-banner&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;630&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;card-thumb&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;logo-small&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;establecer-dimensiones-máximás-de-subida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#establecer-dimensiones-máximás-de-subida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Establecer dimensiones máximás de subida&lt;/h3&gt;
&lt;p&gt;Evita que los usuarios suban originales de 6000 px que desperdician almacenamiento y tiempo de procesamiento:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_handle_upload&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $upload)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $max_width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $max_height &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str_starts_with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($upload[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $upload;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_image_editor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($upload[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;file&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($image)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $upload;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($size[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;width&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $max_width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $size[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;height&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $max_height) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;resize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($max_width, $max_height, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;save&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($upload[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;file&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $upload;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;entender-el-critical-css-y-los-recursos-que-bloquean-el-renderizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entender-el-critical-css-y-los-recursos-que-bloquean-el-renderizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entender el critical CSS y los recursos que bloquean el renderizado&lt;/h2&gt;
&lt;p&gt;Cuando un navegador carga una página WordPress, debe descargar y analizar la hoja de estilos CSS completa antes de renderizar cualquier cosa en pantalla. En un sitio WordPress típico con un tema de constructor de páginas, esa hoja de estilos puede ser de 300-500 KB de CSS, la mayor parte del cual se aplica a elementos debajo del pliegue o en páginas completamente diferentes.&lt;/p&gt;
&lt;p&gt;El critical CSS resuelve esto extrayendo solo los estilos necesarios para el contenido visible sin desplazamiento e insertándolos directamente inline en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; del HTML. La hoja de estilos completa se carga entonces de forma asíncrona, eliminándola de la ruta crítica de renderizado.&lt;/p&gt;
&lt;h3 id=&quot;cómo-funciona-la-extracción-de-critical-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-funciona-la-extracción-de-critical-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo funciona la extracción de critical CSS&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Una herramienta renderiza la página en un navegador headless a un tamaño de viewport estándar (típicamente 1300x900 para escritorio, 375x812 para móvil).&lt;/li&gt;
&lt;li&gt;Identifica qué reglas CSS se aplican a los elementos visibles en ese viewport.&lt;/li&gt;
&lt;li&gt;Esas reglas se extraen y minifican.&lt;/li&gt;
&lt;li&gt;El CSS extraído se inserta inline en etiquetas &lt;code&gt;&amp;#x3C;style&gt;&lt;/code&gt; en el head del documento.&lt;/li&gt;
&lt;li&gt;La hoja de estilos original se carga con &lt;code&gt;media=&quot;print&quot;&lt;/code&gt; y se cambia a &lt;code&gt;media=&quot;all&quot;&lt;/code&gt; al cargar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;patrón-manual-de-precarga-de-critical-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrón-manual-de-precarga-de-critical-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrón manual de precarga de critical CSS&lt;/h3&gt;
&lt;p&gt;Si no estás usando un plugin que gestióne esto automáticamente, puedes implementar el patrón con un filtro WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $critical_css_file &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_template_directory&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/critical.css&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;file_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($critical_css_file)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $critical_css &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; file_get_contents&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($critical_css_file);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($critical_css &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;style id=&quot;critical-css&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $critical_css &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/style&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;style_loader_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $html, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $handle)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Diferir hojas de estilos no críticas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $defer_handles &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;theme-style&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce-layout&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce-general&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($handle, $defer_handles, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $html &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &quot;media=&apos;all&apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &quot;media=&apos;print&apos; onload=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;this.media=&apos;all&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $html;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;precargar-recursos-críticos-con-etiquetas-link&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#precargar-recursos-críticos-con-etiquetas-link&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Precargar recursos críticos con etiquetas link&lt;/h3&gt;
&lt;p&gt;Para recursos que el navegador necesita inmediatamente, las pistas de preload le indican que comience la descarga antes de descubrir el recurso naturalmente en el HTML:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Precargar la imagen hero --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/wp-content/uploads/hero.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Precargar fuente crítica --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;font&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/wp-content/themes/theme/fonts/main.woff2&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;font/woff2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; crossorigin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En WordPress, añádelos programáticamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_front_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $hero_image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_template_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/images/hero.webp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;link rel=&quot;preload&quot; as=&quot;image&quot; href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($hero_image) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot; type=&quot;image/webp&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;configurar-litespeed-cache-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-litespeed-cache-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar LiteSpeed Cache para WordPress&lt;/h2&gt;
&lt;p&gt;LiteSpeed Cache es el plugin de caché más rápido disponible para WordPress porque opera a nivel de servidor web en lugar de a través de PHP. Si tu alojamiento ejecuta OpenLiteSpeed o LiteSpeed Enterprise, este plugin se comunica directamente con el motor de caché integrado del servidor, evitando PHP por completo para las solicitudes en caché.&lt;/p&gt;
&lt;h3 id=&quot;configuración-esencial-de-litespeed-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-esencial-de-litespeed-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración esencial de LiteSpeed Cache&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Caché de página&lt;/strong&gt; (pestaña Cache):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Activar caché: Activo&lt;/li&gt;
&lt;li&gt;Caché de usuarios autenticados: Inactivo (a menos que tengas contenido de membresía)&lt;/li&gt;
&lt;li&gt;Caché móvil: Activo (con caché separada para móviles si tu tema sirve markup diferente)&lt;/li&gt;
&lt;li&gt;TTL: 604800 (7 días para sitios con contenido estático), 86400 (1 día para sitios actualizados frecuentemente)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Caché del navegador&lt;/strong&gt; (pestaña Cache):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Caché del navegador: Activo&lt;/li&gt;
&lt;li&gt;TTL de caché del navegador: 31557600 (1 año, confía en nombres de archivo versiónados para invalidar caché)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Caché de objetos&lt;/strong&gt; (pestaña Cache):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Caché de objetos: Activo (requiere Redis o Memcached en tu servidor)&lt;/li&gt;
&lt;li&gt;TTL de caché de objetos: 3600&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-de-optimización-cssjs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-optimización-cssjs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de optimización CSS/JS&lt;/h3&gt;
&lt;p&gt;Navega a LiteSpeed Cache, luego Optimización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Minificación CSS: Activo&lt;/li&gt;
&lt;li&gt;Combinación CSS: Activo (prueba cuidadosamente, puede romper algunos temas)&lt;/li&gt;
&lt;li&gt;Generar critical CSS: Activo&lt;/li&gt;
&lt;li&gt;Carga asíncrona CSS: Activo&lt;/li&gt;
&lt;li&gt;Minificación JS: Activo&lt;/li&gt;
&lt;li&gt;Combinación JS: Inactivo (causa problemas frecuentemente, prueba antes de activar)&lt;/li&gt;
&lt;li&gt;Diferimiento JS: Activo&lt;/li&gt;
&lt;li&gt;Inline JS después de DOM Ready: Activo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-de-imágenes-en-litespeed-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-imágenes-en-litespeed-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de imágenes en LiteSpeed Cache&lt;/h3&gt;
&lt;p&gt;LiteSpeed Cache incluye su propio servicio de optimización de imágenes a través de QUIC.cloud:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reemplazo de imágenes WebP: Activo&lt;/li&gt;
&lt;li&gt;Lazy load de imágenes: Activo&lt;/li&gt;
&lt;li&gt;Placeholder responsivo: Activo&lt;/li&gt;
&lt;li&gt;Imágenes del viewport (primeras N imágenes excluidas del lazy load): 2-3&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reglas-htaccess-de-litespeed-para-caché-del-navegador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reglas-htaccess-de-litespeed-para-caché-del-navegador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reglas .htaccess de LiteSpeed para caché del navegador&lt;/h3&gt;
&lt;p&gt;Añade estas reglas a tu &lt;code&gt;.htaccess&lt;/code&gt; para cabeceras de caché a nivel de servidor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# LiteSpeed caché del navegador y compresión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_expires.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresActive&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/webp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/avif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/jpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/png&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/svg+xml&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; text/css&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; application/javascript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; font/woff2 &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; font/woff &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_deflate.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text/css&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;application/javascript&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;application/json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;image/svg+xml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE font/woff&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Cabeceras de seguridad que también mejoran el rendimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; X-Content-Type-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;nosniff&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Referrer-Policy &quot;strict-origin-when-cross-origin&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Permissions-Policy &quot;interest-cohort=()&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configuración-del-crawler-de-litespeed&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-del-crawler-de-litespeed&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración del crawler de LiteSpeed&lt;/h3&gt;
&lt;p&gt;El crawler mantiene la caché caliente visitando páginas antes que los usuarios reales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crawler: Activo&lt;/li&gt;
&lt;li&gt;Duración de ejecución: 200 (segundos)&lt;/li&gt;
&lt;li&gt;Intervalo entre ejecuciones: 600 (segundos)&lt;/li&gt;
&lt;li&gt;Retraso de crawl: 500 (milisegundos)&lt;/li&gt;
&lt;li&gt;Límite de carga del servidor: 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Establece estos valores de forma conservadora en alojamiento compartido. En un servidor dedicado o VPS, puedes aumentar la duración y reducir el intervalo.&lt;/p&gt;
&lt;h2 id=&quot;medir-resultados-con-pagespeed-insights&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medir-resultados-con-pagespeed-insights&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medir resultados con PageSpeed Insights&lt;/h2&gt;
&lt;p&gt;Optimización sin medición es adivinanza. Google PageSpeed Insights proporciona tanto datos de laboratorio (pruebas simuladas) como datos de campo (métricas reales de usuarios del Chrome User Experience Report).&lt;/p&gt;
&lt;h3 id=&quot;qué-verificar-después-de-la-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-verificar-después-de-la-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué verificar después de la optimización&lt;/h3&gt;
&lt;p&gt;Ejecuta PageSpeed Insights en tus páginas clave y verifica estos elementos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Auditorías aprobadas&lt;/strong&gt; (verde):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Servir imágenes en formatos de nueva generación” debería aprobarse si WebP/AVIF está configurado&lt;/li&gt;
&lt;li&gt;“Codificar imágenes eficientemente” debería aprobarse después de la compresión&lt;/li&gt;
&lt;li&gt;“Dimensionar imágenes correctamente” debería aprobarse si eliminaste tamaños no utilizados&lt;/li&gt;
&lt;li&gt;“Eliminar recursos que bloquean el renderizado” debería aprobarse con critical CSS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Core Web Vitals:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Objetivo LCP: por debajo de 2,5 segundos&lt;/li&gt;
&lt;li&gt;Objetivo CLS: por debajo de 0,1&lt;/li&gt;
&lt;li&gt;Objetivo INP: por debajo de 200 milisegundos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;usar-chrome-devtools-para-verificar-la-entrega-de-formatos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usar-chrome-devtools-para-verificar-la-entrega-de-formatos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usar Chrome DevTools para verificar la entrega de formatos&lt;/h3&gt;
&lt;p&gt;Abre DevTools (F12), ve a la pestaña Network y filtra por “Img”. Verifica la columna “Type”: deberías ver &lt;code&gt;webp&lt;/code&gt; o &lt;code&gt;avif&lt;/code&gt; en lugar de &lt;code&gt;jpeg&lt;/code&gt; o &lt;code&gt;png&lt;/code&gt;. Si aún ves formatos originales, tus reglas de reescritura o la configuración del plugin necesita ajuste.&lt;/p&gt;
&lt;h3 id=&quot;presupuesto-de-rendimiento-de-lighthouse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#presupuesto-de-rendimiento-de-lighthouse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Presupuesto de rendimiento de Lighthouse&lt;/h3&gt;
&lt;p&gt;Configura un presupuesto de rendimiento para detectar regresiones:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;resourceSizes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;resourceType&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;budget&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;resourceType&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;budget&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;resourceType&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;script&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;budget&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;resourceType&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;total&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;budget&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los valores están en kilobytes. Este presupuesto asegura que el peso total de la página se mantiene por debajo de 800 KB, con imágenes limitadas a 300 KB.&lt;/p&gt;
&lt;h2 id=&quot;técnicas-avanzadas-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#técnicas-avanzadas-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Técnicas avanzadas para 2026&lt;/h2&gt;
&lt;h3 id=&quot;fetchpriority-para-imágenes-hero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fetchpriority-para-imágenes-hero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fetchpriority para imágenes hero&lt;/h3&gt;
&lt;p&gt;El atributo &lt;code&gt;fetchpriority&lt;/code&gt; indica al navegador qué imágenes priorizar durante la carga. Aplícalo a tu imagen LCP:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hero.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Banner hero&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1200&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;630&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;     fetchpriority&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;high&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; decoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;async&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En WordPress, puedes añadir este atributo con un filtro:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_image_attributes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WP_Post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attachment, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $size)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;hero-banner&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_front_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fetchpriority&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;high&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;decoding&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;async&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar lazy loading del hero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;content-visibility-para-secciones-debajo-del-pliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#content-visibility-para-secciones-debajo-del-pliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Content-visibility para secciones debajo del pliegue&lt;/h3&gt;
&lt;p&gt;La propiedad CSS &lt;code&gt;content-visibility&lt;/code&gt; permite al navegador saltar el renderizado de secciones fuera de pantalla hasta que sean necesarias:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.below-fold-section&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  content-visibility&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  contain-intrinsic-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto reduce significativamente el trabajo inicial de renderizado en páginas largas con muchas imágenes.&lt;/p&gt;
&lt;h3 id=&quot;imágenes-responsivas-con-art-direction&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-responsivas-con-art-direction&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes responsivas con art direction&lt;/h3&gt;
&lt;p&gt;Para imágenes que necesitan diferentes recortes en diferentes breakpoints, usa el elemento &lt;code&gt;&amp;#x3C;picture&gt;&lt;/code&gt; con media queries:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;(max-width: 640px)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hero-mobile.avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;(max-width: 640px)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hero-mobile.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hero-desktop.avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hero-desktop.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hero-desktop.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Imagen hero&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1200&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;630&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;lista-de-verificación-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación de rendimiento&lt;/h2&gt;
&lt;p&gt;Usa esta lista de verificación para confirmar que tu implementación está completa:&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Plugin de optimización de imágenes instalado y configurado&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Generación WebP activada para todas las subidas nuevas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Generación AVIF activada (si el plugin lo soporta)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Optimización masiva ejecutada en la biblioteca de medios existente&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Tamaños de imagen no utilizados eliminados&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Dimensiones máximás de subida establecidas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Reglas de reescritura WebP/AVIF en .htaccess implementadas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Extracción de critical CSS activada&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Hojas de estilos no críticas diferidas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Imagen hero precargada con &lt;code&gt;&amp;#x3C;link rel=&quot;preload&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Imagen hero marcada con &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Caché de página de LiteSpeed Cache activada&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Caché del navegador de LiteSpeed Cache activada&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Optimización CSS/JS de LiteSpeed Cache configurada&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Crawler configurado y en ejecución&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Puntuación PageSpeed Insights verificada en 90+&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Entrega WebP/AVIF confirmada en DevTools&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;dos-casos-que-mapean-la-pipeline-a-números&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dos-casos-que-mapean-la-pipeline-a-números&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dos casos que mapean la pipeline a números&lt;/h2&gt;
&lt;p&gt;El primer caso fue una tienda WooCommerce de un grupo textil de moda anonimizado en hosting compartido español que servía un hero PNG de 200 KB, un carrusel de 1,2 MB de JPEGs no optimizados, y una hoja de estilos de page-builder de unos 600 KB en cada página. Los datos de campo mostraban LCP móvil en 4,0 s, FCP en 2,8 s, y la tienda perdía conversiones del tráfico de campañas Google Shopping en rebajas porque las páginas de producto tardaban demasiado. Convertimos el hero a AVIF (28 KB después de compresión glossy en ShortPixel), añadimos &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; y un &lt;code&gt;&amp;#x3C;link rel=&quot;preload&quot;&gt;&lt;/code&gt; correspondiente, regeneramos miniaturas en los tamaños que el tema realmente usaba, y corrimos el bulk de ShortPixel sobre el catálogo. El LCP bajó a 1,4 s sin tocar CSS, y el porcentaje de añadir al carrito en móvil se recuperó dentro de la primera semana.&lt;/p&gt;
&lt;p&gt;El segundo caso era el opuesto: las imágenes ya eran AVIF, pero el FCP se negaba a bajar de 2,4 s en móvil. El único culpable bloqueador de renderizado era un main.css de 800 KB que contenía cada módulo de page-builder que el sitio nunca usó. Extrajimos critical CSS para la portada y tres plantillas de landing con Penthouse, inlineamos 12 KB en el head, deferimos el resto con el patrón de intercambio &lt;code&gt;media=&quot;print&quot;&lt;/code&gt;, y añadimos &lt;code&gt;font-display: swap&lt;/code&gt; a las declaraciones WOFF2. El FCP bajó unos 600 ms en un perfil Android mid-tier limitado, y el panel de WP Rocket dejó de marcar “elimina recursos bloqueadores de renderizado”.&lt;/p&gt;
&lt;p&gt;El patrón merece nombre explícito: cuando el LCP es la métrica que falla, el arreglo es casi siempre del lado de la imagen; cuando el FCP falla mientras el LCP es aceptable, el arreglo es del lado del CSS. Las herramientas que juntan los dos producen mejoras vagas; tratarlos como cuellos de botella separados produce mejoras medibles.&lt;/p&gt;
&lt;h2 id=&quot;qué-hacen-realmente-wp-rocket-flyingpress-y-perfmatters&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hacen-realmente-wp-rocket-flyingpress-y-perfmatters&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué hacen realmente WP Rocket, FlyingPress y Perfmatters&lt;/h2&gt;
&lt;p&gt;Estos tres plugins no son intercambiables, y las páginas de marketing tienden a oscurecer eso. WP Rocket agrupa caché de página, concatenación y defer de CSS/JS, lazy loading y un hook de integración para Imagify; su extracción de critical CSS (RUCSS) corre en el lado del servidor en SaaSWP y se repliega graciosamente si la extracción falla. FlyingPress se enfoca en servir fuentes localmente, inline critical CSS por plantilla y eliminar CSS no utilizado al nivel de URL en lugar de al nivel del sitio, que es el mejor modelo para sitios con layouts variados. Perfmatters no cachea: desactiva funcionalidades de WordPress que el sitio no necesita (heartbeat polling, scripts de emoji, embed.js, endpoints REST) y añade hints preconnect, prefetch y DNS-prefetch. Los tres se apilan limpiamente: Perfmatters poda, FlyingPress o WP Rocket manejan CSS y caché, un plugin de imágenes maneja AVIF.&lt;/p&gt;
&lt;p&gt;Si el host es OpenLiteSpeed o LiteSpeed Enterprise (planes LiteSpeed de Webempresa y Raiola Networks), la cuenta cambia. LiteSpeed Cache se comunica con el módulo de caché incorporado en el servidor y se salta PHP enteramente en cache hits, lo cual es más rápido que cualquier plugin corriendo dentro de PHP puede ser. La contrapartida es que QUIC.cloud maneja critical CSS y conversión de imágenes off-site, lo cual tiene sus propias implicaciones bajo RGPD: encargado de tratamiento con QUIC.cloud, entrada en el registro de actividades, y evaluación de transferencia si el tráfico sale de la UE.&lt;/p&gt;
&lt;p&gt;Para CDNs de imagen con presencia española: Cloudinary publica encargado de tratamiento con cláusulas contractuales tipo, pero el endpoint por defecto está fuera de la UE; ImageKit ofrece un endpoint de región UE con encargado de tratamiento, lo que reduce el esfuerzo de transferencia a tercer país bajo la guía de la AEPD. La AEPD también ha publicado criterios sobre el uso de cookies de CDN de terceros, así que conviene revisar la categorización de cookies de los CDN de imagen antes de habilitarlos en producción.&lt;/p&gt;
&lt;h2 id=&quot;resultados-de-la-pipeline&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resultados-de-la-pipeline&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resultados de la pipeline&lt;/h2&gt;
&lt;p&gt;En trabajo reciente con clientes el patrón aterriza en este rango. Trata los números como un sobre aproximado en lugar de garantía, dado que la condición inicial importa más que la intervención.&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Antes&lt;/th&gt;&lt;th&gt;Después&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Puntuación PageSpeed móvil&lt;/td&gt;&lt;td&gt;35-55&lt;/td&gt;&lt;td&gt;90-98&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LCP&lt;/td&gt;&lt;td&gt;4,5-8 s&lt;/td&gt;&lt;td&gt;1,2-2,0 s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso total de la página&lt;/td&gt;&lt;td&gt;3-6 MB&lt;/td&gt;&lt;td&gt;400-800 KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Número de solicitudes&lt;/td&gt;&lt;td&gt;80-120&lt;/td&gt;&lt;td&gt;25-40&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTFB&lt;/td&gt;&lt;td&gt;800 ms+&lt;/td&gt;&lt;td&gt;150-300 ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La combinación de formatos de imagen modernos, critical CSS y configuración adecuada de caché aborda tres cuellos de botella independientes: tamaño de archivo, bloqueo del renderizado y tiempo de respuesta del servidor. Ninguno sustituye a los otros.&lt;/p&gt;
&lt;h2 id=&quot;dónde-encaja-wppolandcom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-encaja-wppolandcom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde encaja wppoland.com&lt;/h2&gt;
&lt;p&gt;Corremos esta pipeline en sitios WordPress y WooCommerce en producción: configuración de LiteSpeed a nivel de servidor, extracción de critical CSS con limpieza manual desde la pestaña Coverage donde Penthouse pierde un selector, entrega AVIF con negociación de contenido, y un rastro de auditoría en los datos de campo de PageSpeed Insights para que los cambios aguanten bajo tráfico real de CrUX. Los precios son individuales y dependen del tamaño de la biblioteca de medios, la huella del page-builder y cuánto del trabajo es migración frente a optimización en sitio. Si las puntuaciones de PageSpeed están bloqueando las posiciones de los sitios, &lt;a href=&quot;https://wppoland.com/es/contacto/&quot;&gt;contacta con nosotros para una auditoría de rendimiento&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>wordpress</category><category>performance</category><category>development</category><category domain="tag">image-optimisation</category><category domain="tag">webp</category><category domain="tag">avif</category><category domain="tag">critical-css</category><category domain="tag">litespeed-cache</category><category domain="tag">page-speed</category><category domain="tag">wordpress-performance</category><category domain="tag">shortpixel</category><category domain="tag">imagify</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>Flujo de trabajo staging en WordPress: del desarrollo local al despliegue en producción</title><link>https://wppoland.com/es/wordpress-staging-guia-flujo-trabajo/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-staging-guia-flujo-trabajo/</guid><description>Aprende a crear un sitio staging en WordPress, pasar staging a producción de forma segura y desplegar desde el desarrollo local. Cubre staging en hosting, plugins, WP-CLI, flujos de trabajo git y CI/CD con GitHub Actions.</description><pubDate>Sun, 15 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Todo sitio WordPress, desde un blog personal hasta una tienda WooCommerce de nivel empresarial, necesita un entorno staging. Hacer cambios directamente en un sitio web activo es la mayor fuente de tiempo de inactividad evitable en el ecosistema WordPress. Un sitio staging te da una copia privada de tu entorno de producción donde puedes probar actualizaciones, depurar problemas y desarrollar nuevas funcionalidades sin ningún riesgo para tus visitantes.&lt;/p&gt;
&lt;p&gt;Esta guía te lleva a través de cada enfoque práctico para crear un sitio staging, pasar staging a producción de forma segura y construir un pipeline de despliegue profesional que escala desde un solo sitio hasta docenas de proyectos de clientes.&lt;/p&gt;
&lt;h2 id=&quot;por-qué-todo-sitio-wordpress-necesita-un-entorno-staging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-todo-sitio-wordpress-necesita-un-entorno-staging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué todo sitio WordPress necesita un entorno staging&lt;/h2&gt;
&lt;p&gt;El panel de administración de WordPress hace tentador hacer clic en “Actualizar” en plugins y temas sin pensarlo dos veces. Pero una sola actualización de plugin incompatible puede romper el diseño de tu sitio, hacer fallar el checkout de WooCommerce o incluso provocar una pantalla blanca de la muerte. En un sitio activo, eso significa ingresos perdidos y confianza dañada.&lt;/p&gt;
&lt;p&gt;Un entorno staging resuelve esto proporcionando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Campo de pruebas seguro&lt;/strong&gt; - prueba actualizaciones de plugins, cambios de versión PHP y modificaciones de temas sin tocar producción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Espacio de revisión del clientes&lt;/strong&gt; - permite que los clientes aprueben cambios de diseño en una instancia WordPress real antes de que nada vaya a producción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Espacio de trabajo de desarrollo&lt;/strong&gt; - construye funcionalidad personalizada, prueba integraciones REST API y experimenta con nuevos bloques de forma aislada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red de seguridad para rollback&lt;/strong&gt; - si algo se rompe en staging, producción queda intacta. Si algo se rompe después del despliegue, tienes un estado bueno conocido al que volver.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las agencias WordPress profesionales tratan el staging como una parte innegociable de cada proyecto. El tiempo que inviertes en configurar un flujo de trabajo adecuado se amortiza la primera vez que previene una caída en producción.&lt;/p&gt;
&lt;h2 id=&quot;staging-a-nivel-de-hosting-el-camino-más-rápido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#staging-a-nivel-de-hosting-el-camino-más-rápido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Staging a nivel de hosting: el camino más rápido&lt;/h2&gt;
&lt;p&gt;La mayoría de los alojamientos WordPress gestionados incluyen ahora entornos staging como funcionalidad integrada. Este es el enfoque más sencillo para propietarios de sitios que quieren staging sin tocar la línea de comandos.&lt;/p&gt;
&lt;h3 id=&quot;kinsta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kinsta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Kinsta&lt;/h3&gt;
&lt;p&gt;Kinsta proporciona un entorno staging con un clic para cada sitio en el panel MyKinsta. Crea un clon completo de tu sitio de producción, incluyendo archivos y base de datos, en un subdominio separado. Cuando estés listo, el botón “Push to Live” te permite desplegar todo el entorno staging o transferir selectivamente solo archivos o solo la base de datos.&lt;/p&gt;
&lt;h3 id=&quot;wp-engine&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wp-engine&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WP Engine&lt;/h3&gt;
&lt;p&gt;WP Engine ofrece tres entornos por instalación: Development, Staging y Production. Puedes copiar datos entre entornos en ambas direcciones. Su sistema maneja la reescritura de URLs automáticamente, así que las referencias en la base de datos a tu dominio de producción se actualizan al copiar a staging y viceversa.&lt;/p&gt;
&lt;h3 id=&quot;cloudways&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudways&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cloudways&lt;/h3&gt;
&lt;p&gt;Cloudways proporciona staging a través de sus operaciones “Pull” y “Push”. Clonas tu aplicación de producción a un servidor staging, haces cambios y luego transfieres los cambios de vuelta. Cloudways maneja la sincronización de archivos y la migración de base de datos entre entornos.&lt;/p&gt;
&lt;h3 id=&quot;limitaciones-del-staging-a-nivel-de-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones-del-staging-a-nivel-de-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones del staging a nivel de hosting&lt;/h3&gt;
&lt;p&gt;Aunque las herramientas de staging del hosting son convenientes, tienen limitaciones. Estás atado al flujo de trabajo de ese alojamiento. Las fusiones de bases de datos pueden ser impredecibles si los editores de contenido están publicando activamente en producción mientras trabajas en staging. Y la mayoría de los alojamientos no soportan branching, múltiples entornos staging ni disparadores de despliegue automatizados. Para más control, necesitas enfoques basados en plugins o manuales.&lt;/p&gt;
&lt;h2 id=&quot;staging-basado-en-plugins-sin-ssh-necesario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#staging-basado-en-plugins-sin-ssh-necesario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Staging basado en plugins: sin SSH necesario&lt;/h2&gt;
&lt;p&gt;Si tu alojamiento no ofrece staging, o necesitas una solución más flexible, varios plugins de WordPress pueden crear y gestionar entornos staging directamente desde el panel de administración.&lt;/p&gt;
&lt;h3 id=&quot;wp-staging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wp-staging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WP Staging&lt;/h3&gt;
&lt;p&gt;WP Staging es el plugin de staging más popular en el repositorio de WordPress. La versión gratuita crea un clon staging en un subdirectorio de tu cuenta de alojamiento existente. La versión Pro añade la capacidad de transferir cambios del staging de vuelta a producción.&lt;/p&gt;
&lt;p&gt;Para crear un sitio staging con WP Staging:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instala y activa el plugin WP Staging desde el repositorio de WordPress.&lt;/li&gt;
&lt;li&gt;Navega a WP Staging en la barra lateral del admin y haz clic en “Create Staging Site”.&lt;/li&gt;
&lt;li&gt;Selecciona qué tablas de la base de datos y carpetas incluir en el clon.&lt;/li&gt;
&lt;li&gt;Haz clic en “Start Cloning” y espera a que el proceso finalice.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El sitio staging será accesible en &lt;code&gt;tudominio.com/staging&lt;/code&gt; (o el nombre de subdirectorio que hayas elegido). El plugin añade automáticamente autenticación básica y cabeceras noindex a la copia staging.&lt;/p&gt;
&lt;h3 id=&quot;blogvault&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#blogvault&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;BlogVault&lt;/h3&gt;
&lt;p&gt;BlogVault adopta un enfoque diferente al crear el sitio staging en su propia infraestructura. Esto significa que el staging no consume recursos de tu servidor de producción. BlogVault maneja copias de seguridad, creación de staging y fusiones con un clic. Es particularmente útil para sitios en alojamiento compartido donde los recursos del servidor son limitados.&lt;/p&gt;
&lt;h3 id=&quot;cuando-los-plugins-se-quedan-cortos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-los-plugins-se-quedan-cortos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando los plugins se quedan cortos&lt;/h3&gt;
&lt;p&gt;El staging basado en plugins funciona bien para sitios centrados en contenido con actualizaciones ocasionales. Pero para sitios con desarrollo continuo, plugins personalizados o requisitos de despliegue complejos, eventualmente superarás el enfoque de plugins. Ahí es donde el staging manual con SSH y WP-CLI se vuelve esencial.&lt;/p&gt;
&lt;h2 id=&quot;staging-manual-vía-ssh-y-wp-cli&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#staging-manual-vía-ssh-y-wp-cli&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Staging manual vía SSH y WP-CLI&lt;/h2&gt;
&lt;p&gt;El staging manual te da control total sobre cada aspecto del proceso. Este es el enfoque utilizado por desarrolladores WordPress profesionales y agencias que gestionan múltiples proyectos de clientes.&lt;/p&gt;
&lt;h3 id=&quot;prerrequisitos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prerrequisitos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prerrequisitos&lt;/h3&gt;
&lt;p&gt;Antes de empezar, asegúrate de tener:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acceso SSH a ambos servidores, producción y staging&lt;/li&gt;
&lt;li&gt;WP-CLI instalado en ambos servidores&lt;/li&gt;
&lt;li&gt;Un subdominio staging configurado (ej.: &lt;code&gt;staging.tudominio.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Versiones PHP coincidentes en ambos entornos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-1-sincronizar-archivos-con-rsync&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-sincronizar-archivos-con-rsync&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: sincronizar archivos con rsync&lt;/h3&gt;
&lt;p&gt;Usa &lt;code&gt;rsync&lt;/code&gt; para copiar tus archivos WordPress de producción al servidor staging. Las flags &lt;code&gt;--exclude&lt;/code&gt; impiden copiar archivos específicos del entorno que deben diferir entre staging y producción:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-config.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.htaccess&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-content/cache/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-content/uploads/wpo-cache/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-content/debug.log&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  production:/var/www/html/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  staging:/var/www/staging/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La flag &lt;code&gt;--delete&lt;/code&gt; asegura que los archivos eliminados de producción también se eliminan del staging, manteniendo ambos entornos sincronizados.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-exportar-e-importar-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-exportar-e-importar-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: exportar e importar la base de datos&lt;/h3&gt;
&lt;p&gt;Exporta la base de datos de producción con &lt;code&gt;mysqldump&lt;/code&gt; e impórtala en la base de datos staging:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar base de datos de producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysqldump&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -u&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; production_db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; production_backup.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Importar en base de datos staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -u&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; staging_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; staging_db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; production_backup.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternativamente, usa WP-CLI para manejar la exportación e importación en una sola pipeline:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar de producción, canalizar directamente a staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=production&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=staging&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-3-reemplazar-urls-en-la-base-de-datos-con-search-replace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-reemplazar-urls-en-la-base-de-datos-con-search-replace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: reemplazar URLs en la base de datos con search-replace&lt;/h3&gt;
&lt;p&gt;Este es el paso más crítico. WordPress almacena URLs absolutas en toda la base de datos, en entradas, opciones, datos de widgets y arrays serializados. Un simple buscar y reemplazar SQL corrompe los datos serializados. El comando &lt;code&gt;search-replace&lt;/code&gt; de WP-CLI maneja los datos serializados correctamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://staging.tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --precise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --recurse-objects&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --skip-columns=guid&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Explicación de las flags clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--all-tables&lt;/code&gt; busca en cada tabla, incluidas las creadas por plugins.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--precise&lt;/code&gt; activa un reemplazo más riguroso en datos serializados.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--recurse-objects&lt;/code&gt; maneja objetos serializados profundamente anidados.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--skip-columns=guid&lt;/code&gt; deja la columna GUID sin cambios, como recomienda la documentación de WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-4-limpiar-cachés-y-verificar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-limpiar-cachés-y-verificar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: limpiar cachés y verificar&lt;/h3&gt;
&lt;p&gt;Después de la migración, limpia todas las cachés para asegurar que el sitio staging cargue datos frescos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre el sitio staging en un navegador y verifica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La página de inicio carga correctamente con la URL staging.&lt;/li&gt;
&lt;li&gt;Los enlaces internos apuntan al dominio staging.&lt;/li&gt;
&lt;li&gt;Los archivos multimedia cargan correctamente.&lt;/li&gt;
&lt;li&gt;Los formularios y el proceso de checkout funcionan según lo esperado.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;pasar-staging-a-producción-de-forma-segura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pasar-staging-a-producción-de-forma-segura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pasar staging a producción de forma segura&lt;/h2&gt;
&lt;p&gt;Cuando tus cambios en staging están probados y aprobados, necesitas transferirlos a producción sin tiempo de inactividad. El proceso es esencialmente lo contrario de crear el sitio staging, pero con medidas de seguridad adicionales.&lt;/p&gt;
&lt;h3 id=&quot;lista-de-verificación-antes-del-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-antes-del-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación antes del despliegue&lt;/h3&gt;
&lt;p&gt;Antes de pasar staging a producción:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Crear una copia de seguridad de producción&lt;/strong&gt; - ten siempre un punto de reversión.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Poner producción en modo mantenimiento&lt;/strong&gt; - previene conflictos en la base de datos por actividad simultánea de usuarios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notificar a las partes interesadas&lt;/strong&gt; - informa al equipo de que un despliegue está en curso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Programar durante tráfico bajo&lt;/strong&gt; - minimiza el impacto en visitantes reales.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;desplegar-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desplegar-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desplegar archivos&lt;/h3&gt;
&lt;p&gt;Sincroniza los archivos modificados del staging a producción, nuevamente excluyendo la configuración específica del entorno:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Activar modo mantenimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; maintenance-mode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; activate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Sincronizar archivos de staging a producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-config.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.htaccess&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-content/cache/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-content/uploads/wpo-cache/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  staging:/var/www/staging/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  production:/var/www/html/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;desplegar-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desplegar-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desplegar la base de datos&lt;/h3&gt;
&lt;p&gt;Si tus cambios en staging incluyen modificaciones en la base de datos (nuevas páginas, opciones actualizadas, configuraciónes de plugins), exporta e importa la base de datos staging en producción:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar base de datos staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=staging&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; staging_export.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Importar en producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=production&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; staging_export.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Reemplazar de vuelta a URL de producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://staging.tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --precise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --recurse-objects&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --skip-columns=guid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --ssh=production&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;tareas-posteriores-al-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tareas-posteriores-al-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tareas posteriores al despliegue&lt;/h3&gt;
&lt;p&gt;Después de la importación de la base de datos y search-replace:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Limpiar todas las cachés&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Desactivar modo mantenimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; maintenance-mode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; deactivate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --ssh=production&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verifica el sitio de producción inmediatamente. Comprueba la página de inicio, las páginas de destino principales, el proceso de checkout y los formularios de contacto. Monitoriza los registros de errores durante los primeros 30 minutos después del despliegue.&lt;/p&gt;
&lt;h2 id=&quot;análisis-detallado-del-search-replace-en-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-detallado-del-search-replace-en-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis detallado del search-replace en la base de datos&lt;/h2&gt;
&lt;p&gt;El comando &lt;code&gt;search-replace&lt;/code&gt; de WP-CLI es una de las herramientas más potentes en el kit de herramientas de despliegue WordPress. Más allá de la sustitución básica de URLs, maneja varios escenarios críticos.&lt;/p&gt;
&lt;h3 id=&quot;primero-una-ejecución-de-prueba-dry-run&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#primero-una-ejecución-de-prueba-dry-run&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Primero una ejecución de prueba (dry run)&lt;/h3&gt;
&lt;p&gt;Ejecuta siempre una prueba antes de ejecutar search-replace en producción:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://staging.tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --dry-run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La salida de la prueba muestra exactamente cuántas sustituciones se realizarán en cada tabla, sin modificar ningún dato. Revisa esta salida cuidadosamente antes de ejecutar el comando real.&lt;/p&gt;
&lt;h3 id=&quot;manejo-de-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-de-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo de multisite&lt;/h3&gt;
&lt;p&gt;Para instalaciones WordPress multisite, añade la flag &lt;code&gt;--network&lt;/code&gt; y reemplaza URLs para cada sitio individualmente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;staging.tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --network&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --precise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --recurse-objects&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;reemplazo-de-protocolos-mixtos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reemplazo-de-protocolos-mixtos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reemplazo de protocolos mixtos&lt;/h3&gt;
&lt;p&gt;Si tu sitio staging usa HTTP mientras producción usa HTTPS (o viceversa), ejecuta dos pasadas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;http://staging.tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;//staging.tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;//tudominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto captura URLs relativas al protocolo que algunos plugins y temas generan.&lt;/p&gt;
&lt;h2 id=&quot;flujos-de-trabajo-de-despliegue-basados-en-git&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujos-de-trabajo-de-despliegue-basados-en-git&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujos de trabajo de despliegue basados en git&lt;/h2&gt;
&lt;p&gt;Para equipos que trabajan en temas o plugins personalizados, el control de versiones con git transforma el proceso de despliegue de copia manual propensa a errores en un flujo de trabajo repetible y auditable.&lt;/p&gt;
&lt;h3 id=&quot;estructura-del-repositorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-del-repositorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura del repositorio&lt;/h3&gt;
&lt;p&gt;Un proyecto WordPress típico gestionado con git rastrea solo el código personalizado, no el núcleo de WordPress ni plugins de terceros:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── .github/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── workflows/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│       └── deploy.yml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── wp-content/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── themes/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   │   └── your-theme/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── plugins/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   │   └── your-custom-plugin/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── mu-plugins/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── .gitignore&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── composer.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tu &lt;code&gt;.gitignore&lt;/code&gt; debe excluir archivos del núcleo de WordPress, uploads, directorios de caché y configuración sensible:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Núcleo de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/wp-admin/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/wp-includes/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/wp-*.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/index.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/xmlrpc.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Configuración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Uploads y caché&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wp-content/uploads/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wp-content/cache/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wp-content/upgrade/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Dependencias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;vendor/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;node_modules/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estrategia-de-branches&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-branches&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de branches&lt;/h3&gt;
&lt;p&gt;Una estrategia de branches simple para proyectos WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;main&lt;/code&gt; - código listo para producción, desplegado en el sitio activo.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;staging&lt;/code&gt; - branch de integración, desplegado en el entorno staging.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feature/*&lt;/code&gt; - branches individuales de funcionalidad creados desde &lt;code&gt;staging&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los desarrolladores crean branches de funcionalidad, prueban localmente, abren pull requests hacia &lt;code&gt;staging&lt;/code&gt;, y después de la aprobación, el branch staging se fusiona en &lt;code&gt;main&lt;/code&gt; para el despliegue en producción.&lt;/p&gt;
&lt;h3 id=&quot;desplegar-con-git-en-el-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desplegar-con-git-en-el-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desplegar con git en el servidor&lt;/h3&gt;
&lt;p&gt;Si tu servidor soporta git, puedes hacer pull de los cambios directamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# En el servidor de producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; origin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; origin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Ejecutar composer si es necesario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;composer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --no-dev&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --optimize-autoloader&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Limpiar cachés&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para servidores sin acceso git, usa rsync desde tu máquina local después de hacer checkout del branch que quieres desplegar:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.git/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;node_modules/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.env&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  ./wp-content/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  production:/var/www/html/wp-content/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;fundamentos-de-cicd-para-wordpress-con-github-actions&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fundamentos-de-cicd-para-wordpress-con-github-actions&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fundamentos de CI/CD para WordPress con GitHub Actions&lt;/h2&gt;
&lt;p&gt;Continuous Integration y Continuous Deployment (CI/CD) automatizan todo el flujo de trabajo: cuando haces push de código a un branch específico, un pipeline ejecuta pruebas, verifica la calidad del código y despliega automáticamente en el entorno objetivo.&lt;/p&gt;
&lt;h3 id=&quot;ejemplo-de-flujo-de-trabajo-de-github-actions&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-de-flujo-de-trabajo-de-github-actions&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo de flujo de trabajo de GitHub Actions&lt;/h3&gt;
&lt;p&gt;Crea &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt; en tu repositorio:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  push&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    branches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;jobs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  lint-and-test&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    runs-on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    steps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Checkout code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;actions/checkout@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Set up PHP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;shivammathur/setup-php@v2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          php-versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;8.3&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          tools&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;composer, cs2pr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Install dependencies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;composer install --prefer-dist --no-progress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Run PHP CodeSniffer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;vendor/bin/phpcs --standard=WordPress wp-content/themes/your-theme/ wp-content/plugins/your-custom-plugin/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Run PHPStan&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;vendor/bin/phpstan analyse wp-content/themes/your-theme/ wp-content/plugins/your-custom-plugin/ --level=6&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  deploy-staging&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    needs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;lint-and-test&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;github.ref == &apos;refs/heads/staging&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    runs-on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    steps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Checkout code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;actions/checkout@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy to staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;burnett01/rsync-deployments@7.0.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          switches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;-avz --delete --exclude=&apos;.git/&apos; --exclude=&apos;node_modules/&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp-content/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/var/www/staging/wp-content/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.STAGING_HOST }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.STAGING_USER }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.SSH_PRIVATE_KEY }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Flush staging caches&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;appleboy/ssh-action@v1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.STAGING_HOST }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          username&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.STAGING_USER }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.SSH_PRIVATE_KEY }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            cd /var/www/staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            wp cache flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            wp rewrite flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  deploy-production&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    needs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;lint-and-test&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;github.ref == &apos;refs/heads/main&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    runs-on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    environment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    steps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Checkout code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;actions/checkout@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy to production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;burnett01/rsync-deployments@7.0.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          switches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;-avz --delete --exclude=&apos;.git/&apos; --exclude=&apos;node_modules/&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wp-content/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/var/www/html/wp-content/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.PRODUCTION_HOST }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.PRODUCTION_USER }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          remote_key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.SSH_PRIVATE_KEY }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Flush production caches&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;appleboy/ssh-action@v1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.PRODUCTION_HOST }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          username&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.PRODUCTION_USER }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.SSH_PRIVATE_KEY }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            cd /var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            wp cache flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            wp rewrite flush&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;qué-hace-este-pipeline&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hace-este-pipeline&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué hace este pipeline&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Linting y pruebas&lt;/strong&gt; - cada push activa PHP CodeSniffer (para estándares de codificación WordPress) y PHPStan (para análisis estático). Si alguno falla, el despliegue se bloquea.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue a staging&lt;/strong&gt; - los pushes al branch &lt;code&gt;staging&lt;/code&gt; despliegan automáticamente en el servidor staging vía rsync sobre SSH.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue a producción&lt;/strong&gt; - los pushes a &lt;code&gt;main&lt;/code&gt; despliegan a producción. La configuración &lt;code&gt;environment: production&lt;/code&gt; activa las reglas de protección de entorno de GitHub, para que puedas requerir aprobación manual antes de despliegues en producción.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;configurar-secretos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-secretos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar secretos&lt;/h3&gt;
&lt;p&gt;Almacena tus credenciales SSH como secretos del repositorio GitHub:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;STAGING_HOST&lt;/code&gt; y &lt;code&gt;PRODUCTION_HOST&lt;/code&gt; - direcciones IP o nombres de host de los servidores.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STAGING_USER&lt;/code&gt; y &lt;code&gt;PRODUCTION_USER&lt;/code&gt; - nombres de usuario SSH.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SSH_PRIVATE_KEY&lt;/code&gt; - la clave privada para autenticación SSH.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nunca hagas commit de claves privadas o credenciales en tu repositorio.&lt;/p&gt;
&lt;h2 id=&quot;prevenir-la-indexación-del-staging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prevenir-la-indexación-del-staging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prevenir la indexación del staging&lt;/h2&gt;
&lt;p&gt;Un sitio staging indexado por motores de búsqueda crea problemas de contenido duplicado y puede filtrar trabajo inacabado al público. Múltiples capas de protección aseguran que esto no ocurra.&lt;/p&gt;
&lt;h3 id=&quot;robotstxt&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#robotstxt&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;robots.txt&lt;/h3&gt;
&lt;p&gt;Crea un archivo &lt;code&gt;robots.txt&lt;/code&gt; en el sitio staging que bloquee todos los rastreadores:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Disallow: /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto indica a los rastreadores bien comportados que no indexen ninguna página. Pero no todos los bots respetan robots.txt, así que medidas adicionales son necesarias.&lt;/p&gt;
&lt;h3 id=&quot;ajustes-de-lectura-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ajustes-de-lectura-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ajustes de lectura de WordPress&lt;/h3&gt;
&lt;p&gt;En el admin del sitio staging, navega a Ajustes, luego Lectura, y marca “Disuadir a los motores de búsqueda de indexar este sitio”. Esto añade una meta etiqueta &lt;code&gt;noindex&lt;/code&gt; y una cabecera &lt;code&gt;X-Robots-Tag: noindex&lt;/code&gt; a cada página.&lt;/p&gt;
&lt;h3 id=&quot;cabecera-http-vía-htaccess-o-nginx&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cabecera-http-vía-htaccess-o-nginx&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cabecera HTTP vía .htaccess o Nginx&lt;/h3&gt;
&lt;p&gt;Añade una cabecera noindex a nivel de servidor para protección extra. Para Apache:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# .htaccess en staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; X-Robots-Tag &quot;noindex, nofollow, nosnippet&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para Nginx:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# En el bloque de servidor staging&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;X-Robots-Tag &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;noindex, nofollow, nosnippet&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;autenticación-http-basic&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-http-basic&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación HTTP basic&lt;/h3&gt;
&lt;p&gt;La protección más fiable es restringir el acceso por completo. Añade autenticación HTTP basic para que solo personas autorizadas puedan ver el sitio staging:&lt;/p&gt;
&lt;p&gt;Para Apache, añade al &lt;code&gt;.htaccess&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AuthType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Basic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AuthName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;Staging Access&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AuthUserFile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /path/to/.htpasswd&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Require&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; valid-user&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crea el archivo de contraseñas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;htpasswd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /path/to/.htpasswd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; staging_user&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para Nginx, añade al bloque de servidor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;auth_basic &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Staging Access&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;auth_basic_user_file &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/etc/nginx/.htpasswd;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;lista-de-ips-permitidas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-ips-permitidas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de IPs permitidas&lt;/h3&gt;
&lt;p&gt;Para el nivel más alto de seguridad, restringe el acceso al staging a direcciones IP específicas. Esto es especialmente útil para equipos de agencia que trabajan desde redes de oficina conocidas o VPNs.&lt;/p&gt;
&lt;h2 id=&quot;errores-comunes-y-cómo-evitarlos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-y-cómo-evitarlos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes y cómo evitarlos&lt;/h2&gt;
&lt;h3 id=&quot;olvidar-excluir-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#olvidar-excluir-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Olvidar excluir wp-config.php&lt;/h3&gt;
&lt;p&gt;El archivo &lt;code&gt;wp-config.php&lt;/code&gt; contiene credenciales de base de datos, sales de seguridad y constantes específicas del entorno. Sobrescribir la configuración de producción con la configuración staging es uno de los errores de despliegue más comunes. Exclúyelo siempre del rsync y nunca hagas commit de él en git.&lt;/p&gt;
&lt;h3 id=&quot;corrupción-de-datos-serializados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#corrupción-de-datos-serializados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Corrupción de datos serializados&lt;/h3&gt;
&lt;p&gt;Nunca uses buscar y reemplazar a nivel SQL (ej.: &lt;code&gt;UPDATE wp_options SET option_value = REPLACE(...)&lt;/code&gt;) para cambios de URL. WordPress almacena arrays PHP serializados en la base de datos, y cambiar longitudes de cadenas sin actualizar los metadatos de serialización corrompe los datos. Usa siempre WP-CLI &lt;code&gt;search-replace&lt;/code&gt;, que maneja los datos serializados correctamente.&lt;/p&gt;
&lt;h3 id=&quot;caché-de-objetos-obsoleta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caché-de-objetos-obsoleta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caché de objetos obsoleta&lt;/h3&gt;
&lt;p&gt;Después de cualquier despliegue, limpia la caché de objetos. Si usas Redis o Memcached, los objetos en caché obsoletos pueden servir datos antiguos incluso después de que la base de datos ha sido actualizada:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;redis-cli&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; FLUSHDB&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # si usas Redis&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;contenido-mixto-después-de-la-migración-a-https&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-mixto-después-de-la-migración-a-https&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido mixto después de la migración a HTTPS&lt;/h3&gt;
&lt;p&gt;Si tu sitio staging usa un protocolo diferente al de producción, las advertencias de contenido mixto del navegador pueden romper la carga de CSS y JavaScript. Ejecuta search-replace en URLs relativas al protocolo así como en URLs completas para capturar cada referencia.&lt;/p&gt;
&lt;h3 id=&quot;conflictos-de-cron&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conflictos-de-cron&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conflictos de cron&lt;/h3&gt;
&lt;p&gt;Las tareas cron de WordPress programadas en staging (como publicaciónes programadas o correos electrónicos automáticos) pueden dispararse en el dominio staging. Desactiva &lt;code&gt;wp_cron&lt;/code&gt; en tu &lt;code&gt;wp-config.php&lt;/code&gt; de staging para prevenir efectos secundarios no deseados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISABLE_WP_CRON&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;construir-un-flujo-de-trabajo-de-despliegue-profesional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construir-un-flujo-de-trabajo-de-despliegue-profesional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construir un flujo de trabajo de despliegue profesional&lt;/h2&gt;
&lt;p&gt;El mejor flujo de trabajo de despliegue para tu proyecto depende de su complejidad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blogs simples y sitios corporativos&lt;/strong&gt; - staging a nivel de hosting es suficiente. Clon con un clic, probar, transferir a producción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiendas WooCommerce y sitios de membresía&lt;/strong&gt; - usa staging manual con WP-CLI con gestión cuidadosa de la base de datos. Las fusiones de bases de datos requieren atención especial porque los datos de producción cambian constantemente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temás y plugins personalizados en desarrollo activo&lt;/strong&gt; - despliegue basado en git con CI/CD. Revisión de código vía pull requests, pruebas automatizadas y despliegues repetibles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agencia que gestiona múltiples clientes&lt;/strong&gt; - estandariza en un pipeline CI/CD con configuración específica por entorno. Una plantilla de flujo de trabajo sirve para cada proyecto de clientes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Empieza con el enfoque más simple que satisfaga tus necesidades y evoluciona tu flujo de trabajo a medida que crecen tus requisitos. El objetivo no es complejidad por sí misma, sino confianza en que cada despliegue es seguro, probado y reversible.&lt;/p&gt;
&lt;h2 id=&quot;despliegue-y-mantenimiento-profesional-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despliegue-y-mantenimiento-profesional-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despliegue y mantenimiento profesional de WordPress&lt;/h2&gt;
&lt;p&gt;Configurar un flujo de trabajo fiable de staging y despliegue requiere experiencia en administración de servidores, gestión de bases de datos y herramientas CI/CD. En wppoland.com, diseñamos y mantenemos pipelines de despliegue WordPress para agencias y empresas en toda Europa. Desde configuraciónes staging con un clic hasta flujos de trabajo GitHub Actions completamente automatizados, nos encargamos del DevOps para que tu equipo pueda concentrarse en construir sitios web excelentes.&lt;/p&gt;
&lt;p&gt;Si necesitas ayuda para configurar entornos staging, automatizar despliegues o migrar entre proveedores de alojamiento, nuestro equipo está listo para ayudar. Los precios de los servicios de mantenimiento y despliegue son individuales y dependen del alcance de tu proyecto, así que contacta para una consulta personalizada.&lt;/p&gt;</content:encoded><category>development</category><category>devops</category><category domain="tag">staging-site</category><category domain="tag">wordpress-deployment</category><category domain="tag">wp-cli</category><category domain="tag">github-actions</category><category domain="tag">ci-cd</category><category domain="tag">local-development</category><category domain="tag">database-migration</category><category domain="tag">wordpress-workflow</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>Bloques Gutenberg, patrones y full site editing: la guía completa de WordPress (2026)</title><link>https://wppoland.com/es/bloques-gutenberg-patrones-full-site-editing-guia/</link><guid isPermaLink="true">https://wppoland.com/es/bloques-gutenberg-patrones-full-site-editing-guia/</guid><description>Aprende a usar bloques Gutenberg, crear patrones sincronizados, aprovechar el directorio de patrones, dominar el full site editing, construir plantillas personalizadas y ampliar tu sitio con los mejores plugins de bloques.</description><pubDate>Sun, 15 Mar 2026 07:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;por-que-los-bloques-cambiaron-todo-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-bloques-cambiaron-todo-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los bloques cambiaron todo en WordPress&lt;/h2&gt;
&lt;p&gt;WordPress sirvio a la web a través de una única caja de texto enriquecido durante más de quince años. Eso cambio en diciembre de 2018 cuando la versión 5.0 se lanzo con el editor de bloques Gutenberg. En lugar de pegar HTML crudo o luchar con shortcodes, cada elemento de contenido se convirtio en un bloque independiente: un parrafo, una imagen, una galeria, un boton, una tabla. Los bloques pueden moverse, duplicarse, agruparse y estilizarse de forma independiente.&lt;/p&gt;
&lt;p&gt;En 2026, el editor de bloques ya no es opcional. Controla la edicion de entradas, la construccion de páginas y, con el full site editing, toda la capa del tema. Ya seas propietario de un sitio que pública artículos o un desarrollador que entrega proyectos a clientes, comprender los bloques, los patrones y el Site Editor es una competencia esencial.&lt;/p&gt;
&lt;p&gt;Esta guía recorre cada capa del ecosistema de bloques, desde el panel de insercion hasta la construccion de un tema de bloques personalizado desde cero.&lt;/p&gt;
&lt;h2 id=&quot;comprender-el-panel-de-insercion-de-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprender-el-panel-de-insercion-de-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprender el panel de insercion de bloques&lt;/h2&gt;
&lt;p&gt;El panel de insercion de bloques es la puerta de entrada a cada elemento que puedes colocar en una página. Abrelo haciendo clic en el boton azul &lt;strong&gt;+&lt;/strong&gt; en la barra de herramientas superior izquierda o escribiendo &lt;code&gt;/&lt;/code&gt; en un parrafo vacio.&lt;/p&gt;
&lt;p&gt;El panel de insercion agrupa bloques en categorías:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Texto&lt;/strong&gt; - parrafo, encabezado, lista, cita, código, preformateado, pullquote, verso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medios&lt;/strong&gt; - imagen, galeria, audio, video, cover, archivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diseño&lt;/strong&gt; - botones, columnas, grupo, fila, pila, separador, espaciador&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Widgets&lt;/strong&gt; - shortcode, archivos, categorías, entradas recientes, búsqueda, iconos sociales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tema&lt;/strong&gt; - navegación, logotipo del sitio, título del sitio, query loop, parte de plantilla, título de entrada, contenido de entrada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incrustaciones&lt;/strong&gt; - YouTube, Twitter, Spotify, Vimeo y docenas más via oEmbed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada bloque ofrece su propia barra de herramientas (formato en linea, alineacion, enlace) y un panel lateral con ajustes avanzados (ancla HTML, clases CSS adicionales, color, tipografia). Dominar el panel de insercion significa que rara vez necesitas un plugin de page builder para diseños estándar.&lt;/p&gt;
&lt;h3 id=&quot;atajos-de-teclado-que-ahorran-tiempo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#atajos-de-teclado-que-ahorran-tiempo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Atajos de teclado que ahorran tiempo&lt;/h3&gt;
&lt;p&gt;La edicion productiva de bloques depende de atajos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/&lt;/code&gt; seguido del nombre de un bloque lo inserta al instante&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl+Shift+D&lt;/code&gt; (Cmd en macOS) duplica el bloque seleccionado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl+Alt+T&lt;/code&gt; inserta un bloque antes del actual&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl+Alt+Y&lt;/code&gt; inserta un bloque despues del actual&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Shift+Alt+Z&lt;/code&gt; elimina el bloque seleccionado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl+Shift+K&lt;/code&gt; elimina un enlace del texto seleccionado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Combina estos con el tirador de arrastre en cada bloque, y podras reorganizar diseños complejos sin tocar el raton.&lt;/p&gt;
&lt;h2 id=&quot;crear-y-gestionar-patrones-sincronizados-bloques-reutilizables&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crear-y-gestionar-patrones-sincronizados-bloques-reutilizables&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Crear y gestionar patrones sincronizados (bloques reutilizables)&lt;/h2&gt;
&lt;p&gt;WordPress 6.3 renombro los “bloques reutilizables” como “patrones sincronizados”, pero el concepto sigue siendo el mismo: guarda un bloque o grupo de bloques una vez e insertalo en cualquier lugar de tu sitio. Cuando editas una instancia, todas las ubicaciones se actualizan.&lt;/p&gt;
&lt;h3 id=&quot;como-crear-un-patron-sincronizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-crear-un-patron-sincronizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como crear un patron sincronizado&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Selecciona uno o más bloques en el editor.&lt;/li&gt;
&lt;li&gt;Abre la barra de herramientas del bloque y haz clic en el menú de tres puntos.&lt;/li&gt;
&lt;li&gt;Elige &lt;strong&gt;Crear patron&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Dale al patron un nombre y una categoría.&lt;/li&gt;
&lt;li&gt;Activa &lt;strong&gt;Sincronizado&lt;/strong&gt;. (Dejarlo desactivado crea un patron estándar, no sincronizado.)&lt;/li&gt;
&lt;li&gt;Haz clic en &lt;strong&gt;Crear&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El patron ahora aparece en el panel de insercion bajo la pestana &lt;strong&gt;Patrones&lt;/strong&gt; y dentro de la categoría &lt;strong&gt;Sincronizado&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;casos-de-uso-practicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-practicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso practicos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Banners de llamada a la accion&lt;/strong&gt; - un único grupo de bloques CTA usado en cada página de destino, actualizado una vez cuando cambia la campana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secciones de testimonios&lt;/strong&gt; - un bloque de columnas con citas de clientes que se mantiene consistente en las páginas de servicios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avisos legales&lt;/strong&gt; - texto juridico que debe permanecer identico en todo el sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios de suscripcion al boletin&lt;/strong&gt; - un bloque de formulario sincronizado entre la barra lateral del blog y el pie de página.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;gestionar-patrones-desde-la-administración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestionar-patrones-desde-la-administración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestionar patrones desde la administración&lt;/h3&gt;
&lt;p&gt;Navega a &lt;strong&gt;Apariencia &gt; Editor &gt; Patrones&lt;/strong&gt; (o la pantalla independiente de &lt;strong&gt;Patrones&lt;/strong&gt; en &lt;code&gt;/wp-admin/edit.php?post_type=wp_block&lt;/code&gt;) para ver, editar, duplicar, exportar o eliminar tus patrones. También puedes convertir un patron sincronizado en un patron regular (no sincronizado) abriendolo y desactivando el estado de sincronizacion.&lt;/p&gt;
&lt;h2 id=&quot;patrones-de-bloques-y-el-directorio-de-patrones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-de-bloques-y-el-directorio-de-patrones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones de bloques y el directorio de patrones&lt;/h2&gt;
&lt;p&gt;Mientras que los patrones sincronizados son tus propios componentes reutilizables, los patrones de bloques son diseños predefinidos que insertas y personalizas libremente. WordPress incluye patrones integrados (secciones hero, cuadriculas de testimonios, tablas de precios, listas de características), y miles mas estan disponibles en el directorio oficial de patrones en &lt;a href=&quot;https://wordpress.org/patterns/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;wordpress.org/patterns&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;usar-patrones-del-directorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usar-patrones-del-directorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usar patrones del directorio&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Abre el panel de insercion y haz clic en la pestana &lt;strong&gt;Patrones&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Navega por categorías o busca por palabra clave.&lt;/li&gt;
&lt;li&gt;Haz clic en un patron para insertarlo en el editor.&lt;/li&gt;
&lt;li&gt;Modifica texto, imágenes, colores y espaciado para que coincida con tu marca.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Como los patrones se convierten en copias independientes tras la insercion, puedes cambiar cada detalle sin afectar al original.&lt;/p&gt;
&lt;h3 id=&quot;registrar-un-patron-de-bloque-personalizado-en-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#registrar-un-patron-de-bloque-personalizado-en-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Registrar un patron de bloque personalizado en PHP&lt;/h3&gt;
&lt;p&gt;Los temas y plugins pueden registrar patrones programaticamente. Aqui hay un ejemplo minimo en &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_block_pattern&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland/hero-with-cta&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;       =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; __&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Hero con CTA&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; __&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Una seccion hero de ancho completo con encabezado, parrafo y boton.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;categories&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;featured&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;banner&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;keywords&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cta&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;banner&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;!-- wp:cover {&quot;overlayColor&quot;:&quot;contrast&quot;,&quot;isUserOverlayColor&quot;:true,&quot;minHeight&quot;:500,&quot;align&quot;:&quot;full&quot;} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;div class=&quot;wp-block-cover alignfull&quot; style=&quot;min-height:500px&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &amp;#x3C;span class=&quot;wp-block-cover__background has-contrast-background-color&quot;&gt;&amp;#x3C;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &amp;#x3C;div class=&quot;wp-block-cover__inner-container&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- wp:heading {&quot;textAlign&quot;:&quot;center&quot;,&quot;level&quot;:1} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;h1 class=&quot;wp-block-heading has-text-align-center&quot;&gt;Tu encabezado aqui&amp;#x3C;/h1&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- /wp:heading --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- wp:paragraph {&quot;align&quot;:&quot;center&quot;} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;p class=&quot;has-text-align-center&quot;&gt;Texto de apoyo que explica la propuesta de valor.&amp;#x3C;/p&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- /wp:paragraph --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- wp:buttons {&quot;layout&quot;:{&quot;type&quot;:&quot;flex&quot;,&quot;justifyContent&quot;:&quot;center&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;div class=&quot;wp-block-buttons&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                            &amp;#x3C;!-- wp:button --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                            &amp;#x3C;div class=&quot;wp-block-button&quot;&gt;&amp;#x3C;a class=&quot;wp-block-button__link wp-element-button&quot;&gt;Comenzar&amp;#x3C;/a&gt;&amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                            &amp;#x3C;!-- /wp:button --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- /wp:buttons --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;!-- /wp:cover --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Desde WordPress 6.0 también puedes colocar archivos de patrones en un directorio &lt;code&gt;patterns/&lt;/code&gt; en la raiz del tema. Cada archivo usa un comentario de cabecera para metadatos y devuelve marcado de bloques, permitiendo el registro automático sin &lt;code&gt;register_block_pattern()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;full-site-editing-como-el-site-editor-reemplaza-al-customizer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#full-site-editing-como-el-site-editor-reemplaza-al-customizer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Full site editing: como el Site Editor reemplaza al Customizer&lt;/h2&gt;
&lt;p&gt;Full site editing (FSE) es el termino general para usar bloques para controlar cada parte de tu sitio, no solo el contenido de las entradas, sino también cabeceras, pies de página, barras laterales, diseños de archivo y páginas 404. Se implemento incrementalmente desde WordPress 5.9 hasta 6.5 y ahora es el enfoque estándar para temas de bloques.&lt;/p&gt;
&lt;h3 id=&quot;que-reemplaza-el-full-site-editing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-reemplaza-el-full-site-editing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que reemplaza el full site editing&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Flujo de trabajo clásico&lt;/th&gt;&lt;th&gt;Equivalente FSE&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Paneles del Customizer&lt;/td&gt;&lt;td&gt;Barra lateral de Estilos Globales en el Site Editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Areas de widgets&lt;/td&gt;&lt;td&gt;Partes de plantilla (cabecera, pie de página, barra lateral)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Archivos de plantilla PHP&lt;/td&gt;&lt;td&gt;Plantillas de marcado de bloques HTML&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Llamadas &lt;code&gt;add_theme_support()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Ajustes &lt;code&gt;theme.json&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pantalla de gestión de menús&lt;/td&gt;&lt;td&gt;Bloque de navegación&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;acceder-al-site-editor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acceder-al-site-editor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acceder al Site Editor&lt;/h3&gt;
&lt;p&gt;Con un tema de bloques activo, ve a &lt;strong&gt;Apariencia &gt; Editor&lt;/strong&gt;. La interfaz se abre en una vista previa visual. Desde la barra lateral izquierda puedes navegar a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plantillas&lt;/strong&gt; - index, single, página, archivo, 404, búsqueda, inicio y cualquier plantilla personalizada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partes de plantilla&lt;/strong&gt; - cabecera, pie de página, barra lateral y partes personalizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patrones&lt;/strong&gt; - todos los patrones registrados y creados por el usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estilos&lt;/strong&gt; - tipografia global, colores, espaciado y anulaciones de estilo por bloque&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navegación&lt;/strong&gt; - gestión de menús basada en el bloque de navegación&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada cambio se previsualiza en tiempo real y se guarda en la base de datos. Para desarrolladores de temas, los cambios pueden exportarse como archivos de tema para control de versiones.&lt;/p&gt;
&lt;h2 id=&quot;crear-plantillas-y-partes-de-plantilla-personalizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crear-plantillas-y-partes-de-plantilla-personalizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Crear plantillas y partes de plantilla personalizadas&lt;/h2&gt;
&lt;p&gt;Las plantillas definen la estructura de un tipo de página. Las partes de plantilla son fragmentos reutilizables (cabecera, pie de página) compartidos entre plantillas.&lt;/p&gt;
&lt;h3 id=&quot;crear-una-plantilla-en-el-site-editor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crear-una-plantilla-en-el-site-editor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Crear una plantilla en el Site Editor&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Abre &lt;strong&gt;Apariencia &gt; Editor &gt; Plantillas&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Haz clic en &lt;strong&gt;Anadir nueva plantilla&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Selecciona un tipo de plantilla (página, entrada individual, categoría, autor, personalizada).&lt;/li&gt;
&lt;li&gt;Construye el diseño usando bloques: agrega una parte de plantilla de cabecera arriba, un query loop para entradas, una parte de plantilla de pie de página abajo.&lt;/li&gt;
&lt;li&gt;Guarda.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;formato-de-marcado-de-plantillas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#formato-de-marcado-de-plantillas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Formato de marcado de plantillas&lt;/h3&gt;
&lt;p&gt;Bajo el capo, cada plantilla es un archivo HTML de marcado de bloques. Aqui hay un &lt;code&gt;templates/single.html&lt;/code&gt; simplificado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:template-part {&quot;slug&quot;:&quot;header&quot;,&quot;area&quot;:&quot;header&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:group {&quot;tagName&quot;:&quot;main&quot;,&quot;layout&quot;:{&quot;type&quot;:&quot;constrained&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:post-title {&quot;level&quot;:1} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:post-featured-image /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:post-content /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:post-terms {&quot;term&quot;:&quot;category&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:post-terms {&quot;term&quot;:&quot;post_tag&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:template-part {&quot;slug&quot;:&quot;footer&quot;,&quot;area&quot;:&quot;footer&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Las partes de plantilla se encuentran en el directorio &lt;code&gt;parts/&lt;/code&gt;. Un &lt;code&gt;parts/header.html&lt;/code&gt; podria verse asi:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:group {&quot;tagName&quot;:&quot;header&quot;,&quot;layout&quot;:{&quot;type&quot;:&quot;flex&quot;,&quot;justifyContent&quot;:&quot;space-between&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:site-title /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:navigation /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta estructura elimina las etiquetas de plantilla PHP (&lt;code&gt;get_header()&lt;/code&gt;, &lt;code&gt;the_title()&lt;/code&gt;, &lt;code&gt;the_content()&lt;/code&gt;) en favor de marcado de bloques declarativo. El resultado es un tema que disenadores y editores de contenido pueden modificar directamente en el Site Editor.&lt;/p&gt;
&lt;h2 id=&quot;fundamentos-de-la-configuración-themejson&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fundamentos-de-la-configuración-themejson&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fundamentos de la configuración theme.json&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;theme.json&lt;/code&gt; es el único archivo de configuración que controla lo que el editor muestra y como se ve el front-end. Se ubica en la raiz de tu tema de bloques.&lt;/p&gt;
&lt;h3 id=&quot;ejemplo-minimo-de-themejson&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-minimo-de-themejson&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo minimo de theme.json&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schemas.wp.org/wp/6.7/theme.json&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;versión&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;settings&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;palette&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#1e40af&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;secondary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#9333ea&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Secondary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;base&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#ffffff&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Base&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;contrast&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#1a1a1a&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Contrast&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;gradients&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;defaultPalette&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;defaultGradients&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;typography&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;fontFamilies&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;fontFamily&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Inter, sans-serif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;body&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Body&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;fontFamily&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&apos;Space Grotesk&apos;, sans-serif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;heading&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Heading&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;fontSizes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;small&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0.875rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Small&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;medium&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Medium&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;x-large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2.25rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Extra Large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;spacing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;units&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;vh&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;vw&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;%&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;spacingSizes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;10&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Tiny&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;20&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Small&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;30&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Medium&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;40&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;50&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;4rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Extra Large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;layout&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;contentSize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;720px&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;wideSize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1200px&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;appearanceTools&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;background&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--color--base)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--color--contrast)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;typography&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;fontFamily&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--font-family--body)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;fontSize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--font-size--medium)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;lineHeight&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.6&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;elements&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;heading&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;typography&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;fontFamily&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--font-family--heading)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;fontWeight&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;700&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;link&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--color--primary)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;blocks&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;core/button&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;background&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--color--primary)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--color--base)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;border&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;radius&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;4px&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;explicacion-de-las-secciones-principales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#explicacion-de-las-secciones-principales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Explicacion de las secciones principales&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;versión&lt;/strong&gt; - usa siempre &lt;code&gt;3&lt;/code&gt; para WordPress 6.6 y posterior.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;settings&lt;/strong&gt; - define que controles aparecen en el editor: paletas de colores, familias de fuentes, tamaños de fuente, preajustes de espaciado, anchos de diseño e interruptores de funciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;styles&lt;/strong&gt; - aplica valores CSS predeterminados a la raiz, elementos (encabezados, enlaces, botones, pies de foto) y bloques individuales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;appearanceTools&lt;/strong&gt; - un atajo que habilita controles de borde, espaciado, tipografia y dimensiones en la barra lateral.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El motor convierte &lt;code&gt;theme.json&lt;/code&gt; en propiedades CSS personalizadas (como &lt;code&gt;--wp--preset--color--primary&lt;/code&gt;) que se propagan en cascada por todo el sitio. Esto significa que un archivo gobierna los tokens de diseño tanto para el editor como para el front-end.&lt;/p&gt;
&lt;h2 id=&quot;los-mejores-plugins-de-bloques-para-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-mejores-plugins-de-bloques-para-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los mejores plugins de bloques para WordPress en 2026&lt;/h2&gt;
&lt;p&gt;El editor base cubre la mayoria de las necesidades, pero los plugins de bloques de terceros llenan los vacios con diseños avanzados, controles de diseño y bloques especializados.&lt;/p&gt;
&lt;h3 id=&quot;spectra-anteriormente-ultimate-addons-for-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#spectra-anteriormente-ultimate-addons-for-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Spectra (anteriormente Ultimate Addons for Gutenberg)&lt;/h3&gt;
&lt;p&gt;Desarrollado por Brainstorm Force (el equipo detras del plugin Starter Templates), Spectra agrega más de 30 bloques: temporizadores de cuenta regresiva, calificaciones con estrellas, listas de iconos, listas de precios, modales, pestanas y un bloque de formularios completo. Incluye un bloque contenedor con modos de diseño flex y grid, lo que lo hace adecuado para diseños de página complejos sin un page builder tradicional. Los precios se establecen individualmente según el nivel de funciones.&lt;/p&gt;
&lt;h3 id=&quot;generateblocks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generateblocks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GenerateBlocks&lt;/h3&gt;
&lt;p&gt;Construido por el equipo de GeneratePress, GenerateBlocks adopta un enfoque minimo: cuatro bloques principales (contenedor, encabezado, botones, imagen) que dependen de ajustes flexibles en lugar de docenas de bloques de propósito único. El resultado es una salida ligera con CSS minimo. Los usuarios avanzados aprecian la integración con query loop y el sistema de datos dinámicos que extrae meta de entradas, campos personalizados y datos de taxonomía en diseños de bloques.&lt;/p&gt;
&lt;h3 id=&quot;stackable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stackable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Stackable&lt;/h3&gt;
&lt;p&gt;Stackable ofrece más de 40 bloques con una biblioteca de diseño visual de más de 200 diseños preconstruidos. Su caracteristica destacada es un sistema de diseño unificado donde la tipografia global, las paletas de colores y las escalas de espaciado se propagan automáticamente a cada bloque Stackable. La versión gratuita cubre la mayoria de los casos de uso, mientras que el nivel premium agrega contenido dinámico, visualización condicional y efectos de movimiento.&lt;/p&gt;
&lt;h3 id=&quot;kadence-blocks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kadence-blocks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Kadence Blocks&lt;/h3&gt;
&lt;p&gt;Kadence Blocks proporciona un sistema de diseño de filas/columnas, bloque de encabezado avanzado, cajas de información, listas de iconos, tabla de contenidos y un bloque de formulario. La biblioteca de diseño incluye patrones de página completa y de sección. Kadence se combina especialmente bien con el tema Kadence, compartiendo un sistema de tokens de diseño. Los precios del nivel pro se establecen individualmente y varian según el número de sitios.&lt;/p&gt;
&lt;h3 id=&quot;elegir-el-plugin-adecuado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elegir-el-plugin-adecuado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elegir el plugin adecuado&lt;/h3&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Criterio&lt;/th&gt;&lt;th&gt;Spectra&lt;/th&gt;&lt;th&gt;GenerateBlocks&lt;/th&gt;&lt;th&gt;Stackable&lt;/th&gt;&lt;th&gt;Kadence Blocks&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Total de bloques&lt;/td&gt;&lt;td&gt;30+&lt;/td&gt;&lt;td&gt;4 (flexibles)&lt;/td&gt;&lt;td&gt;40+&lt;/td&gt;&lt;td&gt;20+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Enfoque de diseño&lt;/td&gt;&lt;td&gt;Rico en funciones&lt;/td&gt;&lt;td&gt;Minimalista&lt;/td&gt;&lt;td&gt;Basado en biblioteca&lt;/td&gt;&lt;td&gt;Equilibrado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Impacto en rendimiento&lt;/td&gt;&lt;td&gt;Medio&lt;/td&gt;&lt;td&gt;Bajo&lt;/td&gt;&lt;td&gt;Medio&lt;/td&gt;&lt;td&gt;Bajo-Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fortaleza de la versión gratuita&lt;/td&gt;&lt;td&gt;Fuerte&lt;/td&gt;&lt;td&gt;Fuerte&lt;/td&gt;&lt;td&gt;Fuerte&lt;/td&gt;&lt;td&gt;Fuerte&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mejor combinado con&lt;/td&gt;&lt;td&gt;Starter Templates&lt;/td&gt;&lt;td&gt;GeneratePress&lt;/td&gt;&lt;td&gt;Cualquier tema&lt;/td&gt;&lt;td&gt;Kadence Theme&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Elige GenerateBlocks para proyectos críticos en rendimiento, Spectra o Stackable para páginas con diseño exigente, y Kadence Blocks cuando necesites un constructor de formularios robusto junto con herramientas de diseño.&lt;/p&gt;
&lt;h2 id=&quot;construir-un-tema-de-bloques-sencillo-desde-cero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construir-un-tema-de-bloques-sencillo-desde-cero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construir un tema de bloques sencillo desde cero&lt;/h2&gt;
&lt;p&gt;Combinando todo lo anterior, aquí hay un recorrido paso a paso para crear un tema de bloques minimo.&lt;/p&gt;
&lt;h3 id=&quot;paso-1-estructura-de-carpetas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-estructura-de-carpetas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: estructura de carpetas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;my-block-theme/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  style.css&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  theme.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  functions.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  templates/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    index.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    single.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    page.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    404.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  parts/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    header.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    footer.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  patterns/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    hero-banner.php&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-2-cabecera-stylecss&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-cabecera-stylecss&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: cabecera style.css&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Theme Name: My Block Theme&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Theme URI: https://wppoland.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Author: wppoland.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Author URI: https://wppoland.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Description: Un tema de bloques minimo para aprender full site editing.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Version: 1.0.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Requires at least: 6.4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Tested up to: 6.7&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Requires PHP: 8.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;License: GPL-2.0-or-later&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;License URI: https://www.gnu.org/licenses/gpl-2.0.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;Text Domain: my-block-theme&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No se necesita CSS adicional aqui. Todo el estilo fluye a través de &lt;code&gt;theme.json&lt;/code&gt; y el sistema de estilos globales.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-themejson&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-themejson&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: theme.json&lt;/h3&gt;
&lt;p&gt;Usa el ejemplo de la sección anterior. Ajusta la paleta de colores y la tipografia para que coincida con tu marca.&lt;/p&gt;
&lt;h3 id=&quot;paso-4-plantillas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-plantillas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: plantillas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;templates/index.html&lt;/strong&gt; (la plantilla de respaldo):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:template-part {&quot;slug&quot;:&quot;header&quot;,&quot;area&quot;:&quot;header&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:group {&quot;tagName&quot;:&quot;main&quot;,&quot;layout&quot;:{&quot;type&quot;:&quot;constrained&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:query {&quot;queryId&quot;:1,&quot;query&quot;:{&quot;perPage&quot;:10,&quot;pages&quot;:0,&quot;offset&quot;:0,&quot;postType&quot;:&quot;post&quot;,&quot;order&quot;:&quot;desc&quot;,&quot;orderBy&quot;:&quot;date&quot;,&quot;inherit&quot;:true}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-query&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        &amp;#x3C;!-- wp:post-template --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            &amp;#x3C;!-- wp:post-title {&quot;isLink&quot;:true} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            &amp;#x3C;!-- wp:post-excerpt /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            &amp;#x3C;!-- wp:post-date /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        &amp;#x3C;!-- /wp:post-template --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        &amp;#x3C;!-- wp:query-págination --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            &amp;#x3C;!-- wp:query-págination-previous /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            &amp;#x3C;!-- wp:query-págination-numbers /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            &amp;#x3C;!-- wp:query-págination-next /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        &amp;#x3C;!-- /wp:query-págination --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- /wp:query --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:template-part {&quot;slug&quot;:&quot;footer&quot;,&quot;area&quot;:&quot;footer&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;templates/404.html&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:template-part {&quot;slug&quot;:&quot;header&quot;,&quot;area&quot;:&quot;header&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:group {&quot;tagName&quot;:&quot;main&quot;,&quot;layout&quot;:{&quot;type&quot;:&quot;constrained&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:heading {&quot;level&quot;:1} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-heading&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Página no encontrada&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- /wp:heading --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:paragraph --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;La página que buscas no existe. Intenta buscar o regresa a la página de inicio.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- /wp:paragraph --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:search {&quot;label&quot;:&quot;Buscar&quot;,&quot;buttonText&quot;:&quot;Buscar&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:template-part {&quot;slug&quot;:&quot;footer&quot;,&quot;area&quot;:&quot;footer&quot;} /--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-5-partes-de-plantilla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-partes-de-plantilla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: partes de plantilla&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;parts/header.html&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:group {&quot;tagName&quot;:&quot;header&quot;,&quot;style&quot;:{&quot;spacing&quot;:{&quot;padding&quot;:{&quot;top&quot;:&quot;var:preset|spacing|20&quot;,&quot;bottom&quot;:&quot;var:preset|spacing|20&quot;}}},&quot;layout&quot;:{&quot;type&quot;:&quot;constrained&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:group {&quot;layout&quot;:{&quot;type&quot;:&quot;flex&quot;,&quot;justifyContent&quot;:&quot;space-between&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        &amp;#x3C;!-- wp:site-title /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        &amp;#x3C;!-- wp:navigation {&quot;layout&quot;:{&quot;type&quot;:&quot;flex&quot;}} /--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;parts/footer.html&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:group {&quot;tagName&quot;:&quot;footer&quot;,&quot;style&quot;:{&quot;spacing&quot;:{&quot;padding&quot;:{&quot;top&quot;:&quot;var:preset|spacing|30&quot;,&quot;bottom&quot;:&quot;var:preset|spacing|30&quot;}}},&quot;backgroundColor&quot;:&quot;contrast&quot;,&quot;textColor&quot;:&quot;base&quot;,&quot;layout&quot;:{&quot;type&quot;:&quot;constrained&quot;}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group has-base-color has-contrast-background-color has-text-color has-background&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:paragraph {&quot;align&quot;:&quot;center&quot;,&quot;fontSize&quot;:&quot;small&quot;} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;has-text-align-center has-small-font-size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Construido con WordPress y bloques.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- /wp:paragraph --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-6-patron-registrado-automáticamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-6-patron-registrado-automáticamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 6: patron registrado automáticamente&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;patterns/hero-banner.php&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Title: Banner hero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Slug: my-block-theme/hero-banner&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Categories: featured, banner&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Keywords: hero, cta, landing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;overlayColor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;isUserOverlayColor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;minHeight&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;480&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;align&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;full&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-cover alignfull&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;min-height:480px&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-cover__background has-primary-background-color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-cover__inner-container&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;heading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;textAlign&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;center&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;level&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;textColor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;base&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-heading has-text-align-center has-base-color has-text-color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Bienvenido&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; My&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;heading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;paragraph&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;align&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;center&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;textColor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;base&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;has-text-align-center has-base-color has-text-color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Un&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; tema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WordPress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ligero&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;centrado&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; en&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; bloques&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;paragraph&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;buttons&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;layout&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;flex&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;justifyContent&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;center&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-buttons&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;backgroundColor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;base&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;textColor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-button&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-button__link has-primary-color has-base-background-color has-text-color has-background wp-element-button&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Saber&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;buttons&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-7-functionsphp-mejoras-opcionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-7-functionsphp-mejoras-opcionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 7: functions.php (mejoras opcionales)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;declare&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict_types&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-block-styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor-styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_editor_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;style.css&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_enqueue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;my-block-theme-style&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        get_stylesheet_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_get_theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Version&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sube la carpeta a &lt;code&gt;wp-content/themes/&lt;/code&gt;, activalo y abre &lt;strong&gt;Apariencia &gt; Editor&lt;/strong&gt;. Ahora tienes un tema de bloques totalmente funcional donde cada plantilla, patron y estilo es editable desde el navegador.&lt;/p&gt;
&lt;h2 id=&quot;consejos-avanzados-para-el-desarrollo-centrado-en-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consejos-avanzados-para-el-desarrollo-centrado-en-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consejos avanzados para el desarrollo centrado en bloques&lt;/h2&gt;
&lt;h3 id=&quot;bloquear-bloques-para-evitar-ediciones-accidentales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloquear-bloques-para-evitar-ediciones-accidentales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloquear bloques para evitar ediciones accidentales&lt;/h3&gt;
&lt;p&gt;Al construir plantillas para clientes, bloquea bloques para restringir su movimiento y eliminación:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- wp:group {&quot;lock&quot;:{&quot;move&quot;:true,&quot;remove&quot;:true}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-group&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- wp:paragraph --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Este bloque no puede ser movido ni eliminado por los editores.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- /wp:paragraph --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- /wp:group --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El contenido dentro de bloques bloqueados sigue siendo editable, pero la integridad estructural se mantiene intacta.&lt;/p&gt;
&lt;h3 id=&quot;usar-variaciones-de-bloques-para-consistencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usar-variaciones-de-bloques-para-consistencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usar variaciones de bloques para consistencia&lt;/h3&gt;
&lt;p&gt;Registra variaciones de bloques para proporcionar instancias preconfiguradas de bloques base. Por ejemplo, una variacion “miembro del equipo” del bloque media-and-text:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;enqueue_block_editor_assets&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_add_inline_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wp-blocks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;wp.blocks.registerBlockVariation(&apos;core/media-text&apos;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            name: &apos;team-member&apos;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            title: &apos;Team Member&apos;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            attributes: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                mediaPosition: &apos;left&apos;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                verticalAlignment: &apos;center&apos;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            scope: [&apos;inserter&apos;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        });&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Las variaciones aparecen como bloques distintos en el panel de insercion mientras comparten el código del bloque padre.&lt;/p&gt;
&lt;h3 id=&quot;aprovechar-el-paquete-create-block&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aprovechar-el-paquete-create-block&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aprovechar el paquete create-block&lt;/h3&gt;
&lt;p&gt;Para bloques personalizados más alla de lo que cubren los patrones y variaciones, usa la herramienta oficial de scaffolding &lt;code&gt;@wordpress/create-block&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; @wordpress/create-block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; my-custom-block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --variant&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; dynamic&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto genera un plugin con herramientas de compilacion (webpack, Babel, ESLint), una función &lt;code&gt;edit&lt;/code&gt; basada en React y un &lt;code&gt;render_callback&lt;/code&gt; PHP para renderizado dinámico del lado del servidor. Es el camino recomendado para cualquier bloque que necesite obtener datos, ejecutar consultas o mostrar contenido dinámico.&lt;/p&gt;
&lt;h2 id=&quot;errores-comunes-y-como-evitarlos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-y-como-evitarlos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes y como evitarlos&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Mezclar plantillas clasicas y de bloques.&lt;/strong&gt; Un tema es o un tema de bloques o un tema clásico. Colocar &lt;code&gt;index.php&lt;/code&gt; junto a &lt;code&gt;templates/index.html&lt;/code&gt; crea un comportamiento de respaldo impredecible. Comprometete con un enfoque por tema.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sobrescribir theme.json con CSS inline.&lt;/strong&gt; Los estilos inline evitan la cascada de estilos globales y rompen los controles de estilo del Site Editor. Usa siempre preajustes de theme.json y propiedades CSS personalizadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ignorar el directorio patterns.&lt;/strong&gt; Muchos desarrolladores aun registran patrones exclusivamente a través de PHP. El directorio &lt;code&gt;patterns/&lt;/code&gt; con cabeceras de archivo es más simple, no requiere registro de hooks y mantiene el marcado de patrones separado de la lógica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Olvidar probar con diferentes roles de usuario.&lt;/strong&gt; Los editores y autores ven una versión filtrada del editor de bloques. La edicion de plantillas, los estilos globales y ciertos bloques pueden estar ocultos según los permisos. Siempre verifica la experiencia de edicion para cada rol que la usara.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No exportar los cambios del Site Editor.&lt;/strong&gt; Las modificaciones hechas en el navegador se almacenan en la base de datos. Si redistribuyes el tema sin exportar esos cambios a archivos, desaparecen. Usa la función de exportacion del Site Editor o el comando WP-CLI &lt;code&gt;wp theme export&lt;/code&gt; para sincronizar los cambios de vuelta al control de versiones.&lt;/p&gt;
&lt;h2 id=&quot;el-futuro-de-los-bloques-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-de-los-bloques-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro de los bloques en WordPress&lt;/h2&gt;
&lt;p&gt;El proyecto Gutenberg esta organizado en cuatro fases: edicion más fácil (lanzada), personalización (actual, FSE), colaboración (en progreso) y multilingue (planificada). La Fase 3, colaboración en tiempo real, traera edicion simultanea al estilo de Google Docs al editor de bloques. La Fase 4 busca hacer WordPress nativamente multilingue sin plugins.&lt;/p&gt;
&lt;p&gt;Los temas de bloques ya son el estándar para nuevas instalaciones de WordPress. Los temas clásicos siguen siendo compatibles, pero el desarrollo de nuevas APIs y herramientas de diseño se centra en el paradigma de bloques. Invertir en habilidades centradas en bloques ahora posiciona a tu equipo para cada lanzamiento importante de WordPress hasta 2028 y más alla.&lt;/p&gt;
&lt;h2 id=&quot;como-wppolandcom-aborda-el-desarrollo-de-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-wppolandcom-aborda-el-desarrollo-de-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como wppoland.com aborda el desarrollo de bloques&lt;/h2&gt;
&lt;p&gt;En wppoland.com, construimos cada proyecto de clientes sobre arquitectura centrada en bloques. Nuestro flujo de trabajo comienza con tokens de diseño en &lt;code&gt;theme.json&lt;/code&gt;, avanza hacia patrones de bloques personalizados para secciones repetitivas y finaliza con plantillas bloqueadas que dan libertad a los editores de contenido sin riesgo estructural.&lt;/p&gt;
&lt;p&gt;Para proyectos que necesitan bloques más alla de lo que ofrecen el core y los plugins existentes, desarrollamos bloques personalizados usando el conjunto de herramientas &lt;code&gt;@wordpress/create-block&lt;/code&gt;, con renderizado del lado del servidor para contenido dinámico e integración completa con los estilos globales del Site Editor.&lt;/p&gt;
&lt;p&gt;Si necesitas un tema de bloques personalizado, una migración de un tema clásico a full site editing o desarrollo de bloques a medida para tu flujo de trabajo de contenido, contacta al equipo de wppoland.com. Entregamos soluciones de bloques adaptadas a tus requisitos editoriales y empresariales, con precios establecidos individualmente según el alcance del proyecto.&lt;/p&gt;</content:encoded><category>wordpress</category><category>tutorials</category><category>development</category><category domain="tag">gutenberg</category><category domain="tag">blocks</category><category domain="tag">full-site-editing</category><category domain="tag">block-patterns</category><category domain="tag">site-editor</category><category domain="tag">theme-json</category><category domain="tag">block-themes</category><category domain="tag">reusable-blocks</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>Migración de Shopify a WooCommerce: la guía completa paso a paso</title><link>https://wppoland.com/es/guia-migracion-shopify-a-woocommerce/</link><guid isPermaLink="true">https://wppoland.com/es/guia-migracion-shopify-a-woocommerce/</guid><description>Migra de Shopify a WooCommerce sin perder datos, clientes ni posiciones SEO. Cubre transferencia de productos, redirecciones 301, mapeo de URL, automatizacion con WP-CLI y lista de verificación post-migración.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;Cada mes, miles de propietarios de tiendas buscan como migrar de Shopify a WooCommerce. Las razones varian, pero el patron es consistente: los comerciantes superan el ecosistema cerrado de Shopify y quieren control total sobre su tienda, sus datos y sus margenes.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;migración de Shopify a WooCommerce&lt;/strong&gt; no tiene que significar tiempo de inactividad, clientes perdidos o posiciones de búsqueda que desaparecen. Con el proceso adecuado, las herramientas correctas y la estrategia de redireccion apropiada, puedes mover toda tu tienda, incluyendo productos, clientes, pedidos y valor SEO, a WooCommerce sin perder una sola venta.&lt;/p&gt;
&lt;p&gt;Esta guía recorre cada paso, desde la comparación honesta de ambas plataformas hasta la lista de verificación final post-migración. Ya sea que tengas una boutique con 50 productos o un catálogo con 10.000 SKUs, la métodología es la misma.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;por-que-los-propietarios-de-tiendas-cambian-de-shopify-a-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-propietarios-de-tiendas-cambian-de-shopify-a-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los propietarios de tiendas cambian de Shopify a WooCommerce&lt;/h2&gt;
&lt;p&gt;Antes de sumergirnos en el proceso técnico de migración, es útil entender las diferencias fundamentales entre estas dos plataformas y por que el cambio tiene sentido para muchos negocios en crecimiento.&lt;/p&gt;
&lt;h3 id=&quot;propiedad-y-control&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#propiedad-y-control&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Propiedad y control&lt;/h3&gt;
&lt;p&gt;Shopify es una plataforma SaaS alojada. Alquilas espacio en la infraestructura de Shopify, y Shopify controla el código subyacente, el entorno del servidor y el almacenamiento de datos. Si Shopify decide cambiar sus terminos, subir precios o descontinuar una función, tienes recursos limitados.&lt;/p&gt;
&lt;p&gt;WooCommerce es software de código abierto que funciona sobre WordPress. Eres propietario del código, la base de datos, el servidor y cada pieza de contenido. Puedes alojarlo en cualquier lugar, modificar cualquier cosa y exportar tus datos en cualquier momento. Esta distincion importa más cuando tu negocio depende completamente de tu tienda en linea.&lt;/p&gt;
&lt;h3 id=&quot;comisiones-por-transaccion-y-estructura-de-costes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comisiones-por-transaccion-y-estructura-de-costes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comisiones por transaccion y estructura de costes&lt;/h3&gt;
&lt;p&gt;Shopify cobra comisiones por transaccion en cada venta a menos que uses Shopify Payments como tu procesador de pagos exclusivo. Estas comisiones varian del 0,5% al 2% dependiendo de tu plan, y se suman a las propias comisiones del procesador de pagos. Para una tienda que procesa ingresos mensuales significativos, estas comisiones adicionales suman un coste anual sustancial.&lt;/p&gt;
&lt;p&gt;WooCommerce cobra cero comisiones de plataforma por transaccion. Solo pagas la tarifa estándar de tu procesador de pagos (Stripe, PayPal o cualquier pasarela que elijas). Tus costes continuos son alojamiento, dominio, SSL y cualquier plugin o tema premium que selecciones. Los precios de alojamiento y plugins varian según tus requisitos, pero el coste total de propiedad es tipicamente más bajo para tiendas establecidas.&lt;/p&gt;
&lt;h3 id=&quot;personalización-y-flexibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#personalización-y-flexibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Personalización y flexibilidad&lt;/h3&gt;
&lt;p&gt;El lenguaje de plantillas Liquid de Shopify y su ecosistema de aplicaciones permiten una personalización significativa, pero trabajas dentro de los limites de Shopify. Ciertas modificaciones del checkout requieren Shopify Plus. Los cambios profundos en el backend simplemente no son posibles.&lt;/p&gt;
&lt;p&gt;WooCommerce, construido sobre PHP y WordPress, ofrece una personalización virtualmente ilimitada. Puedes modificar flujos de checkout, construir calculadoras de envio personalizadas, crear tipos de productos únicos, integrarte con cualquier API de terceros y extender la funcionalidad con cualquiera de los más de 60.000 plugins de WordPress disponibles. La contrapartida es que esta flexibilidad requiere más conocimiento técnico o un socio de desarrollo capaz.&lt;/p&gt;
&lt;h3 id=&quot;escalabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escalabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escalabilidad&lt;/h3&gt;
&lt;p&gt;Ambas plataformas escalan para tiendas de alto tráfico, pero escalan de forma diferente. Shopify maneja la escalabilidad de infraestructura automáticamente dentro de las restricciones de su plataforma. WooCommerce escala a través de decisiones de arquitectura de alojamiento: servidores dedicados, balanceadores de carga, cache Redis, configuración de CDN y optimización de base de datos. Una tienda WooCommerce bien arquitecturada maneja millones de visitantes mensuales y miles de pedidos diarios sin problemas.&lt;/p&gt;
&lt;h3 id=&quot;portabilidad-de-datos-e-independencia-de-proveedor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#portabilidad-de-datos-e-independencia-de-proveedor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Portabilidad de datos e independencia de proveedor&lt;/h3&gt;
&lt;p&gt;Con Shopify, la exportacion de datos completos de la tienda (especialmente contrasenas de clientes, datos específicos de aplicaciones y ciertos metadatos de pedidos) tiene limitaciones. Algunos datos residen dentro del ecosistema de Shopify y aplicaciones de terceros, lo que dificulta una exportacion limpia.&lt;/p&gt;
&lt;p&gt;WooCommerce almacena todo en una base de datos MySQL que controlas completamente. Cada producto, clientes, pedido, resena y campo de metadatos es accesible via consultas directas a la base de datos, REST API o WP-CLI. Nunca estas atado a un proveedor.&lt;/p&gt;
&lt;h2 id=&quot;planificar-tu-migración-la-lista-de-verificación-pre-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#planificar-tu-migración-la-lista-de-verificación-pre-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Planificar tu migración: la lista de verificación pre-migración&lt;/h2&gt;
&lt;p&gt;Una migración exitosa comienza semanas antes de que se muevan datos. Apresurar esta fase es la causa más comun de fallos en la migración.&lt;/p&gt;
&lt;h3 id=&quot;paso-1-auditar-tu-tienda-shopify&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-auditar-tu-tienda-shopify&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Auditar tu tienda Shopify&lt;/h3&gt;
&lt;p&gt;Comienza documentando todo en tu tienda actual:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cantidad y complejidad de productos&lt;/strong&gt; - Productos simples, productos variables con multiples atributos, descargas digitales, suscripciones, paquetes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuentas de clientes&lt;/strong&gt; - Total de clientes activos, aquellos con direcciones guardadas e historial de pedidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Historial de pedidos&lt;/strong&gt; - Hasta donde necesitas preservar pedidos (para reclamaciones de garantia, devoluciones, analítica)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de contenido&lt;/strong&gt; - Sobre nosotros, contacto, FAQ, páginas de politicas, publicaciónes del blog&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funcionalidad personalizada&lt;/strong&gt; - Aplicaciones e integraciones de Shopify que necesitan equivalentes en WooCommerce&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estructura de URL&lt;/strong&gt; - Shopify usa los prefijos &lt;code&gt;/products/&lt;/code&gt;, &lt;code&gt;/collections/&lt;/code&gt;, &lt;code&gt;/pages/&lt;/code&gt; que difieren de los valores predeterminados de WooCommerce&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-2-rastrear-y-mapear-cada-url&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-rastrear-y-mapear-cada-url&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Rastrear y mapear cada URL&lt;/h3&gt;
&lt;p&gt;Este paso es innegociable para la preservacion de SEO. Usa Screaming Frog, Sitebulb o un rastreador similar para exportar cada URL indexada de tu tienda Shopify:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Patron de URL Shopify              → Equivalente WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/products/blue-widget              → /product/blue-widget/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/collections/summer-sale           → /product-category/summer-sale/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/pages/about-us                    → /about-us/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/blogs/news/my-article             → /blog/my-article/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Exporta este mapeo a una hoja de calculo. Cada URL que tiene tráfico organico, backlinks o enlaces internos debe tener una regla de redireccion correspondiente. Omitir incluso una URL de alto tráfico significa posiciones perdidas y errores 404 para tus visitantes.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-elegir-tu-alojamiento-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-elegir-tu-alojamiento-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Elegir tu alojamiento WooCommerce&lt;/h3&gt;
&lt;p&gt;Tu eleccion de alojamiento impacta directamente el rendimiento de la tienda y el proceso de migración. Para WooCommerce, prioriza:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PHP 8.2+ con OPcache habilitado&lt;/li&gt;
&lt;li&gt;MySQL 8.0 o MariaDB 10.6+&lt;/li&gt;
&lt;li&gt;Redis o Memcached para cache de objetos&lt;/li&gt;
&lt;li&gt;Cache a nivel de servidor (Nginx FastCGI o Varnish)&lt;/li&gt;
&lt;li&gt;Entorno de staging para pruebas antes del lanzamiento&lt;/li&gt;
&lt;li&gt;Copias de seguridad diarias automáticas con recuperacion punto en el tiempo&lt;/li&gt;
&lt;li&gt;Acceso SSH para operaciones WP-CLI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los alojamientos WordPress gestionados como Cloudways, Kinsta y GridPane proporcionan la mayoria de estas funcionalidades de serie. La eleccion correcta de alojamiento depende del volumen de tráfico, presupuesto y requisitos técnicos.&lt;/p&gt;
&lt;h3 id=&quot;paso-4-instalar-wordpress-y-woocommerce-en-staging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-instalar-wordpress-y-woocommerce-en-staging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Instalar WordPress y WooCommerce en staging&lt;/h3&gt;
&lt;p&gt;Configura tu nueva tienda en un dominio o subdominio de staging primero. Nunca migres directamente a producción.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar WordPress via WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; download&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dbname=store_db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dbuser=store_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dbpass=secure_password&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=staging.example.com&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --title=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;My Store&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --admin_user=admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --admin_email=admin@example.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar y activar WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; woocommerce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar plugins esenciales&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress-seo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; redirection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; redis-cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configura los ajustes de WooCommerce para que coincidan con tu configuración actual de Shopify:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pasarelas de pago (Stripe, PayPal, etc.)&lt;/li&gt;
&lt;li&gt;Zonas y métodos de envio&lt;/li&gt;
&lt;li&gt;Configuración de impuestos&lt;/li&gt;
&lt;li&gt;Notificaciones por correo electronico&lt;/li&gt;
&lt;li&gt;Estructura de enlaces permanentes (establece en &lt;code&gt;/%postname%/&lt;/code&gt; para URLs limpias)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;exportar-datos-de-shopify&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#exportar-datos-de-shopify&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Exportar datos de Shopify&lt;/h2&gt;
&lt;p&gt;Shopify proporciona funcionalidad de exportacion CSV integrada para productos, clientes y pedidos. Accede a estos desde tu panel de administración de Shopify.&lt;/p&gt;
&lt;h3 id=&quot;exportacion-de-productos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#exportacion-de-productos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Exportacion de productos&lt;/h3&gt;
&lt;p&gt;Navega a &lt;strong&gt;Products &gt; All Products&lt;/strong&gt; en el admin de Shopify, selecciona todos los productos y haz clic en &lt;strong&gt;Export&lt;/strong&gt;. Elige “All products” y “CSV for Excel, Numbers, or other spreadsheet programs.” Este CSV contiene:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Título del producto, descripción, proveedor, etiquetas&lt;/li&gt;
&lt;li&gt;Información de variantes (SKU, precio, peso, inventario)&lt;/li&gt;
&lt;li&gt;URLs de imágenes&lt;/li&gt;
&lt;li&gt;Título SEO y meta descripción&lt;/li&gt;
&lt;li&gt;Estado del producto (activo, borrador, archivado)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para tiendas con más de 10.000 productos o estructuras de variantes complejas, la Shopify Admin API proporciona exportaciones más fiables con metadatos completos.&lt;/p&gt;
&lt;h3 id=&quot;exportacion-de-clientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#exportacion-de-clientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Exportacion de clientes&lt;/h3&gt;
&lt;p&gt;Exporta clientes desde &lt;strong&gt;Customers &gt; Export&lt;/strong&gt; en el admin de Shopify. La exportacion incluye nombres, correos electronicos, direcciones, números de telefono, recuento de pedidos y gasto total. Ten en cuenta que las contrasenas de los clientes no pueden exportarse debido al hashing unidireccional, por lo que todos los clientes necesitaran establecer nuevas contrasenas en WooCommerce.&lt;/p&gt;
&lt;h3 id=&quot;exportacion-de-pedidos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#exportacion-de-pedidos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Exportacion de pedidos&lt;/h3&gt;
&lt;p&gt;La exportacion nativa de pedidos de Shopify funciona para tiendas más pequeñas. Para grandes historiales de pedidos, usa la API de Shopify o una aplicación de exportacion dedicada. Los datos de pedidos incluyen números de pedido, artículos de linea, información de envio, estado de pago y detalles de cumplimiento.&lt;/p&gt;
&lt;h2 id=&quot;importar-datos-a-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#importar-datos-a-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Importar datos a WooCommerce&lt;/h2&gt;
&lt;p&gt;Aqui es donde la migración se vuelve técnica. Tienes tres enfoques principales, cada uno adaptado a diferentes escenarios.&lt;/p&gt;
&lt;h3 id=&quot;opción-1-herramientas-de-migración-automatizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opción-1-herramientas-de-migración-automatizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opción 1: Herramientas de migración automatizadas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cart2Cart&lt;/strong&gt; y &lt;strong&gt;LitExtension&lt;/strong&gt; son los dos principales servicios de migración automatizada. Se conectan directamente a ambas plataformas y transfieren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Productos con todas las variantes, imágenes y metadatos&lt;/li&gt;
&lt;li&gt;Categorías y etiquetas con jerarquía preservada&lt;/li&gt;
&lt;li&gt;Clientes con direcciones e historial de pedidos&lt;/li&gt;
&lt;li&gt;Pedidos con artículos de linea y estado&lt;/li&gt;
&lt;li&gt;Publicaciones del blog y páginas CMS&lt;/li&gt;
&lt;li&gt;Cupones y reglas de descuento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambas herramientas ofrecen una migración demo gratuita de un número limitado de entidades para que puedas verificar los resultados antes de comprometerte. Los precios son individuales y se basan en el número de entidades a migrar.&lt;/p&gt;
&lt;p&gt;Las herramientas automatizadas son la mejor opción cuando tienes estructuras de variantes complejas, grandes historiales de pedidos o experiencia técnica limitada. Manejan la transformación de datos entre el modelo de datos de Shopify y el esquema de base de datos de WooCommerce automáticamente.&lt;/p&gt;
&lt;h3 id=&quot;opción-2-importador-csv-integrado-de-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opción-2-importador-csv-integrado-de-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opción 2: Importador CSV integrado de WooCommerce&lt;/h3&gt;
&lt;p&gt;WooCommerce incluye un importador de productos CSV en &lt;strong&gt;WooCommerce &gt; Products &gt; Import&lt;/strong&gt;. Funciona bien para catálogos de productos sencillos, pero requiere que las columnas del CSV coincidan con el formato esperado por WooCommerce.&lt;/p&gt;
&lt;p&gt;El formato CSV de Shopify difiere del de WooCommerce, por lo que necesitaras transformar los datos. Diferencias clave en el mapeo de columnas:&lt;/p&gt;

















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Columna CSV Shopify&lt;/th&gt;&lt;th&gt;Columna CSV WooCommerce&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Title&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Body (HTML)&lt;/td&gt;&lt;td&gt;Description&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vendor&lt;/td&gt;&lt;td&gt;Attribute (or meta)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Type&lt;/td&gt;&lt;td&gt;Categories&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tags&lt;/td&gt;&lt;td&gt;Tags&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Variant Price&lt;/td&gt;&lt;td&gt;Regular price&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Variant Compare At Price&lt;/td&gt;&lt;td&gt;Sale price&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Variant SKU&lt;/td&gt;&lt;td&gt;SKU&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Variant Inventory Qty&lt;/td&gt;&lt;td&gt;Stock&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Image Src&lt;/td&gt;&lt;td&gt;Images&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;opción-3-importacion-masiva-via-wp-cli&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opción-3-importacion-masiva-via-wp-cli&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opción 3: Importacion masiva via WP-CLI&lt;/h3&gt;
&lt;p&gt;Para desarrolladores y catálogos extensos, WP-CLI proporciona el maximo control sobre el proceso de importacion. Aqui tienes un flujo de trabajo práctico para importar productos desde un CSV preparado.&lt;/p&gt;
&lt;p&gt;Primero, prepara tu CSV en formato WooCommerce (despues de transformar desde la exportacion de Shopify):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Importar productos desde CSV usando WP-CLI y WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --name=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Blue Widget&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --type=simple&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --regular_price=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;29.99&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --sku=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;BW-001&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --description=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Premium blue widget with reinforced edges.&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --short_description=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Durable blue widget.&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --categories=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[{&quot;id&quot;:15}]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --images=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[{&quot;src&quot;:&quot;https://example.com/images/blue-widget.jpg&quot;}]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --manage_stock=true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --stock_quantity=150&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --user=admin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para operaciones masivas, automatiza la importacion con un bucle que lee de tu CSV transformado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# bulk-import-products.sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Lee un CSV y crea productos WooCommerce via WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;INPUT_FILE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;products-woo-format.csv&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SITE_PATH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/var/www/html&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Saltar linea de encabezado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$INPUT_FILE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; IFS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; sku&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; price&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; stock&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; category_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; image_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --name=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --type=simple&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --regular_price=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$price&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --sku=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$sku&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --description=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$description&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --manage_stock=true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --stock_quantity=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$stock&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --categories=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;[{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$category_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}]&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --images=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;[{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$image_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}]&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --user=admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    --path=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$SITE_PATH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Importado: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; (SKU: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$sku&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Importacion completada.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para productos variables con multiples atributos y variaciones:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crear un producto variable&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;PRODUCT_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --name=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Widget Pro&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --type=variable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --description=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Available in multiple sizes and colors.&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --sku=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WP-PRO&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --categories=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[{&quot;id&quot;:15}]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --attributes=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[{&quot;name&quot;:&quot;Size&quot;,&quot;options&quot;:[&quot;Small&quot;,&quot;Medium&quot;,&quot;Large&quot;],&quot;visible&quot;:true,&quot;variation&quot;:true},{&quot;name&quot;:&quot;Color&quot;,&quot;options&quot;:[&quot;Red&quot;,&quot;Blue&quot;,&quot;Green&quot;],&quot;visible&quot;:true,&quot;variation&quot;:true}]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --user=admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --porcelain&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crear variaciones para el producto variable&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product_variation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$PRODUCT_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --regular_price=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;24.99&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --sku=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WP-PRO-SM-RED&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --attributes=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[{&quot;name&quot;:&quot;Size&quot;,&quot;option&quot;:&quot;Small&quot;},{&quot;name&quot;:&quot;Color&quot;,&quot;option&quot;:&quot;Red&quot;}]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --manage_stock=true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --stock_quantity=50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --user=admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product_variation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$PRODUCT_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --regular_price=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;29.99&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --sku=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WP-PRO-MD-BLUE&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --attributes=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[{&quot;name&quot;:&quot;Size&quot;,&quot;option&quot;:&quot;Medium&quot;},{&quot;name&quot;:&quot;Color&quot;,&quot;option&quot;:&quot;Blue&quot;}]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --manage_stock=true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --stock_quantity=75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --user=admin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para importar imágenes de productos en masa y asociarlas a productos existentes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Descargar y asociar imagenes a productos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 123&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --images=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[{&quot;src&quot;:&quot;https://cdn.example.com/product-image-1.jpg&quot;},{&quot;src&quot;:&quot;https://cdn.example.com/product-image-2.jpg&quot;}]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --user=admin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verificar los resultados de la importacion:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Contar productos importados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --user=admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Comprobar productos sin imagenes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;SELECT p.ID, p.post_title FROM wp_posts p&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id AND pm.meta_key = &apos;_thumbnail_id&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  WHERE p.post_type = &apos;product&apos; AND pm.meta_value IS NULL&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Verificar niveles de stock&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=id,name,sku,stock_quantity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=table&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --user=admin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;importar-clientes-y-pedidos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#importar-clientes-y-pedidos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Importar clientes y pedidos&lt;/h3&gt;
&lt;p&gt;Las importaciones de clientes y pedidos son más complejas que las de productos debido a los datos relacionales (los pedidos hacen referencia a clientes y productos). Para estos, se recomiendan encarecidamente herramientas automatizadas como Cart2Cart o LitExtension. Si prefieres un enfoque programatico, la REST API de WooCommerce o un script de importacion PHP personalizado usando &lt;code&gt;wc_create_order()&lt;/code&gt; proporciona control total.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crear un clientes via WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; customer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --email=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;customer@example.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --first_name=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Jan&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --last_name=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Kowalski&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --billing=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;{&quot;first_name&quot;:&quot;Jan&quot;,&quot;last_name&quot;:&quot;Kowalski&quot;,&quot;address_1&quot;:&quot;ul. Dluga 12&quot;,&quot;city&quot;:&quot;Gdansk&quot;,&quot;postcode&quot;:&quot;80-001&quot;,&quot;country&quot;:&quot;PL&quot;}&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --user=admin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;preservar-seo-durante-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preservar-seo-durante-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preservar SEO durante la migración&lt;/h2&gt;
&lt;p&gt;La preservacion de SEO es el aspecto de mayor riesgo en cualquier migración de plataforma. Una estrategia de redireccion fallida puede eliminar años de tráfico organico en dias.&lt;/p&gt;
&lt;h3 id=&quot;diferencias-en-la-estructura-de-url&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diferencias-en-la-estructura-de-url&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diferencias en la estructura de URL&lt;/h3&gt;
&lt;p&gt;Shopify y WooCommerce usan patrones de URL predeterminados diferentes. Debes tener en cuenta cada variacion:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Shopify                          → WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/products/product-name           → /product/product-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/collections/category-name       → /product-category/category-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/collections/all                 → /shop/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/pages/page-name                 → /page-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/blogs/news                      → /blog/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/blogs/news/article-name         → /blog/article-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/cart                            → /cart/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/checkout                        → /checkout/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/account                         → /my-account/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;implementar-redirecciones-301&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementar-redirecciones-301&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementar redirecciones 301&lt;/h3&gt;
&lt;p&gt;Las redirecciones 301 son señales de redireccion permanente que pasan aproximadamente el 95-99% de la equidad de enlaces a la nueva URL. Tienes varias opciones de implementación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opción A: Redirecciones a nivel de servidor (recomendado por rendimiento)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para Nginx:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# /etc/nginx/conf.d/shopify-redirects.conf&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de productos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/products/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /product/$1/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;permanent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de colecciones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/collections/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /product-category/$1/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;permanent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de páginas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/pages/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /$1/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;permanent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de blog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/blogs/news/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /blog/$1/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;permanent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/blogs/news/?$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /blog/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;permanent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redireccion de cuenta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/account/?$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /my-account/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;permanent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para Apache (.htaccess):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de productos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^products/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /product/$1/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de colecciones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^collections/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /product-category/$1/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de páginas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^pages/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /$1/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones de blog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^blogs/news/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /blog/$1/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^blogs/news/?$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /blog/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Opción B: Plugin de redireccion de WordPress&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;El plugin Redirection para WordPress proporciona una GUI para gestionar redirecciones y registra errores 404 para que puedas detectar cualquier URL omitida. Es más fácil de mantener pero ligeramente más lento que las redirecciones a nivel de servidor porque cada redireccion pasa por PHP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opción C: Redirecciones individuales a nivel de producto&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Algunos productos pueden tener diferentes slugs entre plataformas (debido a las convenciones de nomenclatura de Shopify o cambios manuales de slugs). Para estos, crea reglas de redireccion individuales:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Usar WP-CLI para comprobar discrepancias de URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Compara tu exportacion de URL de Shopify con los slugs de productos de WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --post_type=product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=ID,post_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; woo-products.csv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cruza esto con tu mapa de URL de Shopify y crea redirecciones específicas para cualquier discrepancia.&lt;/p&gt;
&lt;h3 id=&quot;enviar-el-nuevo-mapa-del-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enviar-el-nuevo-mapa-del-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enviar el nuevo mapa del sitio&lt;/h3&gt;
&lt;p&gt;Despues de la migración e implementación de redirecciones:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Genera un nuevo mapa del sitio XML usando Yoast SEO o Rank Math&lt;/li&gt;
&lt;li&gt;Envia el nuevo mapa del sitio en Google Search Console&lt;/li&gt;
&lt;li&gt;Elimina o actualiza la referencia antigua del mapa del sitio&lt;/li&gt;
&lt;li&gt;Usa la herramienta de inspeccion de URL de Google Search Console para verificar que las páginas clave estan indexadas correctamente&lt;/li&gt;
&lt;li&gt;Monitoriza el informe de cobertura en busca de nuevos errores de rastreo&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;preservar-metadatos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preservar-metadatos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preservar metadatos&lt;/h3&gt;
&lt;p&gt;Asegura que cada página migrada conserva su título SEO y meta descripción. Si usaste títulos SEO personalizados en Shopify, mapea estos a los campos correspondientes de Yoast SEO o Rank Math en WooCommerce:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Establecer título SEO de Yoast para un producto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 123&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _yoast_wpseo_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Custom SEO Title - Store Name&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 123&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _yoast_wpseo_metadesc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Custom meta description for this product.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Actualizar meta SEO en masa desde CSV&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; IFS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; product_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; seo_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; seo_desc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$product_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _yoast_wpseo_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$seo_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$product_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _yoast_wpseo_metadesc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$seo_desc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; seo-metadata.csv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;etiquetas-canonicas-y-contenido-duplicado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#etiquetas-canonicas-y-contenido-duplicado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Etiquetas canonicas y contenido duplicado&lt;/h3&gt;
&lt;p&gt;WooCommerce y Yoast SEO manejan las etiquetas canonicas automáticamente, pero verifica que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las páginas de productos apuntan a si mismás (no a URLs de Shopify)&lt;/li&gt;
&lt;li&gt;Las páginas de categorías tienen canonicas adecuadas&lt;/li&gt;
&lt;li&gt;Las páginas páginadas usan &lt;code&gt;rel=&quot;next&quot;&lt;/code&gt; y &lt;code&gt;rel=&quot;prev&quot;&lt;/code&gt; correctamente&lt;/li&gt;
&lt;li&gt;No existe contenido duplicado entre páginas &lt;code&gt;/product/&lt;/code&gt; y &lt;code&gt;/shop/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lista-de-verificación-post-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-post-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación post-migración&lt;/h2&gt;
&lt;p&gt;Usa esta lista de verificación despues de la migración pero antes de apuntar tu dominio de producción a la nueva tienda WooCommerce.&lt;/p&gt;
&lt;h3 id=&quot;verificación-de-funcionalidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-de-funcionalidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación de funcionalidad&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Todos los productos se muestran con títulos, descripciones, precios e imágenes correctos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los productos variables muestran todas las opciones y permiten seleccion&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; La búsqueda de productos devuelve resultados precisos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las páginas de archivo de categorías y etiquetas funcionan correctamente&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; La funcionalidad del carrito funciona (anadir, eliminar, actualizar cantidades)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El proceso de checkout se completa exitosamente con transacciones de prueba&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las pasarelas de pago procesan pagos y emiten confirmaciones&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los calculos de envio devuelven tarifas correctas para todas las zonas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los calculos de impuestos se aplican correctamente por region&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El registro e inicio de sesion de clientes funcionan&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los correos de confirmacion de pedido se envian correctamente&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los códigos de cupon aplican descuentos correctamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;verificación-de-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-de-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación de SEO&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las redirecciones 301 se resuelven correctamente para todas las URLs mapeadas (probar con curl -I)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; No existen cadenas ni bucles de redireccion&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El mapa del sitio XML se genera e incluye todas las URLs de productos y categorías&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Robots.txt permite el rastreo de páginas de productos y categorías&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los títulos SEO y meta descripciones estan presentes en todas las páginas clave&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las etiquetas canonicas apuntan a las URLs correctas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los datos estructurados (schema Product) se renderizan correctamente&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Google Search Console no muestra nuevos errores críticos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las meta etiquetas Open Graph y Twitter Card estan presentes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;verificación-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación de rendimiento&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; La página de inicio carga en menos de 3 segundos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las páginas de productos alcanzan LCP por debajo de 2,5 segundos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los Core Web Vitals pasan en PageSpeed Insights&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las imágenes usan formato WebP o AVIF con carga diferida&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El cache esta configurado (cache de página, cache de objetos, cache de navegador)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El CDN esta activo para recursos estaticos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;integridad-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integridad-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integridad de datos&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El recuento de productos coincide entre Shopify y WooCommerce&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El recuento de clientes coincide (verificar con &lt;code&gt;wp user list --role=customer --format=count&lt;/code&gt;)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; El historial de pedidos es accesible y preciso&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Los niveles de inventario son correctos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Las resenas de productos se han transferido (si aplica)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lanzamiento-el-proceso-de-transicion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lanzamiento-el-proceso-de-transicion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lanzamiento: el proceso de transicion&lt;/h2&gt;
&lt;p&gt;Cuando las pruebas en staging estan completas y cada punto de la lista de verificación pasa, programa la transicion durante el periodo de menor tráfico.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pon Shopify en modo mantenimiento&lt;/strong&gt; para prevenir nuevos pedidos durante la migración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ejecuta una sincronizacion final de datos&lt;/strong&gt; para capturar cualquier pedido o clientes creado desde la migración inicial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualiza el DNS&lt;/strong&gt; para apuntar tu dominio al nuevo alojamiento WooCommerce&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica el certificado SSL&lt;/strong&gt; y asegura que HTTPS funciona para todas las páginas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba el sitio en producción&lt;/strong&gt; inmediatamente despues de la propagacion de DNS (comprueba redirecciones, checkout, procesamiento de pagos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Envia el mapa del sitio actualizado&lt;/strong&gt; en Google Search Console&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoriza Google Search Console&lt;/strong&gt; diariamente durante las primeras dos semanas, observando errores de rastreo, caidas de indexacion o problemas de redireccion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantien Shopify activo&lt;/strong&gt; durante al menos 30 dias despues de la migración para poder consultar datos históricos y manejar cualquier caso extremo&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La propagacion de DNS tipicamente tarda de 1 a 48 horas. Durante esta ventana, algunos visitantes pueden llegar a la antigua tienda Shopify mientras otros llegan a la nueva tienda WooCommerce. Esto es normal y se resuelve por si solo a medida que las caches de DNS expiran en todo el mundo.&lt;/p&gt;
&lt;h2 id=&quot;errores-comunes-de-migración-y-como-evitarlos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-de-migración-y-como-evitarlos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes de migración y como evitarlos&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Olvidar URLs de páginación.&lt;/strong&gt; Shopify página colecciones con &lt;code&gt;?page=2&lt;/code&gt;, mientras que WooCommerce usa &lt;code&gt;/page/2/&lt;/code&gt;. Si tus páginas de coleccion páginadas tenian backlinks o tráfico, redirigelas específicamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ignorar URLs de imágenes.&lt;/strong&gt; Shopify aloja imágenes de productos en su CDN (cdn.shopify.com). Despues de la migración, actualiza todas las referencias internas para apuntar a imágenes en tu nuevo alojamiento. Los enlaces de imágenes rotos perjudican tanto la experiencia del usuario como el SEO.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Saltar el restablecimiento de contrasenas de clientes.&lt;/strong&gt; Comúnica proactivamente con tus clientes. Envia un correo electronico antes de la migración explicando el cambio y activa correos de restablecimiento de contrasena inmediatamente despues del lanzamiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No probar en móvil.&lt;/strong&gt; Los dispositivos móviles representan más del 60% del tráfico de e-commerce. Prueba todo el flujo de checkout en multiples dispositivos móviles, no solo en escritorio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eliminar Shopify demasiado pronto.&lt;/strong&gt; Mantien tu suscripcion de Shopify activa durante al menos 30 dias despues de la migración. Esto te da una red de seguridad para la verificación de datos y el manejo de cualquier redireccion omitida.&lt;/p&gt;
&lt;h2 id=&quot;woocommerce-vs-shopify-el-veredicto-honesto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#woocommerce-vs-shopify-el-veredicto-honesto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WooCommerce vs Shopify: el veredicto honesto&lt;/h2&gt;
&lt;p&gt;Ninguna plataforma es universalmente mejor. La eleccion correcta depende de la fase de tu negocio, recursos técnicos y prioridades.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige Shopify si&lt;/strong&gt; quieres cero gestión de servidor, acabas de empezar y valoras la simplicidad por encima de todo. Shopify maneja el alojamiento, la seguridad y las actualizaciones automáticamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige WooCommerce si&lt;/strong&gt; quieres propiedad y control total, necesitas personalización profunda, quieres evitar comisiones por transaccion continuas, planeas escalar significativamente, o necesitas integraciones que el ecosistema de Shopify no soporta. WooCommerce requiere más compromiso técnico, ya sea interno o a través de un socio de desarrollo, pero recompensa esa inversión con flexibilidad e independencia.&lt;/p&gt;
&lt;p&gt;Para negocios establecidos que migran de Shopify a WooCommerce, la transicion representa un cambio de alquilar tu tienda a poseerla. El esfuerzo inicial de migración se amortiza a través de comisiones más bajas, mayor control y potencial de crecimiento ilimitado.&lt;/p&gt;
&lt;h2 id=&quot;como-wppolandcom-ayuda-con-la-migración-de-shopify-a-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-wppolandcom-ayuda-con-la-migración-de-shopify-a-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como wppoland.com ayuda con la migración de Shopify a WooCommerce&lt;/h2&gt;
&lt;p&gt;En wppoland.com, hemos migrado decenas de tiendas de e-commerce de Shopify a WooCommerce, desde pequeñas boutiques hasta grandes catálogos multilingues con decenas de miles de productos.&lt;/p&gt;
&lt;p&gt;Nuestro proceso de migración incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Auditoria completa de la tienda y planificación de migración&lt;/li&gt;
&lt;li&gt;Transferencia completa de datos de productos, clientes y pedidos&lt;/li&gt;
&lt;li&gt;Estrategia de redireccion que preserva el SEO con verificación de mapeo de URL&lt;/li&gt;
&lt;li&gt;Configuración de WooCommerce, configuración del tema y optimización del rendimiento&lt;/li&gt;
&lt;li&gt;Monitorización y soporte post-migración&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada migración es diferente, y los precios son individuales basados en el tamaño de la tienda, complejidad y requisitos específicos. Si estas considerando pasar de Shopify a WooCommerce y quieres un socio de migración que entienda tanto las implicaciones técnicas como de SEO, contacta con nuestro equipo en wppoland.com para una consulta.&lt;/p&gt;</content:encoded><category>wordpress</category><category>woocommerce</category><category>migration</category><category domain="tag">woocommerce</category><category domain="tag">shopify</category><category domain="tag">migration</category><category domain="tag">ecommerce</category><category domain="tag">wp-cli</category><category domain="tag">seo</category><category domain="tag">301-redirects</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>WooCommerce UK - pagos, envio e IVA: la guía completa de configuración</title><link>https://wppoland.com/es/woocommerce-uk-pagos-envio-iva-guia/</link><guid isPermaLink="true">https://wppoland.com/es/woocommerce-uk-pagos-envio-iva-guia/</guid><description>Configura WooCommerce para el mercado britanico con las pasarelas de pago adecuadas, integración de envio Royal Mail, configuración de IVA y cumplimiento de Making Tax Digital. Ejemplos practicos de código incluidos.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot;&gt;
&lt;p&gt;Vender a clientes britanicos con WooCommerce requiere más que instalar un tema y anadir productos. El Reino Unido tiene regulaciones de pago específicas, un sistema postal con su propio ecosistema de API, tres tasas de IVA distintas y un sistema de reporte fiscal digital obligatorio por el gobierno. Equivocarse en cualquiera de estos aspectos significa ventas perdidas, sanciones por incumplimiento, o ambas cosas.&lt;/p&gt;
&lt;p&gt;Esta guía cubre la configuración técnica completa para una tienda WooCommerce enfocada en el mercado britanico: seleccion y configuración de pasarelas de pago que cumplen con Strong Customer Authentication (SCA), integración de Royal Mail para envio nacional e internacional, configuración de las tasas de IVA correctas para cada tipo de producto, y conexión de todo con Making Tax Digital. Cada sección incluye pasos de configuración practicos y ejemplos de código que puedes aplicar directamente.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;pasarelas-de-pago-britanicas-para-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pasarelas-de-pago-britanicas-para-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pasarelas de pago britanicas para WooCommerce&lt;/h2&gt;
&lt;p&gt;El panorama de pagos en UK ha evolucionado significativamente. Los clientes esperan pagos con tarjeta, carteras digitales y, cada vez mas, transferencias bancarias directas via open banking. Tu tienda WooCommerce necesita soportar multiples métodos de pago mientras cumple con las regulaciones financieras britanicas.&lt;/p&gt;
&lt;h3 id=&quot;stripe-la-pasarela-principal-de-pago-con-tarjeta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stripe-la-pasarela-principal-de-pago-con-tarjeta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Stripe: la pasarela principal de pago con tarjeta&lt;/h3&gt;
&lt;p&gt;Stripe es la opción predeterminada para tiendas WooCommerce britanicas y con buena razon. Gestiona el cumplimiento de SCA automáticamente, soporta Apple Pay y Google Pay desde el inicio, y procesa pagos en GBP con tasas por transaccion competitivas.&lt;/p&gt;
&lt;p&gt;Instala el plugin oficial WooCommerce Stripe Payment Gateway del repositorio de plugins de WordPress. Despues de la activacion, navega a WooCommerce &gt; Ajustes &gt; Pagos &gt; Stripe e introduce tus claves API desde el panel de Stripe.&lt;/p&gt;
&lt;p&gt;Puntos clave de configuración para tiendas britanicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Establece la moneda predeterminada en GBP en WooCommerce &gt; Ajustes &gt; General&lt;/li&gt;
&lt;li&gt;Activa la opción Payment Request Buttons para Apple Pay y Google Pay&lt;/li&gt;
&lt;li&gt;Activa la opción “Capture charge immediately” a menos que necesites autorizar primero y capturar despues (comun en escenarios de preventa)&lt;/li&gt;
&lt;li&gt;Activa las herramientas integradas de protección contra fraude de Stripe, incluyendo Radar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para tiendas que necesitan personalizar la experiencia de checkout de Stripe, WooCommerce proporciona hooks de filtro:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Personalizar la descripcion de pago de Stripe mostrada en el checkout.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wc_stripe_payment_request_button_label&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Pay now with card&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Forzar a Stripe a solicitar siempre la direccion de facturacion.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wc_stripe_payment_request_button_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;buy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Stripe también soporta pagos recurrentes a través de WooCommerce Subscriptions, convirtiendolo en la única pasarela que cubre compras únicas, suscripciones y pagos con cartera digital para clientes britanicos.&lt;/p&gt;
&lt;h3 id=&quot;paypal-la-pasarela-secundaria-esencial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paypal-la-pasarela-secundaria-esencial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PayPal: la pasarela secundaria esencial&lt;/h3&gt;
&lt;p&gt;A pesar del auge de las soluciones de pago centradas en tarjeta, PayPal sigue siendo una expectativa de checkout para una porcion significativa de los compradores britanicos. El plugin WooCommerce PayPal Payments (la integración oficial) soporta la última PayPal Commerce Platform, incluyendo opciones Pay Later populares en el mercado britanico.&lt;/p&gt;
&lt;p&gt;Especificaciones de configuración para tiendas britanicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conecta tu cuenta de negocios PayPal a través del asistente de integración en WooCommerce &gt; Ajustes &gt; Pagos &gt; PayPal&lt;/li&gt;
&lt;li&gt;Activa los mensajes “Pay Later” que muestran opciones de pago a plazos en páginas de productos y en el checkout&lt;/li&gt;
&lt;li&gt;Activa tanto la cartera PayPal como el procesamiento de tarjetas (PayPal puede servir como procesador secundario de tarjetas)&lt;/li&gt;
&lt;li&gt;Configura el estilo de los botones para que coincida con el diseño de tu tienda&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La integración de PayPal gestiona el cumplimiento de SCA a través de sus propios flujos de autenticación, por lo que no se requiere configuración adicional por tu parte para el cumplimiento normativo.&lt;/p&gt;
&lt;h3 id=&quot;gocardless-pagos-open-banking-con-tasas-más-bajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gocardless-pagos-open-banking-con-tasas-más-bajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GoCardless: pagos open banking con tasas más bajas&lt;/h3&gt;
&lt;p&gt;Open banking esta transformando los pagos en Reino Unido. GoCardless permite a los clientes de WooCommerce pagar directamente desde su cuenta bancaria, evitando las redes de tarjetas por completo. Los beneficios son sustanciales: tasas de transaccion más bajas que el procesamiento de tarjetas, sin devoluciones de cargo, y confirmacion de pago instantanea.&lt;/p&gt;
&lt;p&gt;El plugin GoCardless for WooCommerce conecta tu tienda a la red open banking. Cuando un clientes selecciona este método de pago en el checkout, es redirigido a su aplicación bancaria (o portal de banca online) para autorizar el pago. El flujo es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El clientes selecciona “Pagar por transferencia bancaria” en el checkout&lt;/li&gt;
&lt;li&gt;El clientes elige su banco de una lista de bancos britanicos&lt;/li&gt;
&lt;li&gt;El clientes se autentica en su aplicación bancaria&lt;/li&gt;
&lt;li&gt;El pago se confirma y el pedido se procesa&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esto es particularmente efectivo para pedidos de mayor valor donde las tasas de transaccion de tarjeta se vuelven significativas, y para tiendas WooCommerce basadas en suscripcion donde el debito directo via GoCardless reduce los fallos de pago en comparación con los problemas de expiracion de tarjeta.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Anadir un mensaje personalizado debajo de la opcion de pago GoCardless en el checkout.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_gateway_description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $description, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $gateway_id)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($gateway_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;gocardless&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $description &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;p class=&quot;gocardless-note&quot;&gt;Pay securely from your bank account. No card details needed.&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $description;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;worldpay-procesamiento-de-pagos-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#worldpay-procesamiento-de-pagos-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Worldpay: procesamiento de pagos empresarial&lt;/h3&gt;
&lt;p&gt;Para tiendas WooCommerce britanicas más grandes, particularmente aquellas con altos volumenes de transacciones o requisitos específicos de categoría de comerciante, Worldpay (ahora parte de FIS) ofrece procesamiento de pagos de nivel empresarial. La presencia de Worldpay en UK esta establecida desde hace mucho tiempo, y muchos grandes minoristas lo utilizan para sus operaciones online.&lt;/p&gt;
&lt;p&gt;La integración de Worldpay con WooCommerce tipicamente requiere un plugin dedicado o una integración personalizada a través de su API de pagos. La configuración implica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Obtener una cuenta de comerciante Worldpay (esto implica un proceso de verificación empresarial)&lt;/li&gt;
&lt;li&gt;Instalar un plugin de pasarela WooCommerce compatible para Worldpay&lt;/li&gt;
&lt;li&gt;Configurar la integración con tu ID de comerciante y credenciales API&lt;/li&gt;
&lt;li&gt;Probar exhaustivamente en modo sandbox antes de ir a producción&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Worldpay soporta todos los principales esquemás de tarjetas, 3D Secure 2.0 para cumplimiento de SCA, y ofrece informes detallados de transacciones. Los precios son individuales y dependen de tu perfil empresarial, volumenes de transaccion y condiciones negociadas.&lt;/p&gt;
&lt;h3 id=&quot;elegir-la-combinación-correcta-de-pasarelas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elegir-la-combinación-correcta-de-pasarelas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elegir la combinación correcta de pasarelas&lt;/h3&gt;
&lt;p&gt;La mayoria de las tiendas WooCommerce britanicas exitosas operan al menos dos pasarelas de pago. Las combinaciones recomendadas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stripe + PayPal&lt;/strong&gt;: cubre la gran mayoria de las preferencias de pago britanicas con minima complejidad de configuración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stripe + PayPal + GoCardless&lt;/strong&gt;: anade open banking para comerciantes y clientes conscientes de los costos que prefieren transferencias bancarias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worldpay + PayPal&lt;/strong&gt;: adecuado para tiendas empresariales que necesitan los servicios de comerciante de Worldpay junto con el alcance al consumidor de PayPal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada pasarela tiene precios individuales basados en el volumen de transacciones, tipo de negocio y condiciones negociadas. Evalua el costo total de propiedad incluyendo tarifas mensuales, tasas por transaccion y costos de gestión de devoluciones de cargo.&lt;/p&gt;
&lt;h2 id=&quot;integración-de-envio-royal-mail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-de-envio-royal-mail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración de envio Royal Mail&lt;/h2&gt;
&lt;p&gt;Royal Mail es la expectativa de envio predeterminada para entregas nacionales en UK. La integración con WooCommerce automatiza la impresion de etiquetas, seguimiento y confirmacion de entrega, eliminando la introduccion manual de datos que causa errores y retrasa el cumplimiento de pedidos.&lt;/p&gt;
&lt;h3 id=&quot;configurar-royal-mail-click--drop&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-royal-mail-click--drop&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar Royal Mail Click &amp;#x26; Drop&lt;/h3&gt;
&lt;p&gt;La plataforma Click &amp;#x26; Drop de Royal Mail es el punto de integración principal para tiendas WooCommerce. Proporciona una API que se conecta a los datos de pedidos de WooCommerce y genera etiquetas de envio con números de seguimiento automáticamente.&lt;/p&gt;
&lt;p&gt;El flujo de integración:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crea una cuenta empresarial Royal Mail y registrate en Click &amp;#x26; Drop&lt;/li&gt;
&lt;li&gt;Instala un plugin de envio WooCommerce Royal Mail que soporte la API Click &amp;#x26; Drop&lt;/li&gt;
&lt;li&gt;Configura tu dirección de remitente, dimensiones predeterminadas de paquetes y servicios preferidos&lt;/li&gt;
&lt;li&gt;Mapea los métodos de envio de WooCommerce a los tipos de servicio Royal Mail&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;configurar-zonas-y-métodos-de-envio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-zonas-y-métodos-de-envio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar zonas y métodos de envio&lt;/h3&gt;
&lt;p&gt;Las zonas de envio de WooCommerce son la base de tu integración Royal Mail. Para tiendas britanicas, tipicamente necesitas tres zonas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Zona 1: UK nacional&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  - Region: Reino Unido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  - Metodos: Royal Mail 1st Class, 2nd Class, Tracked 24, Tracked 48, Special Delivery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Zona 2: Europa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  - Region: paises de la UE&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  - Metodos: Royal Mail International Tracked, International Signed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Zona 3: Resto del mundo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  - Region: todos los demas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  - Metodos: Royal Mail International Standard, International Tracked&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para cada zona, configura tarifas de envio basadas en peso, dimensiones o valor del pedido. Los servicios Royal Mail tienen limites específicos de tamaño y peso que tu configuración de WooCommerce debe respetar.&lt;/p&gt;
&lt;h3 id=&quot;automatizar-la-generación-de-etiquetas-de-envio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizar-la-generación-de-etiquetas-de-envio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizar la generación de etiquetas de envio&lt;/h3&gt;
&lt;p&gt;El verdadero valor de la integración Royal Mail viene de la automatizacion. Cuando se realiza un pedido, la integración debe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extraer los detalles del pedido (dirección del destinatario, artículos, peso)&lt;/li&gt;
&lt;li&gt;Seleccionar el servicio Royal Mail apropiado basado en el método de envio elegido en el checkout&lt;/li&gt;
&lt;li&gt;Generar una etiqueta de envio con código de barras&lt;/li&gt;
&lt;li&gt;Actualizar el pedido de WooCommerce con el número de seguimiento&lt;/li&gt;
&lt;li&gt;Enviar al clientes un email de notificación de envio con enlace de seguimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Anadir enlace de seguimiento Royal Mail al email de pedido completado de WooCommerce.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_email_order_details&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WC_Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $order, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $sent_to_admin)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($sent_to_admin) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $tracking_number &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_royal_mail_tracking_number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tracking_number)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $tracking_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://www.royalmail.com/track-your-item#/tracking-results/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tracking_number;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    printf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;&amp;#x3C;h2&gt;Seguimiento de entrega&amp;#x3C;/h2&gt;&amp;#x3C;p&gt;Rastrea tu paquete: &amp;#x3C;a href=&quot;%s&quot;&gt;%s&amp;#x3C;/a&gt;&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tracking_url),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tracking_number)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;manejo-de-casos-especiales-de-envio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-de-casos-especiales-de-envio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo de casos especiales de envio&lt;/h3&gt;
&lt;p&gt;El envio en UK tiene varios escenarios que requieren configuración específica de WooCommerce:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Islas del Canal e Isla de Man&lt;/strong&gt;: Estas estan técnicamente fuera del area de IVA britanica. Configura zonas de envio separadas para estas regiones si envias alli, ya que pueden requerirse declaraciones aduaneras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Irlanda del Norte&lt;/strong&gt;: Bajo el Marco de Windsor, Irlanda del Norte sigue las reglas aduaneras de la UE para mercancias. Tu configuración de envio de WooCommerce debe tener esto en cuenta si vendes productos fisicos a direcciones en Irlanda del Norte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Artículos grandes o pesados&lt;/strong&gt;: Royal Mail tiene limites estrictos de tamaño y peso (max 30 kg, max longitud y perimetro combinados de 300 cm). Configura WooCommerce para cambiar automáticamente a un servicio de mensajeria (como Parcelforce, que es la transportista de paquetes de Royal Mail) para pedidos que excedan los limites de Royal Mail.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Cambiar automáticamente el método de envio para pedidos pesados.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_package_rates&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $rates, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $package)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $total_weight &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($package[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contents&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $item) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $product &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $item[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;data&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $total_weight &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;float&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) $product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_weight&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $item[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;quantity&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Si el peso total excede 20 kg, eliminar opciones estandar de Royal Mail.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($total_weight &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($rates &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $rate_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $rate) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($rate_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;royal_mail_standard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($rates[$rate_id]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $rates;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;configuración-de-iva-britanico-en-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-iva-britanico-en-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de IVA britanico en WooCommerce&lt;/h2&gt;
&lt;p&gt;La configuración de IVA es donde muchas tiendas WooCommerce britanicas se equivocan. UK tiene tres tasas de IVA, reglas específicas para diferentes categorías de productos, y requisitos sobre como se muestra el IVA a los clientes. Acertar esto desde el principio evita correcciones dolorosas más adelante.&lt;/p&gt;
&lt;h3 id=&quot;activar-y-configurar-ajustes-fiscales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#activar-y-configurar-ajustes-fiscales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Activar y configurar ajustes fiscales&lt;/h3&gt;
&lt;p&gt;Navega a WooCommerce &gt; Ajustes &gt; General y marca “Activar tasas y calculos de impuestos.” Luego ve a la pestana Impuestos y configura los ajustes globales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Precios introducidos con impuesto&lt;/strong&gt;: Elige “Si, introducire precios con impuesto incluido” para tiendas B2C (este es el enfoque estándar britanico donde los precios mostrados incluyen IVA)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calcular impuesto basado en&lt;/strong&gt;: Dirección de envio del clientes (estándar para bienes fisicos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clase fiscal de envio&lt;/strong&gt;: Basada en artículos del carrito (la tasa de IVA del envio coincide con los productos enviados)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mostrar precios en la tienda&lt;/strong&gt;: Con impuesto incluido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mostrar precios durante carrito y checkout&lt;/strong&gt;: Con impuesto incluido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configurar-las-tres-tasas-de-iva-britanicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-las-tres-tasas-de-iva-britanicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar las tres tasas de IVA britanicas&lt;/h3&gt;
&lt;p&gt;UK tiene tres niveles de tasa de IVA que necesitas configurar como clases fiscales en WooCommerce:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tasa estándar (20%)&lt;/strong&gt;: Se aplica a la mayoria de bienes y servicios. Esta es la clase fiscal predeterminada en WooCommerce.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tasa reducida (5%)&lt;/strong&gt;: Se aplica a categorías específicas incluyendo sillas de auto para ninos, combustible y energia domestica, materiales de ahorro energetico instalados en propiedades residenciales, y ciertos productos sanitarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tasa cero (0%)&lt;/strong&gt;: Se aplica a la mayoria de alimentos (no comidas de restaurante ni comida caliente para llevar), ropa y calzado infantil, libros y periodicos, transporte público, y cierto equipamiento medico.&lt;/p&gt;
&lt;p&gt;Para configurar estos en WooCommerce, ve a WooCommerce &gt; Ajustes &gt; Impuestos y configura tasas bajo cada clase:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Pestana de tasas estandar:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Pais: GB | Estado: * | Tasa: 20.0000 | Nombre: VAT | Prioridad: 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Pestana de tasas reducidas:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Pais: GB | Estado: * | Tasa: 5.0000 | Nombre: VAT | Prioridad: 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Pestana de tasa cero:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Pais: GB | Estado: * | Tasa: 0.0000 | Nombre: VAT | Prioridad: 1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Asigna cada producto a la clase fiscal correcta en su panel de datos de producto. WooCommerce calcula entonces automáticamente la cantidad correcta de IVA en el checkout.&lt;/p&gt;
&lt;h3 id=&quot;manejo-de-clientes-exentos-de-iva-e-inversión-del-sujeto-pasivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-de-clientes-exentos-de-iva-e-inversión-del-sujeto-pasivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo de clientes exentos de IVA e inversión del sujeto pasivo&lt;/h3&gt;
&lt;p&gt;Algunas transacciones britanicas estan exentas de IVA, y las ventas B2B a empresas registradas para IVA pueden calificar para el tratamiento de inversión del sujeto pasivo. WooCommerce soporta estos escenarios con configuración adicional:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Aplicar exencion de IVA para clientes que proporcionan un número de IVA valido.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_checkout_update_order_review&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_data)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    parse_str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_data, $data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;vat_number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $vat_number &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;vat_number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wppoland_validate_uk_vat_number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($vat_number)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            WC&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;customer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set_is_vat_exempt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            WC&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;customer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set_is_vat_exempt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Validar el formato de un número de IVA britanico.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $vat_number El número de IVA a validar.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; True si el formato es valido.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_validate_uk_vat_number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $vat_number)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cleaned &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strtoupper&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($vat_number));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Números de IVA britanicos: GB seguido de 9 o 12 digitos, o GD/HA seguido de 3 digitos.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;GB(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;{9}|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;{12}|GD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;{3}|HA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;{3})&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $cleaned);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para tiendas que venden productos o servicios digitales, las reglas difieren. Los servicios digitales a consumidores britanicos siempre incluyen IVA britanico independientemente de donde este ubicado el vendedor. Los bienes fisicos siguen las reglas estándar de IVA basadas en la dirección de entrega.&lt;/p&gt;
&lt;h3 id=&quot;mostrar-iva-correctamente-en-facturas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mostrar-iva-correctamente-en-facturas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mostrar IVA correctamente en facturas&lt;/h3&gt;
&lt;p&gt;Las regulaciones de IVA britanicas requieren información específica en las facturas. Tus facturas de WooCommerce deben mostrar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El nombre y dirección de tu empresa&lt;/li&gt;
&lt;li&gt;Tu número de registro de IVA&lt;/li&gt;
&lt;li&gt;La fecha de la factura y un número secuencial único&lt;/li&gt;
&lt;li&gt;El nombre y dirección del clientes&lt;/li&gt;
&lt;li&gt;Una descripción de bienes o servicios&lt;/li&gt;
&lt;li&gt;El importe total excluyendo IVA, el importe de IVA, y el total incluyendo IVA&lt;/li&gt;
&lt;li&gt;La tasa de IVA aplicada a cada artículo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Usa un plugin de facturacion WooCommerce que soporte los requisitos de IVA britanicos, o personaliza la plantilla de factura:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Anadir número de registro de IVA a las facturas de WooCommerce.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_order_details_after_order_table&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WC_Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $order)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $vat_number &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_vat_registration_number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($vat_number)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        printf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;&amp;#x3C;p class=&quot;vat-registration&quot;&gt;&amp;#x3C;strong&gt;Número de registro de IVA:&amp;#x3C;/strong&gt; %s&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($vat_number)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;iva-en-costos-de-envio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#iva-en-costos-de-envio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IVA en costos de envio&lt;/h3&gt;
&lt;p&gt;En UK, el IVA en el envio se cobra a la misma tasa que los bienes enviados. Si envias una mezcla de artículos con tasa estándar y tasa cero en el mismo pedido, el IVA del envio debe ser prorrateado. WooCommerce gestiona esto automáticamente cuando estableces la clase fiscal de envio en “Basada en artículos del carrito.”&lt;/p&gt;
&lt;p&gt;Sin embargo, si todos los artículos en un pedido tienen tasa cero (por ejemplo, ropa infantil), el envio también deberia tener tasa cero. Verifica este comportamiento en tu tienda realizando pedidos de prueba con diferentes combinaciones de productos.&lt;/p&gt;
&lt;h2 id=&quot;cumplimiento-de-making-tax-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cumplimiento-de-making-tax-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cumplimiento de Making Tax Digital&lt;/h2&gt;
&lt;p&gt;Making Tax Digital (MTD) es el sistema obligatorio de HMRC para mantenimiento de registros digitales y presentacion de declaraciones de IVA. Si tu tienda WooCommerce esta registrada para IVA en UK, el cumplimiento de MTD no es opcional.&lt;/p&gt;
&lt;h3 id=&quot;que-requiere-mtd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-requiere-mtd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que requiere MTD&lt;/h3&gt;
&lt;p&gt;MTD para IVA requiere dos cosas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mantenimiento de registros digitales&lt;/strong&gt;: Todos los datos de transacciones de IVA deben almacenarse digitalmente. Las hojas de calculo con introduccion manual de datos no califican. Los datos deben fluir digitalmente desde tu punto de venta (WooCommerce) hasta tus registros contables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Presentacion digital de declaracion de IVA&lt;/strong&gt;: Las declaraciones de IVA deben presentarse a HMRC a través de software compatible con MTD usando la API de HMRC. No puedes escribir manualmente las cifras en el sitio web de HMRC.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;conectar-woocommerce-a-software-compatible-con-mtd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conectar-woocommerce-a-software-compatible-con-mtd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conectar WooCommerce a software compatible con MTD&lt;/h3&gt;
&lt;p&gt;WooCommerce por si mismo no presenta declaraciones de IVA a HMRC. Necesitas una plataforma contable compatible con MTD que se integre con WooCommerce. Las opciones más comunes son:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xero&lt;/strong&gt;: Ofrece un plugin de integración directa con WooCommerce. Sincroniza pedidos, pagos y reembolsos automáticamente. Presenta declaraciones de IVA a HMRC a través de su conexión MTD integrada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;QuickBooks Online&lt;/strong&gt;: Se integra con WooCommerce a través de varios plugins conectores. Gestiona calculos de IVA y presentaciones MTD de forma nativa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FreeAgent&lt;/strong&gt;: Popular entre empresas britanicas más pequeñas. Se conecta a WooCommerce via integraciones API y soporta la presentacion de declaraciones de IVA compatibles con MTD.&lt;/p&gt;
&lt;p&gt;La arquitectura de integración es la siguiente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;WooCommerce (pedidos, reembolsos, datos de IVA)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    v&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Plugin de sincronizacion / conector API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    v&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Software contable (Xero / QuickBooks / FreeAgent)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    v&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;API HMRC MTD (presentacion de declaracion de IVA)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;asegurar-la-integridad-de-datos-para-mtd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#asegurar-la-integridad-de-datos-para-mtd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Asegurar la integridad de datos para MTD&lt;/h3&gt;
&lt;p&gt;El requisito de enlace digital significa que cada paso desde la venta hasta la declaracion de IVA debe estar automatizado. La reintroduccion manual de datos rompe el enlace digital y te pone en riesgo de sanciones de HMRC. Configura tu integración WooCommerce-contabilidad para sincronizar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada pedido completado (incluyendo todos los artículos con tasas de IVA individuales)&lt;/li&gt;
&lt;li&gt;Reembolsos y reembolsos parciales (con ajustes de IVA correctos)&lt;/li&gt;
&lt;li&gt;Cargos de envio y su tratamiento de IVA&lt;/li&gt;
&lt;li&gt;Tasas de pasarelas de pago (estas tipicamente estan fuera del alcance del IVA pero deben registrarse)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Asegurar que los metadatos de pedido WooCommerce incluyen desglose de IVA para sincronizacion contable.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_checkout_order_processed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $order_id)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $order &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wc_get_order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($order_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$order) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $vat_breakdown &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $item) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $tax_class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_tax_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $tax_total &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;float&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) $item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_total_tax&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($vat_breakdown[$tax_class])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $vat_breakdown[$tax_class] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $vat_breakdown[$tax_class] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tax_total;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_meta_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_vat_breakdown&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $vat_breakdown);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;save&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sanciones-y-plazos-de-mtd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sanciones-y-plazos-de-mtd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sanciones y plazos de MTD&lt;/h3&gt;
&lt;p&gt;HMRC aplica un sistema de puntos de sancion por declaraciones de IVA tardias y pagos tardios. Cada presentacion tardia anade un punto de sancion, y una vez que alcanzas el umbral (tipicamente 4 puntos para declarantes trimestrales), se aplica una sancion financiera. Las penalizaciones por pago tardio se calculan como un porcentaje del IVA pendiente.&lt;/p&gt;
&lt;p&gt;Tu pipeline WooCommerce-contabilidad debe ser suficientemente fiable para asegurar que las declaraciones de IVA se preparen con precision y se presenten a tiempo. Configura monitorización para alertarte si la sincronizacion entre WooCommerce y tu software contable falla.&lt;/p&gt;
&lt;h2 id=&quot;probar-tu-configuración-completa-de-woocommerce-uk&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#probar-tu-configuración-completa-de-woocommerce-uk&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Probar tu configuración completa de WooCommerce UK&lt;/h2&gt;
&lt;p&gt;Antes de ir a producción, prueba cada componente de tu configuración britanica sistemáticamente.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-pasarelas-de-pago&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-pasarelas-de-pago&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de pasarelas de pago&lt;/h3&gt;
&lt;p&gt;Cada pasarela proporciona un modo sandbox o de prueba:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stripe&lt;/strong&gt;: Usa números de tarjeta de prueba (4242 4242 4242 4242 para pagos exitosos, 4000 0027 6000 3184 para autenticación SCA requerida)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PayPal&lt;/strong&gt;: Usa cuentas sandbox creadas en el PayPal Developer Dashboard&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GoCardless&lt;/strong&gt;: Usa el entorno sandbox con datos bancarios de prueba&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worldpay&lt;/strong&gt;: Usa el ID de comerciante de prueba y números de tarjeta de prueba proporcionados en tu documentación de Worldpay&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prueba cada pasarela con multiples escenarios: pago exitoso, tarjeta rechazada, desafio SCA, procesamiento de reembolso y renovacion de suscripcion (si aplica).&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-calculo-de-iva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-calculo-de-iva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de calculo de IVA&lt;/h3&gt;
&lt;p&gt;Realiza pedidos de prueba con productos de cada franja de IVA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un pedido solo con artículos de tasa estándar (espera 20% IVA)&lt;/li&gt;
&lt;li&gt;Un pedido solo con artículos de tasa cero (espera 0% IVA)&lt;/li&gt;
&lt;li&gt;Un pedido mixto con artículos de tasa estándar y tasa cero (espera prorrateo correcto)&lt;/li&gt;
&lt;li&gt;Un pedido con artículos de tasa reducida (espera 5% IVA)&lt;/li&gt;
&lt;li&gt;Un pedido B2B con número de IVA válido (espera exencion de IVA si esta configurado)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Verifica que las facturas muestren el desglose correcto de IVA para cada escenario.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-integración-de-envio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-integración-de-envio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de integración de envio&lt;/h3&gt;
&lt;p&gt;Prueba la integración de Royal Mail con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un pedido nacional estándar dentro de los limites de peso de Royal Mail&lt;/li&gt;
&lt;li&gt;Un pedido que excede los limites de peso (deberia enrutarse a transportista alternativo)&lt;/li&gt;
&lt;li&gt;Una entrega a Irlanda del Norte (verifica el manejo aduanero)&lt;/li&gt;
&lt;li&gt;Un pedido internacional (verifica la generación de declaracion aduanera)&lt;/li&gt;
&lt;li&gt;Un pedido donde el clientes selecciona diferentes niveles de servicio de Royal Mail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Confirma que los números de seguimiento se generan, almacenan en el pedido y envian a los clientes en emails de notificación.&lt;/p&gt;
&lt;h2 id=&quot;consideraciones-de-rendimiento-para-procesamiento-de-pagos-britanicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-rendimiento-para-procesamiento-de-pagos-britanicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de rendimiento para procesamiento de pagos britanicos&lt;/h2&gt;
&lt;p&gt;La velocidad de procesamiento de pagos afecta directamente las tasas de conversión. Los clientes britanicos esperan que el checkout se complete en menos de 3 segundos. Optimiza tu flujo de pago:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Precargar Stripe.js para reducir la latencia del checkout.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_cart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;stripe-js-preload&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;https://js.stripe.com/v3/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;strategy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;async&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Optimizaciónes de rendimiento adicionales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Activa actualizaciones de checkout basadas en AJAX para evitar recargas completas de página cuando los clientes cambian los métodos de pago&lt;/li&gt;
&lt;li&gt;Usa el cache de fragmentos integrado de WooCommerce para actualizaciones del carrito&lt;/li&gt;
&lt;li&gt;Minimiza el número de campos de checkout (las direcciones britanicas pueden autocompletarse desde el código postal)&lt;/li&gt;
&lt;li&gt;Implementa integración de búsqueda de código postal para acelerar la introduccion de direcciones y reducir errores de entrega&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;integración-de-búsqueda-de-código-postal-britanico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-de-búsqueda-de-código-postal-britanico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración de búsqueda de código postal britanico&lt;/h3&gt;
&lt;p&gt;Un servicio de búsqueda de código postal mejora dramaticamente la velocidad del checkout y la precision de direcciones para clientes britanicos. Cuando un clientes introduce su código postal, el servicio devuelve una lista de direcciones coincidentes, eliminando errores de introduccion manual.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Cargar script de búsqueda de código postal en la página de checkout.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;uk-postcode-lookup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        get_template_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/js/postcode-lookup.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;1.0.0&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_localize_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;uk-postcode-lookup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;postcodeLookup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;apiUrl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rest_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/v1/postcode-lookup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;nonce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_create_nonce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_rest&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad-para-cumplimiento-de-pagos-britanicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad-para-cumplimiento-de-pagos-britanicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad para cumplimiento de pagos britanicos&lt;/h2&gt;
&lt;p&gt;El procesamiento de pagos en UK conlleva obligaciones de seguridad específicas. Tu tienda WooCommerce debe cumplir los requisitos PCI DSS, que las pasarelas de pago alojadas (Stripe, PayPal, GoCardless) gestionan en gran medida por ti. Sin embargo, tus responsabilidades incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Certificado SSL&lt;/strong&gt;: Obligatorio para cualquier página que maneje datos de pago. WooCommerce te avisara si SSL no esta activo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strong Customer Authentication&lt;/strong&gt;: SCA se aplica para transacciones con tarjeta britanicas. Tanto Stripe como PayPal gestionan esto automáticamente a través de sus integraciones más recientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protección de datos&lt;/strong&gt;: Bajo el RGPD britanico, los datos de pago y del clientes deben almacenarse de forma segura, con politicas de retencion claras y la capacidad de que los clientes soliciten la eliminación de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento PCI DSS SAQ A&lt;/strong&gt;: Si usas formularios de pago alojados (Stripe Elements, botones PayPal), calificas para el cuestionario de autoevaluación PCI más simple.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nunca almacenes números de tarjeta en bruto en WooCommerce. Los plugins de pasarela de pago gestionan la tokenizacion, almacenando solo un token de referencia que no puede usarse para reconstruir el número de tarjeta.&lt;/p&gt;
&lt;h2 id=&quot;errores-comunes-y-como-evitarlos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-y-como-evitarlos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes y como evitarlos&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Visualización incorrecta de IVA&lt;/strong&gt;: Las tiendas B2C britanicas deben mostrar precios con IVA incluido. Si tus precios muestran “sin IVA” a clientes regulares, tus ajustes de visualización fiscal de WooCommerce estan mal. Verifica tanto los ajustes de visualización de la tienda como del carrito/checkout.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Falta de manejo de SCA&lt;/strong&gt;: Los plugins de pasarela de pago más antiguos pueden no soportar 3D Secure 2.0. Usa siempre la última versión de tu plugin de pasarela. Las transacciones que fallen la autenticación SCA seran rechazadas, y los clientes no podran completar su compra.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Envio a Irlanda del Norte&lt;/strong&gt;: Tratar Irlanda del Norte igual que el resto de UK para fines aduaneros causa problemas. Configura una zona de envio separada si vendes bienes que caen bajo un tratamiento aduanero diferente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ruptura del enlace digital MTD&lt;/strong&gt;: Si exportas datos de WooCommerce a una hoja de calculo y luego los introduces manualmente en tu software contable, has roto el enlace digital requerido por MTD. Usa plugins de sincronizacion automática para mantener el cumplimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desajuste de moneda&lt;/strong&gt;: Asegurate de que la moneda base de WooCommerce esta establecida en GBP y que todas las pasarelas de pago estan configuradas para procesar en GBP. La conversión de moneda en el checkout causa confusion y posibles errores de precios.&lt;/p&gt;
&lt;h2 id=&quot;mantenimiento-y-monitorización-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mantenimiento-y-monitorización-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mantenimiento y monitorización continua&lt;/h2&gt;
&lt;p&gt;Una tienda WooCommerce britanica requiere atención regular para mantenerse conforme y funcional:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trimestralmente&lt;/strong&gt;: Revisa las tasas de IVA contra la guía de HMRC (las tasas pueden cambiar en los presupuestos gubernamentales)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mensualmente&lt;/strong&gt;: Verifica que la sincronizacion WooCommerce-contabilidad esta funcionando correctamente y todas las transacciones estan contabilizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despues de actualizaciones de plugins&lt;/strong&gt;: Prueba las pasarelas de pago en modo sandbox despues de cualquier actualización de WooCommerce o plugin de pasarela&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anualmente&lt;/strong&gt;: Revisa tu cuestionario de autoevaluación PCI DSS y actualiza tu evaluación de impacto en la protección de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;obtén-ayuda-experta-con-tu-configuración-woocommerce-uk&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#obtén-ayuda-experta-con-tu-configuración-woocommerce-uk&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Obtén ayuda experta con tu configuración WooCommerce UK&lt;/h2&gt;
&lt;p&gt;Configurar WooCommerce para el mercado britanico implica integración de pasarelas de pago, conexiónes de API de envio, cumplimiento de IVA y configuración de Making Tax Digital. Cada componente debe funcionar correctamente por si solo e integrarse perfectamente con los demas.&lt;/p&gt;
&lt;p&gt;En wppoland.com, construimos y mantenemos tiendas WooCommerce enfocadas en el mercado britanico con pasarelas de pago correctamente configuradas, envio Royal Mail automatizado, manejo de IVA conforme e integraciones contables preparadas para MTD. Si necesitas una tienda WooCommerce construida correctamente desde el primer dia, o si tu tienda existente necesita que su configuración britanica sea revisada y corregida, nuestro equipo de desarrollo puede ayudar.&lt;/p&gt;</content:encoded><category>wordpress</category><category>woocommerce</category><category>ecommerce</category><category domain="tag">woocommerce</category><category domain="tag">uk-ecommerce</category><category domain="tag">payment-gateways</category><category domain="tag">royal-mail</category><category domain="tag">vat</category><category domain="tag">open-banking</category><category domain="tag">making-tax-digital</category><category domain="tag">stripe</category><category domain="tag">shipping</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>CloudFest Hackathon 2026: año record y nueva era de colaboración</title><link>https://wppoland.com/es/cloudfest-hackathon-2026-record-breaking-edition/</link><guid isPermaLink="true">https://wppoland.com/es/cloudfest-hackathon-2026-record-breaking-edition/</guid><description>CloudFest Hackathon 2026 bate records con el número de proyectos y un nuevo calendario. Descubra los detalles del mayor evento para la comunidad de código abierto y WordPress en Europa.</description><pubDate>Sat, 07 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-al-cloudfest-hackathon-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-al-cloudfest-hackathon-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion al CloudFest Hackathon 2026&lt;/h2&gt;
&lt;p&gt;La comunidad de código abierto espera con entusiasmo la novena edicion de CloudFest Hackathon, que tendra lugar a finales de marzo de 2026. Esta edicion promete ser la más histórica en los anales del evento, tanto en cuanto al número de proyectos presentados como a un nuevo calendario ampliado. Los organizadores han preparado una serie de cambios para hacer que este evento sea aun más valioso para los participantes y todo el ecosistema de código abierto.&lt;/p&gt;
&lt;p&gt;Carole Olinger, Directora de CloudFest Hackathon, compartio con la comunidad información sobre como el enorme éxito del evento ha creado nuevos desafios organizativos. Con solo unas 110 plazas disponibles para participantes y solo 10 proyectos entre los que elegir, la seleccion es increiblemente dificil. “Se nos rompe el corazon”, enfatizo Olinger, senalando que incluso veteranos del hackathon a veces no logran entrar.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/contacto/&quot;&gt;participacion de WPPoland en la comunidad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;nuevo-calendario-tres-dias-completos-para-construir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nuevo-calendario-tres-dias-completos-para-construir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nuevo calendario: Tres dias completos para construir&lt;/h3&gt;
&lt;p&gt;Uno de los cambios más significativos en la edicion 2026 es un calendario completamente rediseado. A diferencia de años anteriores, cuando los equipos tenian tiempo limitado para completar sus proyectos, el hackathon de este año ofrece tres dias completos para construir. Este cambio fue introducido en respuesta a los comentarios de participantes que se quejaban de tiempo insuficiente para pulir sus soluciones en ediciones anteriores.&lt;/p&gt;
&lt;p&gt;El nuevo calendario otorga a los equipos mayor flexibilidad en la planificación y ejecucion de sus proyectos. En lugar de competir contra el reloj, los participantes pueden centrarse en la calidad de su código y la innovacion de sus soluciones. Los organizadores senalaron que los proyectos de ediciones anteriores a menudo quedaban incompletos o requerian correcciones significativas despues del hackathon. El nuevo calendario pretende cambiar esta dinámica fundamentalmente.&lt;/p&gt;
&lt;p&gt;La extensión a tres dias no es solo una cuestion de duracion. Es un reconocimiento de que la innovacion genuina requiere tiempo para la exploracion, el error y la iteracion. Los mejores proyectos de código abierto nacen de la experimentacion libre, no de la presion de plazos imposibles.&lt;/p&gt;
&lt;h3 id=&quot;por-que-tres-dias-importan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-tres-dias-importan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que tres dias importan&lt;/h3&gt;
&lt;p&gt;La decision de extender el hackathon a tres dias se baso en varios factores fundamentales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mejora de calidad&lt;/strong&gt;: Mas tiempo permite a los equipos producir proyectos de mayor calidad y más completos. La diferencia entre un prototipo funcional y un proyecto listo para producción a menudo reside en esas horas adicionales de refinamiento.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reduccion del estres&lt;/strong&gt;: Los participantes no tienen que apresurarse, lo que conduce a mejor salud mental durante el evento. La creatividad florece en entornos donde las personas pueden pensar con claridad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Oportunidad de aprendizaje&lt;/strong&gt;: Con más tiempo, los participantes pueden aprender nuevas tecnologías y técnicas durante el propio hackathon, experimentando con herramientas que no habrian probado bajo presion extrema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mejor networking&lt;/strong&gt;: Tiempo adicional para conversaciones informales y construccion de relaciones. Algunos de los proyectos de código abierto más exitosos nacieron de conversaciones casuales durante las pausas del hackathon.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preparacion para el futuro&lt;/strong&gt;: El calendario extendido establece un nuevo estándar para hackathons en toda la industria tecnológica.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;contexto-histórico-del-cloudfest-hackathon&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-histórico-del-cloudfest-hackathon&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto histórico del CloudFest Hackathon&lt;/h3&gt;
&lt;p&gt;CloudFest Hackathon comenzo en 2017 como una extensión natural de la conferencia CloudFest. La primera edicion atrajo a solo 30 participantes, pero rápidamente gano popularidad. Cada año, el número de solicitantes crecio, y con el, la calidad y la innovacion de los proyectos presentados.&lt;/p&gt;
&lt;p&gt;A lo largo de ocho años, el hackathon ha generado muchos proyectos de código abierto significativos que ahora son utilizados por miles de desarrolladores en todo el mundo. Proyectos como WP GraphQL, Faust.js y Calypso se originaron a partir de iniciativas relacionadas con CloudFest. Estos proyectos han tenido un impacto duradero en como los desarrolladores construyen sitios web y aplicaciones en el ecosistema WordPress y más alla.&lt;/p&gt;
&lt;p&gt;La evolucion del hackathon refleja la evolucion del propio ecosistema de código abierto. Lo que comenzo como un evento centrado principalmente en WordPress se ha expandido para abarcar una gama mucho más amplia de tecnologías, desde herramientas de accesibilidad hasta protocolos de distribucion de paquetes y experimentos con inteligencia artificial.&lt;/p&gt;
&lt;h3 id=&quot;por-que-cloudfest-importa-para-el-ecosistema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-cloudfest-importa-para-el-ecosistema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que CloudFest importa para el ecosistema&lt;/h3&gt;
&lt;p&gt;CloudFest Hackathon se destaca de otros eventos de este tipo por varias razones fundamentales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Comunidad internacional&lt;/strong&gt;: Participantes de todo el mundo se reunen para colaborar en proyectos compartidos, creando puentes entre comunidades tecnológicas que normalmente operan de forma aislada.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Apoyo de patrocinadores&lt;/strong&gt;: Empresas como Google, Microsoft, Amazon y Automattic apoyan regularmente el evento, proporcionando recursos, infraestructura y premios.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Impacto real&lt;/strong&gt;: Los proyectos creados en el hackathon a menudo se convierten en proyectos de código abierto completos con comunidades propias, documentación y adopcion a escala global.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Networking de alto nivel&lt;/strong&gt;: Oportunidad de conectar con lideres de la industria en un entorno colaborativo e informal.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;impacto-profesional-para-los-participantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-profesional-para-los-participantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto profesional para los participantes&lt;/h3&gt;
&lt;p&gt;La participacion en CloudFest Hackathon puede tener un impacto significativo en las carreras de los participantes. Muchos participantes de ediciones anteriores encontraron nuevos empleos o recibieron ofertas de colaboración despues de presentar sus proyectos en el hackathon. Empresas como Google, Automattic y otras reclutan regularmente a participantes del hackathon para posiciones relacionadas con código abierto.&lt;/p&gt;
&lt;p&gt;Además del impacto laboral directo, la experiencia de trabajar en un equipo multidisciplinario e internacional bajo presion controlada es invaluable. Los participantes desarrollan habilidades blandas como comunicación intercultural, toma de decisiones rápida y liderazgo técnico que son altamente valoradas en la industria del desarrollo web.&lt;/p&gt;
&lt;h2 id=&quot;proyectos-e-iniciativas-del-cloudfest-hackathon-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proyectos-e-iniciativas-del-cloudfest-hackathon-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proyectos e iniciativas del CloudFest Hackathon 2026&lt;/h2&gt;
&lt;h3 id=&quot;rango-tematico-de-los-proyectos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rango-tematico-de-los-proyectos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rango tematico de los proyectos&lt;/h3&gt;
&lt;p&gt;Los proyectos de este año cubren un rango tematico amplio, desde herramientas de accesibilidad hasta experimentos de infraestructura e inteligencia artificial. Uno de los proyectos más interesantes es un intento de extender el protocolo de distribucion de paquetes FAIR al ecosistema TYPO3. FAIR (Fully Automated Interoperable Repository) es un proyecto que busca crear un sistema descentralizado de distribucion de paquetes para PHP, similar a lo que Cargo es para Rust o npm para JavaScript.&lt;/p&gt;
&lt;p&gt;El proyecto de extender FAIR a TYPO3 es particularmente interesante porque muestra como las ideas de un ecosistema pueden adaptarse a otros. Si el experimento tiene éxito, podria abrir nuevas posibilidades para los desarrolladores PHP en toda Europa y establecer un precedente para la interoperabilidad entre diferentes CMS.&lt;/p&gt;
&lt;p&gt;Otros proyectos destacados incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Herramientas de accesibilidad automatizada&lt;/strong&gt;: Un sistema que escanea sitios WordPress en busca de problemas de accesibilidad y sugiere correcciones automáticas basadas en las directrices WCAG 2.2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de rendimiento impulsada por IA&lt;/strong&gt;: Un plugin que utiliza aprendizaje automático para predecir patrones de tráfico y precargar contenido de forma proactiva.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Federacion de contenido&lt;/strong&gt;: Un protocolo para compartir contenido entre sitios WordPress de forma segura y descentralizada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-regreso-de-anne-mieke-bovelett&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-regreso-de-anne-mieke-bovelett&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El regreso de Anne-Mieke Bovelett&lt;/h3&gt;
&lt;p&gt;La edicion de este año también cuenta con el regreso de una figura conocida en el mundo del hackathon. Anne-Mieke Bovelett, dos veces ganadora del CloudFest Hackathon, ha presentado su proyecto nuevamente. La pregunta que todos se hacen es: ganara por tercera vez?&lt;/p&gt;
&lt;p&gt;Bovelett ya ha demostrado su valia en ediciones anteriores, entregando soluciones innovadoras que superaron las expectativas de organizadores y la comunidad. Su regreso anade un elemento extra de emocion a la edicion de este año, y la comunidad espera ansiosamente los resultados. Su enfoque metodico y su capacidad para formar equipos eficientes la convierten en una competidora formidable.&lt;/p&gt;
&lt;h2 id=&quot;proyecto-artistico-innovador-de-ia-por-alain-schlesser&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proyecto-artistico-innovador-de-ia-por-alain-schlesser&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proyecto artistico innovador de IA por Alain Schlesser&lt;/h2&gt;
&lt;h3 id=&quot;concepto-de-arte-generado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#concepto-de-arte-generado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Concepto de arte generado por IA&lt;/h3&gt;
&lt;p&gt;Uno de los proyectos más innovadores y poco convencionales del hackathon de este año es el trabajo de Alain Schlesser, un experimentado mentor de proyectos. Schlesser creo un proyecto artistico de IA que capturara la atmosfera del evento en tiempo real, transformando datos del mundo fisico en una obra de arte digital en constante evolucion.&lt;/p&gt;
&lt;p&gt;El sistema de Schlesser extraera datos de diversas fuentes: el clima, el sonido ambiente, la actividad en redes sociales y incluso una webcam. Basandose en estos datos, un algoritmo de IA generara una obra de arte digital en evolucion que cambiara a medida que el evento progrese. Cada momento del hackathon quedara capturado en una representacion visual única.&lt;/p&gt;
&lt;h3 id=&quot;significado-para-la-comunidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#significado-para-la-comunidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Significado para la comunidad&lt;/h3&gt;
&lt;p&gt;Este proyecto es un ejemplo del enfoque creativo hacia la tecnología que caracteriza a la comunidad de código abierto. En lugar de centrarse únicamente en proyectos técnicos “serios”, Schlesser demuestra que un hackathon también puede ser un espacio para experimentar con aplicaciones más artisticas e interactivas de la tecnología.&lt;/p&gt;
&lt;p&gt;El proyecto resultante será un fascinante registro visual de la energia y la atmosfera del CloudFest Hackathon 2026. Además, el propio proceso de crear un sistema que recopila y procesa datos de multiples fuentes en tiempo real es técnicamente exigente y puede proporcionar experiencias valiosas para los participantes. La interseccion entre arte y tecnología es un terreno fertil para la innovacion que a menudo se pasa por alto en eventos técnicos convencionales.&lt;/p&gt;
&lt;h2 id=&quot;importancia-del-cloudfest-hackathon-para-el-ecosistema-de-código-abierto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#importancia-del-cloudfest-hackathon-para-el-ecosistema-de-código-abierto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Importancia del CloudFest Hackathon para el ecosistema de código abierto&lt;/h2&gt;
&lt;h3 id=&quot;impulso-a-la-innovacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impulso-a-la-innovacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impulso a la innovacion&lt;/h3&gt;
&lt;p&gt;CloudFest Hackathon ha servido durante mucho tiempo como plataforma para la innovacion en el ecosistema de código abierto. El evento reune a programadores de todo el mundo, dandoles la oportunidad de colaborar en proyectos que pueden tener consecuencias de largo alcance para toda la comunidad.&lt;/p&gt;
&lt;p&gt;A diferencia de las conferencias tipicas donde los participantes principalmente escuchan presentaciones de forma pasiva, un hackathon requiere participacion activa y colaboración. Los equipos deben formular ideas rápidamente, dividir tareas y entregar soluciones funcionales en tiempo limitado. Esta intensidad fomenta la creatividad y conduce a soluciones innovadoras que no surgirian en un entorno más relajado.&lt;/p&gt;
&lt;p&gt;Para los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores WordPress&lt;/a&gt; en particular, el hackathon representa una oportunidad única de trabajar en problemas que afectan a millones de sitios web. Una mejora en la accesibilidad, el rendimiento o la seguridad desarrollada durante un hackathon puede eventualmente beneficiar a los más de 800 millones de sitios que funcionan con WordPress en todo el mundo.&lt;/p&gt;
&lt;h3 id=&quot;construccion-de-comunidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construccion-de-comunidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construccion de comunidad&lt;/h3&gt;
&lt;p&gt;Además del aspecto técnico, CloudFest Hackathon desempena un papel clave en la construccion de comunidad. Participar en un hackathon no es solo una oportunidad para aprender y desarrollar habilidades, sino también una forma de hacer nuevas conexiónes y fortalecer los lazos dentro del ecosistema de código abierto.&lt;/p&gt;
&lt;p&gt;Muchos participantes enfatizan que el valor del evento va mucho más alla de los proyectos entregados. Es una oportunidad para conocer personas con intereses similares, intercambiar experiencias y aprender de programadores más experimentados. Las relaciones formadas durante el hackathon a menudo se convierten en colaboraciónes profesionales duraderas que trascienden el evento mismo.&lt;/p&gt;
&lt;p&gt;La diversidad del hackathon también es notable. Participantes de diferentes paises, culturas y antecedentes técnicos aportan perspectivas únicas que enriquecen cada proyecto. Esta diversidad es fundamental para crear tecnología que sirva a una audiencia global, algo especialmente relevante en el contexto del desarrollo web donde los usuarios provienen de todos los rincones del planeta.&lt;/p&gt;
&lt;h2 id=&quot;información-práctica-para-participantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#información-práctica-para-participantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Información práctica para participantes&lt;/h2&gt;
&lt;h3 id=&quot;como-postular&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-postular&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como postular&lt;/h3&gt;
&lt;p&gt;Para aquellos interesados en participar en futuras ediciones del CloudFest Hackathon, aquí encontraran información clave:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Plazo de inscripcion&lt;/strong&gt;: La inscripcion normalmente se abre varios meses antes del evento. Vale la pena seguir los canales de comunicación oficiales para no perderse la apertura de inscripciones.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Número de plazas&lt;/strong&gt;: Aproximadamente 110 plazas disponibles para participantes, lo que significa que la competencia es muy alta y la preparacion previa es esencial.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Criterios de seleccion&lt;/strong&gt;: Los organizadores consideran la experiencia del participante, la idea del proyecto, la complementariedad del equipo y la contribucion potencial al ecosistema de código abierto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preparacion&lt;/strong&gt;: Antes del hackathon, vale la pena preparar una idea de proyecto clara, identificar personas con las que le gustaria trabajar y familiarizarse con las herramientas y tecnologías relevantes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;estadísticas-de-ediciones-anteriores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estadísticas-de-ediciones-anteriores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estadísticas de ediciones anteriores&lt;/h3&gt;
&lt;p&gt;Aqui se presentan algunas estadísticas de ediciones anteriores del CloudFest Hackathon que ilustran el impacto acumulativo del evento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Participantes totales: más de 800 personas de más de 50 paises&lt;/li&gt;
&lt;li&gt;Número de proyectos creados: más de 70 proyectos funcionales&lt;/li&gt;
&lt;li&gt;Proyectos que se convirtieron en proyectos de código abierto oficiales: más de 20&lt;/li&gt;
&lt;li&gt;Duracion promedio del proyecto: 48-72 horas de desarrollo intensivo&lt;/li&gt;
&lt;li&gt;Porcentaje de participantes que regresan para ediciones posteriores: 40%&lt;/li&gt;
&lt;li&gt;Lineas de código producidas (estimacion): más de 500.000&lt;/li&gt;
&lt;li&gt;Contribuciones a repositorios existentes: más de 300 pull requests&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;socios-y-patrocinadores-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#socios-y-patrocinadores-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Socios y patrocinadores 2026&lt;/h3&gt;
&lt;p&gt;CloudFest Hackathon 2026 cuenta con el apoyo de númerosos socios, incluyendo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Patrocinadores principales&lt;/strong&gt;: Automattic, Google, Microsoft, Amazon Web Services&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patrocinadores técnicos&lt;/strong&gt;: GitHub, GitLab, DigitalOcean&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medios asociados&lt;/strong&gt;: WP Tavern, The Repository, WordPress Community News&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada uno de estos socios contribuye al éxito del evento proporcionando recursos, premios y oportunidades de networking para los participantes. El apoyo corporativo no solo financia el evento, sino que también proporciona infraestructura de nube, herramientas de desarrollo y acceso a APIs que los equipos necesitan para construir sus proyectos.&lt;/p&gt;
&lt;h3 id=&quot;como-maximizar-su-experiencia-en-el-hackathon&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-maximizar-su-experiencia-en-el-hackathon&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como maximizar su experiencia en el hackathon&lt;/h3&gt;
&lt;p&gt;Para sacar el maximo provecho del CloudFest Hackathon, considere estos consejos practicos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prepare con antelacion&lt;/strong&gt;: Llegue con ideas de proyectos y herramientas necesarias ya configuradas. El tiempo durante el hackathon es demasiado valioso para gastarlo en configuración del entorno.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Forme su equipo&lt;/strong&gt;: Encuentre miembros del equipo con habilidades complementarias antes del evento. Un buen equipo necesita programadores, disenadores, redactores y alguien con vision de producto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sea flexible&lt;/strong&gt;: Este preparado para pivotar si su idea original no funciona. Los mejores proyectos del hackathon a menudo surgen de cambiar de dirección a mitad de camino.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Documente todo&lt;/strong&gt;: Mantenga un registro de su progreso para referencia futura. La documentación es clave para que su proyecto sobreviva más alla del hackathon.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Haga networking&lt;/strong&gt;: Aproveche las oportunidades de networking durante las comidas y los descansos. Las relaciones que forme pueden ser más valiosas que el código que escriba.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pida ayuda&lt;/strong&gt;: No dude en pedir orientacion a los mentores. Estan ahi para eso y tienen experiencia que puede ahorrarle horas de trabajo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Diviertase&lt;/strong&gt;: Recuerde que los hackathons son sobre aprendizaje y comunidad, no solo competencia. Las mejores experiencias vienen de disfrutar el proceso.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conexión-con-el-ecosistema-wordpress-hispanohablante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conexión-con-el-ecosistema-wordpress-hispanohablante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conexión con el ecosistema WordPress hispanohablante&lt;/h2&gt;
&lt;p&gt;CloudFest Hackathon representa una oportunidad particularmente valiosa para la comunidad WordPress hispanohablante. Con más de 500 millones de hispanohablantes en el mundo, existe una enorme oportunidad de desarrollar herramientas, plugins y soluciones específicamente disenadas para este mercado.&lt;/p&gt;
&lt;p&gt;Los desarrolladores hispanohablantes que participan en CloudFest pueden aportar perspectivas únicas sobre localización, accesibilidad linguistica y necesidades específicas de mercados latinoamericanos y europeos. Proyectos enfocados en la internacionalizacion de WordPress, la mejora de la experiencia de usuario en español y la creación de herramientas de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO multilingue&lt;/a&gt; pueden tener un impacto significativo en millones de sitios web.&lt;/p&gt;
&lt;p&gt;Además, la participacion en eventos internacionales como CloudFest ayuda a conectar la comunidad WordPress hispanohablante con el ecosistema global, facilitando el intercambio de conocimientos y mejores prácticas que benefician a todos.&lt;/p&gt;
&lt;h2 id=&quot;resumen-y-perspectivas-futuras&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-y-perspectivas-futuras&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen y perspectivas futuras&lt;/h2&gt;
&lt;p&gt;CloudFest Hackathon 2026 promete ser una edicion histórica que supera en muchos aspectos a años anteriores. El nuevo calendario de tres dias, el número record de proyectos y el innovador proyecto artistico de IA son solo algunos de los elementos que hacen de este evento algo especial.&lt;/p&gt;
&lt;p&gt;Para la comunidad de código abierto, y particularmente el ecosistema WordPress, CloudFest Hackathon sigue siendo uno de los eventos más importantes del año. Es una oportunidad para la colaboración, el aprendizaje y la introduccion de innovaciones que pueden dar forma al futuro de la tecnología de código abierto.&lt;/p&gt;
&lt;p&gt;Si esta interesado en participar en futuros hackathons o desea incorporar las innovaciones del ecosistema de código abierto en su propio proyecto WordPress, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede ayudarle a mantenerse actualizado con las últimás tendencias en &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; y tecnología web.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación de las últimás innovaciones&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Mantenga su sitio actualizado con las mejores prácticas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; - Optimización para motores de búsqueda y búsqueda por IA&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;Comercio electronico con IA&lt;/a&gt; - Integración de IA en su tienda WooCommerce&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>wordpress</category><category>community</category><category>events</category><category domain="tag">cloudfest</category><category domain="tag">hackathon</category><category domain="tag">open-source</category><category domain="tag">collaboration</category><enclosure url="https://wppoland.com/images/og/tech-conference-audience-listening.jpg" type="image/jpeg"/></item><item><title>Experimento Hidden Gems de WordPress: revolucionando el descubrimiento de plugins</title><link>https://wppoland.com/es/wordpress-hidden-gems-experiment-plugin-discovery/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-hidden-gems-experiment-plugin-discovery/</guid><description>Descubre cómo Nick Hamze está transformando la forma en que millones de usuarios de WordPress encuentran plugins de calidad. Conoce la iniciativa Hidden Gems que podría revolucionar el ecosistema de plugins.</description><pubDate>Sat, 07 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introducción-al-experimento-hidden-gems&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introducción-al-experimento-hidden-gems&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introducción al Experimento Hidden Gems&lt;/h2&gt;
&lt;p&gt;El ecosistema de plugins de WordPress está experimentando una transformación sin precedentes. Nick Hamze, antiguo miembro del equipo de producto en Automattic, ha iniciado una iniciativa que podría cambiar fundamentalmente la forma en que los usuarios de WordPress descubren nuevos plugins. El experimento “Hidden Gems” es la respuesta a un problema de larga data con la descubribilidad de plugins en el directorio oficial de WordPress.org.&lt;/p&gt;
&lt;p&gt;En los últimos años, hemos observado un fenómeno donde los plugins más populares dominan los resultados de búsqueda, mientras que extensiónes menos conocidas pero a menudo de mayor calidad permanecen en las sombras. Nick Hamze decidió cambiar esto introduciendo un sistema de rotación de “joyas ocultas” en la página de Plugins Destacados.&lt;/p&gt;
&lt;h3 id=&quot;qué-es-el-experimento-hidden-gems&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-el-experimento-hidden-gems&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué es el Experimento Hidden Gems?&lt;/h3&gt;
&lt;p&gt;El experimento Hidden Gems es un intento sistemático de destacar plugins de alta calidad que, a pesar de tener excelentes calificaciones y funcionalidades útiles, no han ganado popularidad generalizada entre los usuarios de WordPress. Nick Hamze, quien previamente creó el plugin Hidden Gems que escanea el directorio de WordPress.org en busca de plugins bien valorados pero poco conocidos, decidió llevar este concepto a la página oficial de Plugins Destacados.&lt;/p&gt;
&lt;p&gt;En la práctica, esto significa que cada dos semanas, la página principal del directorio de plugins presenta plugins que han sido elegidos en base a la calidad e innovación en lugar de las cifras de descargas. Este enfoque de “calidad sobre popularidad” ha ganado un reconocimiento tremendo en la comunidad WordPress.&lt;/p&gt;
&lt;h2 id=&quot;impacto-en-el-ecosistema-de-plugins-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-el-ecosistema-de-plugins-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en el Ecosistema de Plugins WordPress&lt;/h2&gt;
&lt;h3 id=&quot;el-caso-de-ollies-menú-designer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-caso-de-ollies-menú-designer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Caso de Ollie’s Menú Designer&lt;/h3&gt;
&lt;p&gt;Uno de los ejemplos más espectaculares de la efectividad del experimento es el plugin Ollie’s Menú Designer de Mike McAlister. Después de solo unos días de aparecer en la lista de Hidden Gems, el plugin registró su mejor día en términos de descargas. Matt Cromwell, quien describió este fenómeno en X, declaró: “Si alguna vez te has preguntado si la búsqueda de plugins de .org puede impulsar la descubribilidad, no te lo preguntes más.”&lt;/p&gt;
&lt;p&gt;Esta observación es crucial para los desarrolladores de plugins. Demuestra que la página oficial de WordPress.org tiene un enorme potencial para dirigir tráfico hacia plugins menos conocidos, siempre que se destaquen de forma apropiada. Para los desarrolladores, esto representa una nueva oportunidad de ganar usuarios sin campañas de marketing agresivas.&lt;/p&gt;
&lt;h3 id=&quot;más-allá-de-ollie-otros-casos-de-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#más-allá-de-ollie-otros-casos-de-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Más allá de Ollie: Otros casos de éxito&lt;/h3&gt;
&lt;p&gt;El impacto del experimento no se limita a un solo caso. Númerosos plugins han experimentado crecimiento significativo tras ser destacados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Post SMTP&lt;/strong&gt;: Un plugin de correo electrónico confiable que vio un incremento de más del 200% en descargas semanales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins de accesibilidad&lt;/strong&gt;: Herramientas enfocadas en hacer sitios web más accesibles ganaron visibilidad sin precedentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herramientas de desarrollo&lt;/strong&gt;: Plugins orientados a desarrolladores que normalmente tendrían dificultades para encontrar su audiencia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos ejemplos demuestran que el experimento no favorece un tipo particular de plugin; beneficia a cualquier extensión de calidad que merezca mayor visibilidad.&lt;/p&gt;
&lt;h3 id=&quot;reacción-de-la-comunidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reacción-de-la-comunidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reacción de la Comunidad&lt;/h3&gt;
&lt;p&gt;La reacción de la comunidad WordPress al experimento Hidden Gems fue abrumadoramente positiva. Nicholas Garofalo, Director de Marketing para WordPress.org en Automattic, enfatizó en X que “ese enfoque - identificar un problema, construir una solución, pedir aprobación una vez que el trabajo está listo - sigue siendo una de las formás más confiables en que ocurre el cambio en WordPress.”&lt;/p&gt;
&lt;p&gt;Este comentario resume con precisión el espíritu del experimento. En lugar de esperar aprobación formal para cambios desde arriba, Nick Hamze primero construyó una solución funcional (el plugin Hidden Gems) y luego usó su éxito como argumento para implementar cambios similares en la página oficial. Este es un ejemplo clásico del enfoque “construye primero, pide permiso después” que ha sido un camino efectivo para implementar cambios en el proyecto WordPress durante años.&lt;/p&gt;
&lt;h2 id=&quot;estrategias-seo-para-plugins-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-seo-para-plugins-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias SEO para Plugins WordPress en 2026&lt;/h2&gt;
&lt;h3 id=&quot;importancia-del-experimento-hidden-gems-para-el-posicionamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#importancia-del-experimento-hidden-gems-para-el-posicionamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Importancia del Experimento Hidden Gems para el Posicionamiento&lt;/h3&gt;
&lt;p&gt;El Experimento Hidden Gems tiene implicaciones de gran alcance para las estrategias de SEO de plugins WordPress. Tradicionalmente, el posicionamiento de plugins en el directorio de WordPress.org dependía principalmente del número de instalaciones activas y las calificaciones de los usuarios. Los plugins con millones de instalaciones activas dominaban los resultados de búsqueda, creando una barrera de entrada para soluciones nuevas e innovadoras.&lt;/p&gt;
&lt;p&gt;El nuevo enfoque introducido por el experimento Hidden Gems demuestra que la calidad y la innovación pueden competir efectivamente con la popularidad. Para los desarrolladores de plugins, esto significa que vale la pena invertir en crear productos verdaderamente valiosos en lugar de depender únicamente de tácticas para aumentar las cifras de descargas.&lt;/p&gt;
&lt;h3 id=&quot;el-paralelo-con-el-seo-de-sitios-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-paralelo-con-el-seo-de-sitios-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El paralelo con el SEO de sitios web&lt;/h3&gt;
&lt;p&gt;Existe un paralelismo fascinante entre la evolución del experimento Hidden Gems y la evolución del SEO web general. Al igual que Google se ha movido de clasificar basándose principalmente en la cantidad de backlinks a evaluar la calidad y relevancia del contenido (E-E-A-T), el directorio de WordPress.org está evolucionando de clasificar basándose únicamente en popularidad a valorar la calidad intrínseca del plugin.&lt;/p&gt;
&lt;p&gt;Este cambio de paradigma tiene implicaciones profundas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;La calidad del código importa más que nunca&lt;/strong&gt;: Los plugins bien escritos, eficientes y seguros tienen una ventaja real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La documentación es un factor diferenciador&lt;/strong&gt;: Los plugins con documentación exhaustiva y clara se destacan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El soporte activo genera confianza&lt;/strong&gt;: Responder a las preguntas de los usuarios y resolver problemas rápidamente mejora las calificaciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La innovación se recompensa&lt;/strong&gt;: Resolver problemas de formás nuevas o abordar necesidades no cubiertas es la forma más directa de destacar&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;cómo-optimizar-tu-plugin-para-la-descubribilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-optimizar-tu-plugin-para-la-descubribilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo Optimizar Tu Plugin para la Descubribilidad&lt;/h3&gt;
&lt;p&gt;Para los creadores de plugins que quieren aprovechar el nuevo sistema de descubribilidad, aquí están las estrategias clave:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enfócate en la Calidad del Código&lt;/strong&gt;: Asegúrate de que tu plugin esté escrito según las mejores prácticas de WordPress, sea libre de errores y se actualice regularmente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mantén Buena Documentación&lt;/strong&gt;: La documentación clara y completa es clave para el éxito del plugin. Los usuarios y revisores aprecian los plugins con funcionalidades bien descritas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Recopila Calificaciones Positivas&lt;/strong&gt;: Los plugins con altas calificaciones (4.5+ estrellas) tienen mejores posibilidades de ser destacados en el experimento Hidden Gems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sé Activo en la Comunidad&lt;/strong&gt;: La participación en foros de soporte, responder a preguntas de usuarios y actualizaciones regulares demuestran el compromiso del desarrollador.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Considera Casos de Uso Únicos&lt;/strong&gt;: Los plugins que ofrecen funcionalidades únicas que resuelven problemas específicos tienen mejores posibilidades de ser destacados.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimiza tu readme.txt&lt;/strong&gt;: La descripción del plugin en WordPress.org es efectivamente tu página de ventas. Incluye capturas de pantalla de calidad, un changelog detallado y una sección de FAQ completa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementa estándares de accesibilidad&lt;/strong&gt;: Los plugins que siguen las pautas WCAG demuestran un compromiso con la calidad que va más allá de la funcionalidad básica.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;aspectos-técnicos-del-experimento-hidden-gems&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aspectos-técnicos-del-experimento-hidden-gems&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aspectos Técnicos del Experimento Hidden Gems&lt;/h2&gt;
&lt;h3 id=&quot;algoritmo-de-selección-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#algoritmo-de-selección-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Algoritmo de Selección de Plugins&lt;/h3&gt;
&lt;p&gt;La selección de plugins para el experimento Hidden Gems se basa en varios criterios clave. En primer lugar, está la calidad del código y el cumplimiento de los estándares de WordPress. El plugin debe actualizarse regularmente y no puede contener código malicioso o funciones de rastreo de usuarios.&lt;/p&gt;
&lt;p&gt;El segundo criterio es la innovación. Los plugins que ofrecen funcionalidades únicas que no están disponibles en soluciones populares tienen prioridad sobre “otro plugin de formulario de contacto” u “otro plugin de slider”.&lt;/p&gt;
&lt;p&gt;El tercer criterio es el potencial de crecimiento. El equipo responsable del experimento considera si el plugin tiene potencial para volverse más popular si gana más visibilidad.&lt;/p&gt;
&lt;h3 id=&quot;criterios-técnicos-detallados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#criterios-técnicos-detallados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Criterios técnicos detallados&lt;/h3&gt;
&lt;p&gt;Para los desarrolladores que desean entender exactamente qué se evalúa, aquí está un desglose más detallado:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Calidad del código&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ausencia de errores PHP (notices, warnings, errors)&lt;/li&gt;
&lt;li&gt;Uso correcto de las APIs de WordPress (hooks, filtros, nonces)&lt;/li&gt;
&lt;li&gt;Sanitización y validación adecuada de datos&lt;/li&gt;
&lt;li&gt;Internacionalización correcta de cadenas de texto&lt;/li&gt;
&lt;li&gt;Cumplimiento con los estándares de codificación de WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo de carga adicional mínimo&lt;/li&gt;
&lt;li&gt;Consultas a la base de datos optimizadas&lt;/li&gt;
&lt;li&gt;Carga condicional de recursos (scripts y estilos solo cuando son necesarios)&lt;/li&gt;
&lt;li&gt;Sin llamadas externas innecesarias a APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escape adecuado de salida&lt;/li&gt;
&lt;li&gt;Uso correcto de nonces para verificación de formularios&lt;/li&gt;
&lt;li&gt;Verificación de capacidades de usuario&lt;/li&gt;
&lt;li&gt;Sin vulnerabilidades conocidas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;rotación-y-actualizaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rotación-y-actualizaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rotación y Actualizaciones&lt;/h3&gt;
&lt;p&gt;El experimento involucra una rotación de dos semanas de plugins en la lista de Destacados. Esto significa que cada dos semanas, los usuarios de WordPress pueden descubrir nuevos plugins valiosos. El sistema está diseñado para mostrar consistentemente soluciones frescas e innovadoras en lugar de promover los mismos plugins dominantes.&lt;/p&gt;
&lt;p&gt;Esta rotación tiene un beneficio adicional: da a los plugins más pequeños oportunidades de ganar visibilidad durante períodos en que los plugins más grandes no están destacados. Para los usuarios, esto significa acceso regular a herramientas nuevas e interesantes.&lt;/p&gt;
&lt;h3 id=&quot;el-mecanismo-de-retroalimentación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-mecanismo-de-retroalimentación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El mecanismo de retroalimentación&lt;/h3&gt;
&lt;p&gt;Un aspecto particularmente inteligente del experimento es cómo la retroalimentación de los usuarios influye en las futuras selecciones:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Los plugins que generan un alto compromiso positivo (instalaciones que se mantienen, calificaciones positivas) informan los criterios futuros de selección&lt;/li&gt;
&lt;li&gt;Los datos de las primeras 48 horas tras la aparición en la lista proporcionan insights valiosos sobre qué tipo de plugins resuenan más con los usuarios&lt;/li&gt;
&lt;li&gt;Los patrones de desinstalación también se analizan: si un plugin se instala mucho pero se desinstala rápidamente, eso indica un problema de expectativas versus realidad&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;el-futuro-del-experimento-y-su-impacto-potencial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-del-experimento-y-su-impacto-potencial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Futuro del Experimento y Su Impacto Potencial&lt;/h2&gt;
&lt;h3 id=&quot;planes-de-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#planes-de-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Planes de Desarrollo&lt;/h3&gt;
&lt;p&gt;Si el experimento Hidden Gems tiene éxito, podemos esperar su expansión a otras áreas del directorio de WordPress.org. Esto podría incluir potencialmente los temas, que también sufren de problemas de descubribilidad similares a los plugins.&lt;/p&gt;
&lt;p&gt;También podrían introducirse sistemas de recomendación más avanzados basados en IA, que podrían personalizar las recomendaciónes de plugins basándose en las extensiónes instaladas y la actividad del usuario.&lt;/p&gt;
&lt;h3 id=&quot;integración-con-herramientas-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-herramientas-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con herramientas de IA&lt;/h3&gt;
&lt;p&gt;En 2026, estamos viendo los primeros pasos hacia un sistema de descubrimiento de plugins potenciado por inteligencia artificial. Las posibilidades incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Recomendaciones contextuales&lt;/strong&gt;: Basándose en el contenido de tu sitio, WordPress podría sugerir plugins que mejorarían la experiencia del usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de compatibilidad&lt;/strong&gt;: IA que predice posibles conflictos entre plugins antes de la instalación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sugerencias de optimización&lt;/strong&gt;: Recomendaciones de plugins alternativos que podrían mejorar el rendimiento de tu sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detección de necesidades&lt;/strong&gt;: Análisis automático de lo que le falta a tu sitio y sugerencias de plugins apropiados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;impacto-en-el-mercado-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-el-mercado-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en el Mercado de Plugins&lt;/h3&gt;
&lt;p&gt;El experimento Hidden Gems podría tener consecuencias de gran alcance para el mercado de plugins WordPress. Podría animar a más desarrolladores a crear plugins innovadores, sabiendo que existe un camino hacia la visibilidad sin competir con los gigantes del mercado.&lt;/p&gt;
&lt;p&gt;Para los usuarios finales, esto significa acceso a una gama más amplia de herramientas de alta calidad. En lugar de depender de las mismás soluciones populares, podrán descubrir plugins más pequeños pero a menudo mejor adaptados a sus necesidades específicas.&lt;/p&gt;
&lt;h3 id=&quot;el-efecto-dominó-en-el-ecosistema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-efecto-dominó-en-el-ecosistema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El efecto dominó en el ecosistema&lt;/h3&gt;
&lt;p&gt;El experimento está generando un efecto dominó que se extiende más allá del directorio de plugins:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Aumento de la innovación&lt;/strong&gt;: Desarrolladores que antes se sentían desalentados por la competencia con gigantes ahora ven una oportunidad real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejora de la calidad general&lt;/strong&gt;: Al recompensar la calidad sobre la popularidad, se eleva el estándar de todo el ecosistema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diversificación del mercado&lt;/strong&gt;: Menos monopolio de unos pocos plugins grandes, más diversidad de opciones para los usuarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspiración para otras plataformas&lt;/strong&gt;: Otros directorios de software están observando el experimento como modelo para sus propios sistemas de descubrimiento&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;cómo-usar-hidden-gems-en-el-trabajo-diario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-usar-hidden-gems-en-el-trabajo-diario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo Usar Hidden Gems en el Trabajo Diario&lt;/h2&gt;
&lt;h3 id=&quot;consejos-prácticos-para-usuarios-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consejos-prácticos-para-usuarios-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consejos Prácticos para Usuarios WordPress&lt;/h3&gt;
&lt;p&gt;Si eres un usuario de WordPress que quiere aprovechar el experimento Hidden Gems en tu trabajo, aquí tienes algunos consejos prácticos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Visita Regularmente la Página de Plugins&lt;/strong&gt;: Revisa la sección de plugins destacados en WordPress.org cada dos semanas para descubrir nuevos hidden gems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lee las Reseñas&lt;/strong&gt;: Antes de instalar un plugin, lee las reseñas y presta atención a los comentarios de usuarios que han probado el plugin en la práctica.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prueba en Staging&lt;/strong&gt;: Siempre prueba nuevos plugins en un entorno de staging antes de desplegar en un sitio de producción.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Deja Reseñas&lt;/strong&gt;: Después de probar un plugin, deja una reseña que ayude a otros usuarios a tomar decisiones.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sigue a los Desarrolladores&lt;/strong&gt;: Si encuentras un plugin que te conviene, sigue a su desarrollador para mantenerte actualizado con nuevas versiones.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;construyendo-un-stack-de-plugins-basado-en-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construyendo-un-stack-de-plugins-basado-en-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construyendo un stack de plugins basado en calidad&lt;/h3&gt;
&lt;p&gt;En lugar de simplemente instalar los plugins más populares para cada función, considera adoptar un enfoque más reflexivo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Define tus necesidades reales&lt;/strong&gt;
Antes de buscar plugins, documenta exactamente qué funcionalidades necesitas. No instales un plugin de SEO con 50 funciones si solo necesitas meta tags básicos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Evalúa la calidad, no solo la popularidad&lt;/strong&gt;
Cuando compares opciones, presta atención a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calidad y frecuencia de las actualizaciones&lt;/li&gt;
&lt;li&gt;Tiempo de respuesta del soporte&lt;/li&gt;
&lt;li&gt;Calidad de la documentación&lt;/li&gt;
&lt;li&gt;Impacto en el rendimiento del sitio&lt;/li&gt;
&lt;li&gt;Historial de seguridad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Prueba antes de comprometerte&lt;/strong&gt;
Instala cada plugin candidato en un entorno de prueba y evalúa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;¿Cumple con los requisitos funcionales?&lt;/li&gt;
&lt;li&gt;¿Cómo afecta al tiempo de carga de la página?&lt;/li&gt;
&lt;li&gt;¿Es compatible con tus otros plugins?&lt;/li&gt;
&lt;li&gt;¿La interfaz de usuario es intuitiva?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Paso 4: Monitorea continuamente&lt;/strong&gt;
Después de la instalación en producción, monitorea:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Impacto en Core Web Vitals&lt;/li&gt;
&lt;li&gt;Consultas a la base de datos añadidas&lt;/li&gt;
&lt;li&gt;Errores en los logs del servidor&lt;/li&gt;
&lt;li&gt;Satisfacción de los editores de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-que-apoyan-el-descubrimiento-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-que-apoyan-el-descubrimiento-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas que Apoyan el Descubrimiento de Plugins&lt;/h3&gt;
&lt;p&gt;Además del experimento Hidden Gems, existen varias otras herramientas y recursos que pueden ayudar a descubrir plugins WordPress valiosos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plugin Hidden Gems&lt;/strong&gt;: El plugin original de Nick Hamze que escanea el directorio y recomienda joyas ocultas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foros WordPress&lt;/strong&gt;: La comunidad WordPress en foros y grupos de Facebook es un excelente lugar para pedir recomendaciónes de plugins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blogs y Newsletters&lt;/strong&gt;: Sigue blogs de la industria como WP Tavern o The Repository para mantenerte al día con las noticias de plugins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidades locales&lt;/strong&gt;: Los meetups y WordCamps locales son oportunidades invaluables para descubrir plugins recomendados por profesionales de tu zona.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;El experimento Hidden Gems representa un paso significativo hacia adelante en la mejora de la descubribilidad de plugins WordPress. El enfoque de “calidad sobre popularidad” tiene el potencial de democratizar el ecosistema de plugins y dar una oportunidad a soluciones innovadoras que de otro modo permanecerían en las sombras.&lt;/p&gt;
&lt;p&gt;Para los desarrolladores de plugins, es una señal de que invertir en calidad e innovación vale la pena, en lugar de depender únicamente de tácticas de marketing. Para los usuarios, es una promesa de acceso a una gama más amplia de herramientas de alta calidad.&lt;/p&gt;
&lt;p&gt;El experimento también refleja una tendencia más amplia en la industria tecnológica: el movimiento de la “economía de la atención” basada en la popularidad hacia una “economía de la calidad” donde el valor intrínseco del producto es lo que determina su éxito.&lt;/p&gt;
&lt;hr&gt;
</content:encoded><category>wordpress</category><category>plugins</category><category>seo</category><category domain="tag">plugins</category><category domain="tag">discovery</category><category domain="tag">seo</category><category domain="tag">nick-hamze</category><category domain="tag">wordpress-org</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>Yoast y Microsoft: avance revolucionario en la visibilidad de WordPress para la IA</title><link>https://wppoland.com/es/yoast-schema-aggregation-microsoft-nlweb/</link><guid isPermaLink="true">https://wppoland.com/es/yoast-schema-aggregation-microsoft-nlweb/</guid><description>Yoast introduce la revolucionaria función Schema Aggregation en colaboración con Microsoft NLWeb. Descubre como esta nueva tecnología cambiara la forma en que la IA y los motores de búsqueda interpretan el contenido de WordPress.</description><pubDate>Thu, 05 Mar 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;El mundo del SEO y la visibilidad online esta experimentando una transformación fundamental. Con el desarrollo de la inteligencia artificial y los sistemas asistivos, los métodos tradicionales de posicionamiento y descubribilidad del contenido requieren un nuevo enfoque. Yoast, proveedor lider de herramientas SEO para WordPress, introduce la revolucionaria función &lt;strong&gt;Schema Aggregation&lt;/strong&gt; que podria cambiar la forma en que la IA y los motores de búsqueda interpretan los sitios web.&lt;/p&gt;
&lt;p&gt;Esta innovacion fue desarrollada en colaboración con el equipo de Microsoft NLWeb y se lanzo como parte de Yoast SEO 27.1. Esta función permite a los sistemas de IA acceder a un mapa completo de los datos estructurados de un sitio WordPress a través de un único endpoint. Este es un cambio fundamental en el enfoque de estructuracion de datos que podria tener consecuencias de largo alcance para el futuro del SEO.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;que-es-schema-aggregation&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-schema-aggregation&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es Schema Aggregation?&lt;/h2&gt;
&lt;p&gt;Schema Aggregation es una función avanzada que combina todos los datos de schema de un sitio WordPress en un grafo de entidades unificado. En lugar de requerir que los agentes de IA escaneen cada página individual, el sistema genera un punto de acceso central que contiene toda la información esencial sobre el sitio: artículos, autores, productos, organizaciónes y otras entidades.&lt;/p&gt;
&lt;p&gt;En la práctica, esto significa que cuando un bot de IA o asistente visita un sitio WordPress con Yoast Schema Aggregation habilitado, puede obtener el mapa completo del sitio en una única consulta: información sobre artículos, autores de páginas, productos, organización y mas. Esto simplifica dramaticamente el proceso de indexacion y comprension del contenido por parte de los sistemas de IA.&lt;/p&gt;
&lt;h3 id=&quot;por-que-esto-importa-para-tu-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-esto-importa-para-tu-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que esto importa para tu negocio&lt;/h3&gt;
&lt;p&gt;Imagina que tu sitio WordPress es como una biblioteca enorme. En el enfoque tradicional, un visitante (o bot de IA) tenia que entrar en cada habitacion, abrir cada libro y leer cada página para entender que información contenia la biblioteca. Con Schema Aggregation, el visitante recibe un catálogo maestro completo en la entrada - un mapa detallado de todo el conocimiento contenido en la biblioteca, organizado por temas, autores y relaciones entre conceptos.&lt;/p&gt;
&lt;p&gt;Para sitios WordPress empresariales con cientos o miles de páginas, esta diferencia es transformadora. Los asistentes de IA como ChatGPT, Google Gemini y Microsoft Copilot pueden ahora comprender tu sitio completo en segundos, en lugar de necesitar multiples rastreos a lo largo de dias o semanas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;aspectos-técnicos-de-schema-aggregation&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aspectos-técnicos-de-schema-aggregation&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aspectos técnicos de Schema Aggregation&lt;/h2&gt;
&lt;h3 id=&quot;como-funciona-el-grafo-de-entidades-unificado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-el-grafo-de-entidades-unificado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona el grafo de entidades unificado&lt;/h3&gt;
&lt;p&gt;El sistema Yoast Schema Aggregation funciona agregando todos los tipos de datos schema.org presentes en el sitio WordPress. Cuando un usuario configura Yoast SEO en su sitio, el plugin genera datos estructurados para varios tipos de contenido: artículos, autores, productos, organizaciónes, ubicaciones y muchos mas.&lt;/p&gt;
&lt;p&gt;Tradicionalmente, estos datos estaban dispersos en páginas individuales. Un artículo contenia el schema Article, una página de autor el schema Person, un producto el schema Product. Schema Aggregation recopila toda esta información y la conecta en un grafo coherente que puede procesarse como un todo.&lt;/p&gt;
&lt;h3 id=&quot;la-arquitectura-del-endpoint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-arquitectura-del-endpoint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La arquitectura del endpoint&lt;/h3&gt;
&lt;p&gt;Schema Aggregation expone un endpoint dedicado en tu sitio WordPress (tipicamente &lt;code&gt;/schema-aggregation/&lt;/code&gt;) que devuelve un documento JSON-LD completo conteniendo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Entidad organización&lt;/strong&gt;: Datos completos sobre tu empresa, incluyendo nombre, logo, ubicacion, información de contacto y redes sociales.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Grafo de contenido&lt;/strong&gt;: Todos los artículos y páginas con sus metadatos, categorizados por tipo de contenido, tema y fecha.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Relaciones de autor&lt;/strong&gt;: Perfiles completos de todos los autores con sus credenciales, areas de experiencia y contenido asociado.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Catálogo de productos&lt;/strong&gt;: Si usas WooCommerce, todos los productos con precios, disponibilidad, resenas y categorías.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mapa de relaciones&lt;/strong&gt;: Las conexiónes entre entidades - que autores escribieron que artículos, que productos pertenecen a que categorías, que servicios ofrece la organización.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO para WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h3 id=&quot;integración-con-microsoft-nlweb&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-microsoft-nlweb&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con Microsoft NLWeb&lt;/h3&gt;
&lt;p&gt;La colaboración con Microsoft NLWeb es un elemento clave de esta iniciativa. NLWeb (Natural Language Web) es un proyecto de Microsoft orientado a facilitar la creación de sitios web que puedan comunicarse con agentes de IA en lenguaje natural.&lt;/p&gt;
&lt;p&gt;La integración de Yoast con NLWeb significa que los sitios WordPress con Yoast SEO habilitado estan automáticamente preparados para trabajar con agentes de IA basados en tecnología Microsoft. Esto es particularmente significativo en el contexto del creciente papel de la IA en la búsqueda y descubribilidad de contenido.&lt;/p&gt;
&lt;p&gt;La específicacion NLWeb define un protocolo estándar para que los agentes de IA interroguen sitios web. En lugar de “raspar” contenido HTML y intentar interpretarlo, los agentes pueden enviar consultas en lenguaje natural al endpoint NLWeb y recibir respuestas estructuradas. Yoast actua como el puente entre WordPress y este protocolo, traduciendo los datos del CMS al formato que los agentes de IA esperan.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;impacto-en-el-seo-y-la-visibilidad-en-la-era-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-el-seo-y-la-visibilidad-en-la-era-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en el SEO y la visibilidad en la era de la IA&lt;/h2&gt;
&lt;h3 id=&quot;cambio-de-paradigma-en-la-indexacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambio-de-paradigma-en-la-indexacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cambio de paradigma en la indexacion&lt;/h3&gt;
&lt;p&gt;El SEO tradicional se enfocaba en optimizar contenido para motores de búsqueda como Google. Schema Aggregation representa un cambio de paradigma hacia la optimización para sistemas de IA y asistentes de voz.&lt;/p&gt;
&lt;p&gt;Alex Moss, SEO Principal de Yoast, explico en X: “Un agente de IA ya no necesita rastrear todas las páginas individuales para entender su significado, sino que ahora puede ingerir un mapa de entidades completo con facilidad.” Este cambio tiene implicaciones fundamentales para la estrategia SEO.&lt;/p&gt;
&lt;p&gt;En lugar de enfocarse únicamente en optimizar para motores de búsqueda tradicionales, los propietarios de sitios web ahora necesitan pensar en como su contenido será interpretado por sistemas de IA. Schema Aggregation es un paso en esa dirección, estructurando automáticamente los datos de una forma accesible para la IA.&lt;/p&gt;
&lt;h3 id=&quot;del-seo-tradicional-al-aeo-answer-engine-optimization&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#del-seo-tradicional-al-aeo-answer-engine-optimization&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Del SEO tradicional al AEO (Answer Engine Optimization)&lt;/h3&gt;
&lt;p&gt;Schema Aggregation es un componente clave en la transicion del SEO tradicional al AEO - la optimización para motores de respuesta. En 2026, una proporcion creciente de búsquedas se resuelve a través de asistentes de IA que proporcionan respuestas directas en lugar de listas de enlaces azules.&lt;/p&gt;
&lt;p&gt;Para aparecer como fuente en estas respuestas de IA, tu sitio necesita:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Datos estructurados completos&lt;/strong&gt;: Schema Aggregation proporciona exactamente esto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad temática&lt;/strong&gt;: El grafo de entidades demuestra tu cobertura y profundidad en temas específicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atribucion de autores&lt;/strong&gt;: Los perfiles de autor enlazados con el contenido demuestran E-E-A-T (Experiencia, Conocimiento, Autoridad, Confiabilidad).&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;beneficios-para-propietarios-de-sitios-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#beneficios-para-propietarios-de-sitios-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Beneficios para propietarios de sitios WordPress&lt;/h3&gt;
&lt;p&gt;Para los propietarios de sitios WordPress, los beneficios de Yoast Schema Aggregation son multidimensionales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mejor visibilidad en IA&lt;/strong&gt;: Los sitios con datos de schema agregados seran mejor comprendidos por los sistemas de IA, lo que puede traducirse en recomendaciónes más frecuentes y precisas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimización automática&lt;/strong&gt;: La función trabaja automáticamente, sin requerir configuración adicional por parte del usuario.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SEO a prueba de futuro&lt;/strong&gt;: Invertir en Schema Aggregation es invertir en el futuro del SEO, cuando el papel de la IA en la búsqueda continuara creciendo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Compatibilidad NLWeb&lt;/strong&gt;: Los sitios WordPress se vuelven preparados para trabajar con el ecosistema de IA de Microsoft.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ventaja competitiva&lt;/strong&gt;: Los sitios que adoptan Schema Aggregation tempranamente tendran una ventaja sobre los competidores que no lo hagan, especialmente en nichos donde la visibilidad en IA es crítica.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;alain-schlesser-sobre-la-dirección-de-desarrollo-de-yoast&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alain-schlesser-sobre-la-dirección-de-desarrollo-de-yoast&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alain Schlesser sobre la dirección de desarrollo de Yoast&lt;/h2&gt;
&lt;h3 id=&quot;vision-de-integración-con-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#vision-de-integración-con-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Vision de integración con IA&lt;/h3&gt;
&lt;p&gt;Alain Schlesser, Arquitecto Principal en Yoast, resumio la filosofia detras de la nueva función de manera caracteristica: “No puedes detener la ola de IA, pero puedes dirigirla. Nuestra integración con NLWeb te devuelve el control.”&lt;/p&gt;
&lt;p&gt;Esta declaracion refleja el enfoque estrategico de Yoast hacia los temas de IA. En lugar de tratar la inteligencia artificial como una amenaza, Yoast la ve como una oportunidad para fortalecer la posición de los usuarios de WordPress en el cambiante panorama digital.&lt;/p&gt;
&lt;p&gt;Schema Aggregation es una respuesta a las preocupaciones de muchos propietarios de sitios web sobre el creciente papel de la IA en el procesamiento de información. En lugar de permitir que los algoritmos de IA interpreten arbitrariamente el contenido del sitio, Yoast da a los webmasters herramientas para una presentacion controlada de la información.&lt;/p&gt;
&lt;h3 id=&quot;control-sobre-la-narrativa-de-tu-marca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#control-sobre-la-narrativa-de-tu-marca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Control sobre la narrativa de tu marca&lt;/h3&gt;
&lt;p&gt;Uno de los aspectos más importantes de Schema Aggregation es que te permite controlar como la IA entiende y presenta tu marca. Sin datos estructurados claros, los modelos de lenguaje pueden generar descripciones inexactas o incompletas de tu negocio. Con Schema Aggregation, defines exactamente que información es autoritativa sobre tu organización, tus servicios y tu contenido.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;aspectos-practicos-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aspectos-practicos-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aspectos practicos de implementación&lt;/h2&gt;
&lt;h3 id=&quot;requisitos-y-compatibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-y-compatibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos y compatibilidad&lt;/h3&gt;
&lt;p&gt;Para usar Yoast Schema Aggregation, necesitas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yoast SEO versión 27.1 o más reciente&lt;/li&gt;
&lt;li&gt;WordPress versión 5.8 o más reciente&lt;/li&gt;
&lt;li&gt;Un sitio activo con contenido (artículos, productos, autores)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La función es compatible con la mayoria de plugins y temas populares de WordPress. Yoast ha realizado pruebas extensivas para asegurar una integración fluida con el ecosistema WordPress.&lt;/p&gt;
&lt;h3 id=&quot;configuración-y-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-y-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración y optimización&lt;/h3&gt;
&lt;p&gt;Despues de actualizar a Yoast SEO 27.1, Schema Aggregation funciona automáticamente. Los usuarios no necesitan tomar ningun paso de configuración adicional para beneficiarse de la nueva función.&lt;/p&gt;
&lt;p&gt;Sin embargo, para resultados optimos, vale la pena asegurar datos estructurados completos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Perfiles de autor completos&lt;/strong&gt; con fotos y biografias detalladas que demuestren experiencia y conocimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos de organización&lt;/strong&gt; completos en los ajustes de Yoast, incluyendo logo, dirección y información de contacto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema para productos&lt;/strong&gt; configurado correctamente si tienes una &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tienda WooCommerce&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos de ubicacion&lt;/strong&gt; si tienes un negocio fisico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema de FAQ&lt;/strong&gt; para artículos que responden preguntas frecuentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema de HowTo&lt;/strong&gt; para tutoriales y guías paso a paso&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;verificación-de-la-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-de-la-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación de la implementación&lt;/h3&gt;
&lt;p&gt;Para confirmar que Schema Aggregation esta funcionando correctamente en tu sitio:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Visita &lt;code&gt;tusitio.com/schema-aggregation/&lt;/code&gt; para ver el endpoint JSON-LD&lt;/li&gt;
&lt;li&gt;Usa Google Rich Results Test para validar los datos estructurados&lt;/li&gt;
&lt;li&gt;Revisa el Yoast Schema Checker para detectar problemas&lt;/li&gt;
&lt;li&gt;Monitorea Google Search Console para ver si Google esta interpretando correctamente tus datos&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;el-futuro-del-seo-y-el-papel-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-del-seo-y-el-papel-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro del SEO y el papel de la IA&lt;/h2&gt;
&lt;h3 id=&quot;evolucion-de-la-búsqueda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evolucion-de-la-búsqueda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evolucion de la búsqueda&lt;/h3&gt;
&lt;p&gt;El desarrollo de Yoast Schema Aggregation encaja en una tendencia más amplia en la evolucion de la búsqueda. Cada vez más usuarios utilizan asistentes de IA para encontrar información, hacer preguntas y tomar decisiones. Los motores de búsqueda tradicionales también estan integrando IA, lo que cambia como se presentan los resultados.&lt;/p&gt;
&lt;p&gt;En este contexto, la estructuracion de datos se convierte en un elemento clave de la estrategia SEO. Los sitios que ofrecen información clara y organizada en un formato accesible para la IA tendran ventaja sobre aquellos que dependen únicamente de métodos de optimización tradicionales.&lt;/p&gt;
&lt;h3 id=&quot;la-convergencia-de-seo-geo-y-aeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-convergencia-de-seo-geo-y-aeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La convergencia de SEO, GEO y AEO&lt;/h3&gt;
&lt;p&gt;En 2026, las fronteras entre SEO tradicional, GEO (Generative Engine Optimization) y AEO (Answer Engine Optimization) se estan difuminando. Schema Aggregation es la tecnología puente que conecta estas tres disciplinas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: Los datos estructurados siguen siendo críticos para los resultados de búsqueda tradicionales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GEO&lt;/strong&gt;: El grafo de entidades alimenta a los motores generativos que crean resumen de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AEO&lt;/strong&gt;: Las respuestas directas de asistentes de IA se nutren de datos estructurados verificados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;posición-de-wordpress-en-la-era-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#posición-de-wordpress-en-la-era-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Posición de WordPress en la era de la IA&lt;/h3&gt;
&lt;p&gt;Yoast Schema Aggregation fortalece la posición de WordPress como plataforma preparada para el futuro. La colaboración con Microsoft NLWeb demuestra que el ecosistema WordPress esta listo para los desafios relacionados con la IA.&lt;/p&gt;
&lt;p&gt;Para empresas y creadores de sitios web, esto significa que elegir WordPress con Yoast es invertir en una solución que evolucionara junto con los cambiantes requisitos tecnológicos. En un mundo donde la visibilidad en IA es tan importante como el ranking en Google, tener datos estructurados robustos y accesibles no es opcional - es un requisito competitivo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;comparación-con-el-enfoque-tradicional-de-schema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-con-el-enfoque-tradicional-de-schema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación con el enfoque tradicional de Schema&lt;/h2&gt;
&lt;h3 id=&quot;enfoque-tradicional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-tradicional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque tradicional&lt;/h3&gt;
&lt;p&gt;En el enfoque tradicional de datos estructurados, cada página contenia su propio conjunto de datos de schema. Los bots de motores de búsqueda tenian que visitar cada página individualmente para entender su contenido. Este proceso era lento y no siempre llevaba a una comprension completa de la estructura del sitio.&lt;/p&gt;
&lt;p&gt;Los problemas principales del enfoque tradicional incluian:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rastreo incompleto de sitios grandes&lt;/li&gt;
&lt;li&gt;Perdida de contexto entre páginas relacionadas&lt;/li&gt;
&lt;li&gt;Duplicacion y conflictos en los datos de schema&lt;/li&gt;
&lt;li&gt;Incapacidad para representar relaciones complejas entre entidades&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;nuevo-enfoque-con-schema-aggregation&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nuevo-enfoque-con-schema-aggregation&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nuevo enfoque con Schema Aggregation&lt;/h3&gt;
&lt;p&gt;Schema Aggregation simplifica este proceso centralizando todos los datos en una ubicacion. Un agente de IA puede obtener una imagen completa del sitio sin tener que indexar cada página individual. Esto aumenta significativamente la eficiencia y precision del procesamiento de información.&lt;/p&gt;
&lt;p&gt;Las ventajas del nuevo enfoque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eficiencia&lt;/strong&gt;: Un único punto de acceso para toda la información del sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Completitud&lt;/strong&gt;: Garantia de que toda la información relevante esta disponible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contexto&lt;/strong&gt;: Las relaciones entre entidades se preservan y son explicitas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualización&lt;/strong&gt;: El endpoint se actualiza automáticamente cuando cambia el contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Yoast Schema Aggregation en colaboración con Microsoft NLWeb representa un momento decisivo en la historia del SEO para WordPress. Esta función innovadora no solo simplifica la estructuracion de datos, sino que también prepara los sitios WordPress para un futuro donde la IA jugara un papel cada vez mayor en la descubribilidad del contenido.&lt;/p&gt;
&lt;p&gt;Para los propietarios de sitios WordPress, este es un estimulo para invertir en la calidad y estructuracion del contenido. Schema Aggregation asegurara automáticamente que los datos se presenten de una forma accesible para los sistemas de IA, dando a los usuarios una ventaja en un entorno digital cada vez más competitivo.&lt;/p&gt;
&lt;p&gt;La transicion del SEO tradicional al SEO impulsado por IA no es una opción - es una inevitabilidad. Los sitios que adopten Schema Aggregation hoy estaran posicionados para dominar la visibilidad en IA mañana. Los que esperen se arriesgan a quedar invisibles para una proporcion creciente de usuarios que buscan información a través de asistentes de IA.&lt;/p&gt;
&lt;p&gt;Estaremos siguiendo el desarrollo de esta tecnología y su impacto en el ecosistema SEO. Mientras tanto, animamos a todos los usuarios de Yoast a actualizar sus plugins y aprovechar las nuevas capacidades.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda para optimizar tu sitio WordPress para la era de la IA? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para una consultoria de SEO, GEO y AEO.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>ai</category><category>wordpress</category><category domain="tag">yoast</category><category domain="tag">schema</category><category domain="tag">microsoft</category><category domain="tag">ai</category><category domain="tag">seo</category><enclosure url="https://wppoland.com/images/og/modern-office-coding-setup.jpg" type="image/jpeg"/></item><item><title>Ingenieria agencial, un nuevo modelo para el desarrollo de software en 2026</title><link>https://wppoland.com/es/agentic-engineering-new-model-software-development-2026/</link><guid isPermaLink="true">https://wppoland.com/es/agentic-engineering-new-model-software-development-2026/</guid><description>Escribir código sigue importando, pero los resultados ahora dependen de como los equipos orquestan agentes de IA. Esta guía explica un flujo de trabajo agencial práctico y como adoptarlo sin perder calidad.</description><pubDate>Sun, 01 Mar 2026 15:30:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion&lt;/h2&gt;
&lt;p&gt;Conoce más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Hasta hace poco, un dia tipico de desarrollo de software era lineal. Recibias un ticket, escribias código, corregias errores y hacias un commit. Ese ya no es el centro de gravedad. Mas equipos ahora entregan funcionalidades a través de multiples agentes de IA que ejecutan tareas en paralelo.&lt;/p&gt;
&lt;p&gt;Esto no es solo una actualización de herramientas. Es un cambio en la lógica de ingenieria. Estamos pasando de “escribir cada linea manualmente” a “diseñar flujos de trabajo y asegurar la calidad de las decisiones”.&lt;/p&gt;
&lt;h2 id=&quot;por-que-el-ciclo-importa-más-que-el-modelo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-ciclo-importa-más-que-el-modelo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el ciclo importa más que el modelo&lt;/h2&gt;
&lt;p&gt;La mayoria de los retrasos de entrega no vienen de falta de conocimiento de sintaxis. Vienen de colas, traspasos y cambio de contexto. Un ingeniero haciendo todo en secuencia se convierte naturalmente en cuello de botella. La parte interesante de la ingenieria agencial no es qué modelo escribe la funcion, es el ciclo que el ingeniero envuelve a su alrededor.&lt;/p&gt;
&lt;p&gt;El ciclo que de verdad funciona tiene cuatro pasos. Planificar, donde la persona y el agente acuerdan alcance, ficheros en juego y condicion de finalizacion antes de que se escriba código. Trabajar, donde el agente edita y ejecuta comandos dentro de un sandbox definido. Revisar, donde uno o más agentes revisores especializados leen el diff en paralelo: pasada de seguridad, pasada de rendimiento, pasada de voz o estilo. Componer, donde las lecciones de este ciclo, incluyendo cualquier near-miss que el revisor cazó, se vuelcan a CLAUDE.md, a una skill de proyecto o a un fichero de instrucciones de agente, para que el siguiente ticket arranque con ese conocimiento ya cargado. Saltarse el paso de composicion es la razon más comun por la que los equipos se estancan tras las primeras semanas.&lt;/p&gt;
&lt;p&gt;En la práctica, distintas herramientas ocupan distintas partes del ciclo. Claude Code mantiene bien el contexto largo y orquesta cómodamente ediciones multi-fichero y comandos de terminal, asi que suele llevar el paso de trabajo. Cursor es rápido para edicion en el editor con feedback ajustado, util cuando la persona quiere quedarse dentro del diff. GitHub Copilot es fuerte en autocompletado inline, débil en hacerse cargo de una tarea entera. Aider hace ediciones enfocadas y conscientes de git, y es honesto sobre lo que cambió. Codex sirve bien como segunda opinion en el paso de revision. Continue.dev y Sourcegraph Cody son utiles cuando hace falta control self-hosted o grounding sobre toda la base de código. Ninguna es bala de plata. Cada una falla en algo. Claude Code satura su ventana de contexto tras unas horas y empieza a olvidar decisiones anteriores. Cursor acepta alegremente un import alucinado. Copilot sugiere disparates con confianza en bases de código no familiares. El trabajo es casar la herramienta con el paso, no elegir un ganador.&lt;/p&gt;
&lt;h2 id=&quot;que-significa-la-ingenieria-agencial-en-la-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-la-ingenieria-agencial-en-la-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa la ingenieria agencial en la práctica&lt;/h2&gt;
&lt;p&gt;La ingenieria agencial no es “enviar un prompt y esperar”. Una tarea fiable tiene un objetivo preciso, un alcance limitado, una condicion de finalizacion explicita y validacion obligatoria antes del merge. El mismo encuadre que protege a un junior de un PR descontrolado protege a un agente de inventarse endpoints, llamar a funciones WordPress obsoletas o proponer rm -rf en un script de build porque el prompt pidió “limpiar”. Cuando las tareas son demasiado amplias, las salidas parecen pulidas mientras ocultan defectos estructurales. Cuando las tareas son pequeñas y medibles, la entrega se vuelve predecible y las regresiones bajan.&lt;/p&gt;
&lt;h2 id=&quot;las-habilidades-de-desarrollador-que-ahora-importan-mas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-habilidades-de-desarrollador-que-ahora-importan-mas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las habilidades de desarrollador que ahora importan mas&lt;/h2&gt;
&lt;p&gt;En este modelo, la memorizacion de APIs importa menos que cuatro capacidades:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Descomponer un problema en modulos independientes.&lt;/li&gt;
&lt;li&gt;Pensar en sistemas, especialmente alrededor de limites de integración.&lt;/li&gt;
&lt;li&gt;Revisar no solo código, sino decisiones de arquitectura.&lt;/li&gt;
&lt;li&gt;Diseñar pruebas que reflejen riesgo real de negocio.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esta es una buena noticia para ingenieros senior. El conocimiento del dominio y el juicio se vuelven aun más valiosos.&lt;/p&gt;
&lt;h2 id=&quot;riesgos-que-debes-abordar-temprano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgos-que-debes-abordar-temprano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgos que debes abordar temprano&lt;/h2&gt;
&lt;p&gt;Los flujos de trabajo agenciales pueden aumentar el rendimiento, pero sin controles también pueden multiplicar la deuda técnica. Los modos de fallo comunes incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;código que compila pero no cumple las reglas del dominio,&lt;/li&gt;
&lt;li&gt;pruebas que cubren solo los caminos felices,&lt;/li&gt;
&lt;li&gt;agentes con privilegios excesivos en repositorios,&lt;/li&gt;
&lt;li&gt;costos crecientes por ejecuciones paralelas descontroladas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La respuesta son las puertas de calidad. Cada cambio debe pasar pruebas base, verificaciónes de seguridad y revision humana por alguien que entienda el contexto del producto.&lt;/p&gt;
&lt;h2 id=&quot;un-camino-práctico-de-adopcion-para-equipos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#un-camino-práctico-de-adopcion-para-equipos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Un camino práctico de adopcion para equipos&lt;/h2&gt;
&lt;p&gt;El peor enfoque es “desde mañana, los agentes hacen todo”. Un mejor camino es la adopcion por etapas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Comienza en un area de bajo riesgo, por ejemplo refactorizacion de capa de utilidades.&lt;/li&gt;
&lt;li&gt;Define tu Definicion de Terminado y politica de revision.&lt;/li&gt;
&lt;li&gt;Limita las ejecuciones paralelas de agentes al principio.&lt;/li&gt;
&lt;li&gt;Mide tiempo de entrega, tasa de defectos, costo y frecuencia de rollback.&lt;/li&gt;
&lt;li&gt;Expande solo donde los datos demuestren mejora.&lt;/li&gt;
&lt;li&gt;Documenta patrones de tareas exitosos y retira los de baja señal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esto da a los equipos ganancias de productividad medibles sin perder gobernanza.&lt;/p&gt;
&lt;h2 id=&quot;que-cambia-para-agencias-y-freelancers&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-cambia-para-agencias-y-freelancers&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que cambia para agencias y freelancers&lt;/h2&gt;
&lt;p&gt;En servicios WordPress, el trabajo que comprime bien es el que antes llenaba la semana de un junior: páginas de ajustes, endpoints REST personalizados, scaffolding de bloques ACF, pantallas de opciones de plugin, CRUD repetitivo sobre CPTs. Con plan ajustado y una pasada de revisor, esto cae rutinariamente de 4 a 6 horas de codificación enfocada a 30 a 60 minutos de ejecución supervisada. En una agencia española, la textura concreta es integrar callbacks de Bizum, generar webhooks de Redsys para confirmar capturas de pago o automatizar reconciliacion de pedidos en WooCommerce contra el TPV bancario, piezas que antes ocupaban un sprint y que hoy salen en un dia con revision decente. Lo que no comprime es la arquitectura: decidir si una funcionalidad pertenece al plugin o al tema, cómo modelar una relacion de contenido, dónde trazar la frontera de cache, cómo cumplir con AEPD en flujos que tocan datos personales. Ese trabajo sigue costando las mismas horas humanas, e intentar delegarlo a un agente es donde se cae la mayoria de las demos.&lt;/p&gt;
&lt;p&gt;El mensaje honesto al cliente, por tanto, no es “entregamos más rápido porque IA”. Es “entregamos el trabajo de rutina en una fraccion del tiempo y dedicamos las horas recuperadas a las partes que llevan riesgo real”. Las estimaciones se aprietan en tickets bien delimitados y se mantienen casi igual en los arquitectonicos. En el contexto autónomo español, esto cambia también la economía del freelance: el desarrollador WordPress que antes facturaba 40 horas en un módulo de checkout puede entregarlo en 15, y la conversacion con el cliente se desplaza de “horas trabajadas” a “alcance entregado y mantenido”. Las agencias que entran bien en este ciclo son las que aceptan que la disciplina de revision tiene que subir al ritmo del nuevo throughput, y esa es la parte que la mayoria subestima en su primer trimestre de adopcion.&lt;/p&gt;
&lt;h2 id=&quot;un-modelo-operativo-que-funciona-bajo-presion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#un-modelo-operativo-que-funciona-bajo-presion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Un modelo operativo que funciona bajo presion&lt;/h2&gt;
&lt;p&gt;Muchos equipos comienzan una transformación agencial desde el extremo equivocado. Compran acceso a nuevas herramientas, ejecutan algunos experimentos y esperan que la calidad mejore por si sola. Luego la entrega se vuelve ruidosa, las revisiones se alargan y la confianza cae. El problema raiz es generalmente simple: los agentes se introducen antes de que el modelo de entrega sea rediseñado.&lt;/p&gt;
&lt;p&gt;Un modelo confiable tiene tres capas. Primero, intencion: por que existe el cambio y que señal de negocio deberia moverse. Segundo, ejecucion: un conjunto de tareas estrechas delegadas a agentes en paralelo donde sea seguro. Tercero, control: verificaciónes automatizadas, politicas de seguridad, revision humana y una decision de release. Cuando estas capas se mezclan, los equipos pierden trazabilidad y vuelven a la lucha contra incendios.&lt;/p&gt;
&lt;p&gt;No necesitas una estructura empresarial grande para ejecutar esto bien. Un equipo pequeño puede hacerlo si los estándares son explicitos, las tareas estan delimitadas y las puertas de calidad son innegociables.&lt;/p&gt;
&lt;h2 id=&quot;contratos-de-tareas-para-agentes-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contratos-de-tareas-para-agentes-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contratos de tareas para agentes de IA&lt;/h2&gt;
&lt;p&gt;El documento clave en la entrega agencial no es un prompt inteligente, es un contrato de tarea. El contrato protege al equipo de resultados que se ven impresionantes pero fallan en producción. Cada contrato debe responder cinco preguntas.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Que problema de usuario o negocio se esta resolviendo?&lt;/li&gt;
&lt;li&gt;Que alcance exacto esta permitido, y que esta prohibido?&lt;/li&gt;
&lt;li&gt;Que señal objetiva marca la finalizacion?&lt;/li&gt;
&lt;li&gt;Que pruebas deben pasar antes de la revision?&lt;/li&gt;
&lt;li&gt;Quien acepta el resultado y dentro de que SLA?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Con esta estructura, los agentes dejan de improvisar. Producen cambios enfocados, la revision se vuelve más rápida y las metricas se vuelven comparables entre iteraciones.&lt;/p&gt;
&lt;h2 id=&quot;diseñando-ejecucion-paralela-segura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diseñando-ejecucion-paralela-segura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diseñando ejecucion paralela segura&lt;/h2&gt;
&lt;p&gt;El trabajo paralelo es poderoso, pero el paralelismo descontrolado crea conflictos de merge y regresiones ocultas. Los equipos deben definir donde la concurrencia es segura y donde la secuencia es necesaria. Por ejemplo, la refactorizacion de UI, la generación de pruebas unitarias y las actualizaciones de documentación a menudo pueden ejecutarse en paralelo. Los cambios en el modelo de datos y los scripts de migración generalmente deben permanecer secuenciales a menos que controles adicionales esten activos.&lt;/p&gt;
&lt;p&gt;Un patron práctico es la entrega basada en carriles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;carril de producto: clarificacion de requisitos y criterios de aceptacion,&lt;/li&gt;
&lt;li&gt;carril de implementación: cambios de código,&lt;/li&gt;
&lt;li&gt;carril de validación: pruebas y análisis estatico,&lt;/li&gt;
&lt;li&gt;carril de seguridad: verificaciónes de dependencias y permisos,&lt;/li&gt;
&lt;li&gt;carril de release: aprobacion humana y despliegue.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;metricas-que-reflejan-la-realidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-que-reflejan-la-realidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas que reflejan la realidad&lt;/h2&gt;
&lt;p&gt;Sin metricas, la adopcion agencial puede parecer productiva mientras la confiabilidad empeora. Las lineas de código generado no son una señal de calidad. Los equipos necesitan metricas operaciónales que conecten velocidad y estabilidad.&lt;/p&gt;
&lt;p&gt;Rastrea al menos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tiempo de entrega desde ticket a producción,&lt;/li&gt;
&lt;li&gt;tasa de fallo de cambios,&lt;/li&gt;
&lt;li&gt;tiempo medio de recuperacion,&lt;/li&gt;
&lt;li&gt;costo por cambio enviado,&lt;/li&gt;
&lt;li&gt;tasa de aceptacion en primera pasada,&lt;/li&gt;
&lt;li&gt;esfuerzo de revision humana por tipo de cambio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos indicadores muestran si la automatizacion esta mejorando la entrega o solo aumentando el rendimiento de defectos.&lt;/p&gt;
&lt;h2 id=&quot;seguridad-base-para-flujos-agenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-base-para-flujos-agenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad base para flujos agenciales&lt;/h2&gt;
&lt;p&gt;Los flujos agenciales requieren una disciplina de seguridad más estricta que la entrega manual clásica. Ningun agente debe tener acceso completo al repositorio, derechos de deploy a producción y secretos de larga duracion al mismo tiempo. El principio de minimo privilegio debe ser el predeterminado.&lt;/p&gt;
&lt;p&gt;Una base práctica incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;credenciales de corta duracion con alcance limitado,&lt;/li&gt;
&lt;li&gt;ningun deploy directo a producción por agentes autonomos,&lt;/li&gt;
&lt;li&gt;registro obligatorio del uso de secretos,&lt;/li&gt;
&lt;li&gt;aprobacion humana dual para dominios de alto riesgo como pagos o identidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;finops-y-gobernanza-de-costos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#finops-y-gobernanza-de-costos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;FinOps y gobernanza de costos&lt;/h2&gt;
&lt;p&gt;El costo es frecuentemente el punto de fallo oculto. Los experimentos tempranos parecen economicos, luego los equipos descubren cientos de ejecuciones de agentes de bajo valor cada dia. El gasto mensual crece mientras el impacto de negocio permanece poco claro.&lt;/p&gt;
&lt;p&gt;Las reglas de FinOps deben ser simples y estrictas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;presupuestos diarios y semanales de automatizacion,&lt;/li&gt;
&lt;li&gt;limites en ejecuciones paralelas,&lt;/li&gt;
&lt;li&gt;clases de prioridad basadas en valor de negocio,&lt;/li&gt;
&lt;li&gt;cancelacion automática para tareas de baja señal,&lt;/li&gt;
&lt;li&gt;reporte de costo por funcionalidad, no solo gasto global de plataforma.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;como-cambia-la-revision-de-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-cambia-la-revision-de-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como cambia la revision de código&lt;/h2&gt;
&lt;p&gt;Un error comun es reducir el esfuerzo de revision porque los agentes ahora escriben código y pruebas. En realidad, la revision se vuelve más importante porque la velocidad de cambio aumenta. El cuello de botella pasa de escribir código a evaluar impacto.&lt;/p&gt;
&lt;p&gt;Un protocolo de revision fuerte cubre tres niveles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;correccion funcional: el cambio resuelve el problema correcto?&lt;/li&gt;
&lt;li&gt;ajuste arquitectonico: preserva los limites y el diseño a largo plazo?&lt;/li&gt;
&lt;li&gt;preparacion operaciónal: se puede monitorear, mantener y revertir?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;reflexion-final&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reflexion-final&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reflexion final&lt;/h2&gt;
&lt;p&gt;La ingenieria agencial no es un sprint para un efecto único. Es una reconstruccion a largo plazo del modelo de entrega de software. Funciona mejor donde la ejecucion autonoma se combina con la responsabilidad humana por el resultado.&lt;/p&gt;
&lt;p&gt;Tratala como un sistema de ingenieria y obtendras velocidad con control. Tratala como un atajo y obtendras ciclos de fallo más rápidos. Los equipos que tengan éxito en 2026 y más alla seran los que hagan de la autonomia algo confiable, medible y alineado con el valor del producto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda para transformar tu proceso de desarrollo? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; aplica principios de ingenieria agencial a cada proyecto. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>ai</category><category domain="tag">ingenieria-agencial</category><category domain="tag">agentes-ia</category><category domain="tag">desarrollo-software</category><category domain="tag">flujo-trabajo</category><category domain="tag">revision-código</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>El futuro del software en 2026: Distribucion y el fin de la mediocridad</title><link>https://wppoland.com/es/przyszlosc-software-2026/</link><guid isPermaLink="true">https://wppoland.com/es/przyszlosc-software-2026/</guid><description>Crear software es cada vez más fácil. Descubre por que la distribucion, las relaciones y la marca importan más que el código en la era de las herramientas de IA.</description><pubDate>Sun, 01 Mar 2026 12:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;el-futuro-del-software-en-2026-distribucion-y-el-fin-de-la-mediocridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-del-software-en-2026-distribucion-y-el-fin-de-la-mediocridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro del software en 2026: Distribucion y el fin de la mediocridad&lt;/h2&gt;
&lt;p id=&quot;introduccion&quot;&gt;Crear software se esta convirtiendo en una mercancia masiva más rápido de lo que nadie pensaba posible. Practicamente cada dia miro plataformas como X o LinkedIn y veo a alguien mostrando una nueva aplicación. Herramientas de calendario que se parecen a Calendly, aplicaciones clon de notas al estilo de Notion, o enormes sistemas de reservas - todo esto se construye en unos proverbiales treinta minutos con la ayuda de Claude Code y otros modelos de inteligencia artificial. Crear código simple y funcional ya no es un desafio. Habiendo trabajado en TI durante veinte años, he visto muchas transformaciones, pero lo que estamos viviendo hoy ha dado completamente la vuelta al equilibrio del poder empresarial.&lt;/p&gt;
&lt;p&gt;Habiendo pasado muchos años disenando soluciones digitales, decidi sentarme tranquilamente, respirar profundo y escribir todos mis pensamientos clave. En esta publicación larga pero específica, analizaremos hacia donde se dirige realmente todo esto. Enfrentemos la verdad: el mercado esta cambiando dramaticamente, y quienes no lo entiendan a tiempo lamentablemente tendran que despedirse de sus empresas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recuerdas-como-se-construian-las-aplicaciones-antes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recuerdas-como-se-construian-las-aplicaciones-antes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recuerdas como se construian las aplicaciones antes?&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo empresarial de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Antes de sumergirnos en lo que traera 2026, retrocedamos al pasado por un momento. No hace mucho tiempo, crear tu propio producto SaaS (Software como Servicio) significaba largos meses de trabajo de ingenieria muy costoso. Si solo tenias una idea para una nueva plataforma de soporte al trabajo en equipo en la oficina, tenias que reservar un presupuesto enorme solo para los cimientos.&lt;/p&gt;
&lt;p&gt;Tenias que contratar a un buen desarrollador backend (que se encargaria de las bases de datos y los servidores), un gran desarrollador frontend para que la aplicación no se viera terrible, y al menos un especialista en la nube o seguridad, porque ninguna corporacion compraria un sistema con fugas. Crear la primera versión - lo que popularmente llamamos un MVP (producto minimo viable) - a menudo consumia los ahorros de toda una vida. El código era una barrera, un muro dificil de saltar para la persona promedio con una idea de negocio genial, y cada sistema web funcional y bien escalable era recompensado con admiracion por el mercado. La gente solia decir: “Guau, alguien logro escribir esto realmente, funciona de manera estable, respeto.”&lt;/p&gt;
&lt;h2 id=&quot;las-herramientas-de-ia-y-la-caida-drastica-de-las-barreras-de-entrada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-herramientas-de-ia-y-la-caida-drastica-de-las-barreras-de-entrada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las herramientas de IA y la caida drastica de las barreras de entrada&lt;/h2&gt;
&lt;p&gt;Con la expansion temprana de los grandes modelos de lenguaje (como GPT-4 o la familia Claude), la situación cambio masivamente, casí historicamente. De repente, resulto que “escribir código” dejo de ser un superpoder exclusivo de un punado de ingenieros educados y muy costosos de mantener. Hoy, las herramientas pueden armar una aplicación basandose en lenguaje natural - simplemente le pides al modelo que haga algo específico por ti, y lo hace. Construye una pantalla de inicio de sesion en medio minuto, conecta una base de datos en otros diez minutos. Los agentes autonomos ahora pueden corregir errores de compilacion o buscar problemas en los registros del servidor más rápido que cualquier junior en tu departamento de TI.&lt;/p&gt;
&lt;p&gt;En consecuencia, la barrera de entrada para crear productos digitales básicamente dejo de existir. Ha muerto la programacion? Absolutamente no. Solo cambio su nivel de artesania de experiencia rara a mercancia comercial. Igual que hoy compras pan en la tienda local, en lugar de cultivar grano en tu propio campo y moler harina en un molino. La programacion se ha democratizado a niveles increibles, previamente inimaginables. Multitudes de fundadores “no técnicos” pero brillantes pueden presentar su pequeño servicio funcional y muy elegante para varios cientos de usuarios al mundo en solo dos tardes cortas. El costo de producir esta tecnología de nivel de entrada se ha desplomado al suelo. Esto suena hermoso para las personas que quieren iniciar su propio negocio, pero al mismo tiempo es una alarma fuerte para los actores de mercado establecidos y más antiguos que dependen de explotar sus posiciones arraigadas.&lt;/p&gt;
&lt;h2 id=&quot;cuanto-creceran-las-expectativas-de-los-usuarios-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuanto-creceran-las-expectativas-de-los-usuarios-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuanto creceran las expectativas de los usuarios en 2026?&lt;/h2&gt;
&lt;p&gt;Necesitamos tocar un punto bastante brutal en toda esta discusion. Soliamos admirar los diseños graficos cuadrados, nos alegramos como ninos pequeños de que una página cargara a tiempo en absoluto, y de que los botones reaccionaran sin colapsar explicitamente el servidor. Hace una decada, sonreiamos con lastima al recordar como se veia el software a la vuelta del siglo. Hoy, sonreimos con lastima al ver programás de hace solo cinco años.&lt;/p&gt;
&lt;p&gt;En literalmente docenas de meses, para finales de este 2026, la gente se rira genuinamente comentando lo tosca que es la programacion que estamos usando actualmente, en este mismo momento. El estándar de lo que consideraremos un “sistema brillantemente disenado, hermoso y ultra-responsivo usado por millones” subira drasticamente. Los programás no podran tartamudear ni siquiera un microsegundo; las experiencias de usuario (UX) con las aplicaciones se acercaran perfectamente a la intuicion de asistentes magicos, y cualquier defecto de diseño será absolutamente fatal para una aplicación. El clientes, acostumbrado al alto rendimiento, desinstalara una nueva aplicación con una velocidad increible despues de solo el primer minimo tropiezo de una barra de carga poco intuitiva. Porque crear una apariencia hermosa hoy es un solo prompt, nosotros como usuarios nos hemos vuelto rápidamente extremadamente consentidos, desagradecidos y dolorosamente brutales al evaluar cualquier innovador de negocios defectuosos que deambula por los margenes del buen gusto. Ya no hay más indulgencia para “problemas iniciales” despues de un debut en el mercado. Si algo va a sobrevivir comercialmente - tiene que verse fenomenal desde la primera hora.&lt;/p&gt;
&lt;h2 id=&quot;nuevas-reglas-del-juego-en-modelos-b2b-y-mercados-saas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nuevas-reglas-del-juego-en-modelos-b2b-y-mercados-saas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nuevas reglas del juego en modelos B2B y mercados SaaS&lt;/h2&gt;
&lt;p&gt;La demanda de soluciones no desaparecera. El mundo sigue absorbiendo con entusiasmo la computerizacion, y todas esas corporaciones, pequeñas fabricas o empresas de logistica necesitan y mejoran constantemente su software. El SaaS (como el conocido modelo de negocio en la nube, donde pagas una suscripcion mensual por un bien seleccionado y no necesitas servidores de empresa) sobrevivira perfecta y valientemente. Podria perder un poco de su posición como suscripcion estándar basada únicamente en cobrar tarifas molestas por el proverbial “asiento del nuevo empleado” (el famoso “pago por asiento”). Por que? Principalmente porque es un absurdo envejecido. Por que pagar por el asiento de alguien cuando ese lugar y posición pueden ser literalmente eliminados por una automatizacion masiva usando agentes digitales que no toman vacaciones? El nuevo sistema de facturacion se centrara estricta y exclusivamente en el valor final entregado al destinatario (pago por resultado).&lt;/p&gt;
&lt;h2 id=&quot;el-miedo-a-los-grandes-gigantes-y-la-caida-de-ciertas-nociones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-miedo-a-los-grandes-gigantes-y-la-caida-de-ciertas-nociones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El miedo a los grandes gigantes y la caida de ciertas nociones&lt;/h2&gt;
&lt;p&gt;Desde que estoy en circulos de tecnología empresarial, he visto un patron implacable, constante y paralizante de miedo recurrente. Los lectores más antiguos probablemente asentirancon la cabeza rápidamente en comprension, porque durante generaciones este fue el inmortal y todopoderoso Google; a veces el poderoso Facebook o Apple. Hoy, llamamos a este monstruo bajo la cama y espantapajaros de inversores IA para abreviar.&lt;/p&gt;
&lt;p&gt;Es el miedo de que en un corto y miserable momento, la sede omnisciente en Silicon Valley simplemente desee tu acogedor terreno de negocio y entre con botas grandes, arrasando agresivamente con toda la oposicion local en su camino. Y de mis más de veinte años de experiencia de vida y trabajo, un fenomeno emerge claramente por ahora. Esta carrera anticuada sigue siendo muy ganable. Los gigantes siempre replican el patron de monolitos masivos desde cajas de cristal. Concentran sus esfuerzos ampliamente - para las masas. Los equipos más pequeños de desarrolladores agiles e inteligentes seguiran encontrando oceanos absolutos de dinero habilmente escondidos en mil grietas no gestionadas de la enorme demanda global, resolviendo tormentos de mercado aburridos y grises del dia a dia en cientos de ramás más pequeñas o prosperas y muy rentables de la economia mundial. En estos enfrentamientos, los equipos más pequeños con manos más rápidas y mejor oido para el mercado generalmente ganan - aunque los dragones de combate de poderosos multimillonarios vuelen sobre sus cabezas.&lt;/p&gt;
&lt;h2 id=&quot;la-trampa-de-la-mediocridad-o-el-nuevo-problema-del-software-basura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-trampa-de-la-mediocridad-o-el-nuevo-problema-del-software-basura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La trampa de la mediocridad, o el nuevo problema del software basura&lt;/h2&gt;
&lt;p&gt;Es hora de abrir el telon sobre uno de los factores más importantes de este mercado del que nos quejamos tanto actualmente. Una tendencia muy peligrosa, nueva y palpable resultado de la comercializacion masiva de escribir programás gratuitos es el barro pesado de aplicaciones que nos referimos en jerga como “software slop”. Esta etiqueta diagnostica con precision el software basura extremadamente doloroso y en expansion.&lt;/p&gt;
&lt;p&gt;Dado que hoy un programador usando los beneficios de un LLM en un pequeño sotano en los suburbios puede configurar una nueva aplicación al instante y subirla a la tienda - muy ingenuamente a menudo sucumben a esta inmensa tentacion humana de crear algun capricho informatico absolutamente irrelevante para su persona de clientes abstracta imaginaria. Los tipos construyen un clon de Notion o un pequeño bloc de notas bellamente encuadernado y ponen un boton de asistente de chat magico en la parte superior, confiando infantilmente en que millones se maravillaran de repente y sacaran sus tarjetas de credito. Asi, despues de un minuto de reflexion, producen monstruos en masa con peor soporte al clientes y cien veces menos usabilidad que los programás que con orgullo pretendian reemplazar. El mercado hoy no necesita otra interfaz de inicio de sesion bellamente animada de un entusiasta de domingo. Se esta asfixiando constantemente por la falta de soluciones específicas para contabilidad y transporte. Las herramientas etiquetadas como “slop” ignoran las realidades aburridas, enfocando el poder solo en la postura estetica temporal de clones sin idea de como defender su valor empresarial. Nadie que pague sus cuentas sanamente puede soportar herramientas hechas rápidamente, estupidamente, feas y totalmente sin un concepto para los dolores humanos reales a su alrededor.&lt;/p&gt;
&lt;h2 id=&quot;clonar-y-mejorar-una-interfaz-no-es-un-negocio-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#clonar-y-mejorar-una-interfaz-no-es-un-negocio-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Clonar y mejorar una interfaz no es un negocio real&lt;/h2&gt;
&lt;p&gt;Hoy, en los albores de un avance en 2026 y más alla, estamos construyendo nuestra industria de software sobre un cierto eje empresarial simple. Los ajustes esteticos solos e intercambiar interfaces a través de generación en la nube no convierten a las personas en lideres a largo plazo y serios de una nueva fortuna tecnológica. Puedes clonar tus vistas hasta la saciedad, igual que millones de estudiantes las clonan para un curriculum aburrido.&lt;/p&gt;
&lt;p&gt;Todo el poder no reside en el programa como una pantalla con filas de datos y bloques, sino que un negocio se defiende en paredes pesadas y propietarias que son completamente inaccesibles para hackers aleatorios. Esto consiste en una gran cantidad de operaciones diarias eficientes con personas en el campo (que ninguna IA simple puede tocar desde lejos con un teclado), confianza profunda construida entre tesoreros empresariales y tomadores de decisiones despues de negociaciones, o miles de puntos analiticos duros meticulosamente recopilados, investigando procesos durante una docena de inviernos (datos específicos). Estos cimientos profundos crean para tu SaaS una imagen de foso grueso para verdaderos caballeros - que jovenes adeptos de compiladores rápidos de los pasillos se romperan absolutamente los dientes tratando de morder un mercado tan grande sin capital al principio. Enfocando el software no en la simple clonacion caserá de aplicaciones de reserva de trenes, sino yendo al encuentro de la gran ola de maquinas pesadas de negocios, corporativas B2B “Enterprise” - es la garantia de una fortaleza insumergible y una estabilidad significativa de varios años que resistira cada tormenta de mediocridad en la informatica de generación de código abierto.&lt;/p&gt;
&lt;h2 id=&quot;la-distribucion-es-el-cuello-de-botella-del-mundo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-distribucion-es-el-cuello-de-botella-del-mundo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La distribucion es el cuello de botella del mundo&lt;/h2&gt;
&lt;p&gt;Si en este gran mundo, escribir y entregar tecnología no es lo más importante para este gran éxito en absoluto - entonces que demonios realmente construye el éxito en la era del software generado con un dedo en un teclado artificial en dos hermosas tardes antes de la hora del estreno?&lt;/p&gt;
&lt;p&gt;Obtén una respuesta más valiosa que el oro antes de las grandes olas empresariales de turbulencia bursatil: El cuello de botella en todo y la única porteria en el oceano de novedades de TI de hoy entre cientos de multitudes de copias grises de las nubes - es la distribucion. Significa llegar al clientes para una señal dura de atención y construir el rango de la marca personal en si alrededor del servicio para cientos de likes o vistas en medios para un monton de dinero. Estamos rodeados de un mercado donde millones de productos derramados se encuentran orgullosos hombro a fuerte hombro compitiendo como hermanos hermanas que lucen identicamente - solo un equipo de comercializadores de gran distribucion que luchan incansablemente con una billetera de extensiónes puede empujar este grito tuyo al frente del usuario, salvando todo el modelo. El código sin la artilleria del alcance hoy será un solitario tristemente colgado en la arena del olvido bajo las ventanas de exhibicion de la nube.&lt;/p&gt;
&lt;h2 id=&quot;el-nuevo-marketing-es-una-era-diferente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-nuevo-marketing-es-una-era-diferente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El nuevo marketing es una era diferente&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Impulsando novedades, tienes que entender un punto aun más brutal de este camino de evolucion sobre la distribucion. El mundo no hace clic con entusiasmo, como hace quince campañas de primavera de mercado gris en losetas patrocinadas onduladas pegadas al lado spameando desde pantallas con una nube de los grandes Facebooks y esos viejos de redes anticuadas tradicionalmente inflados del mercado.&lt;/p&gt;
&lt;p&gt;En el umbral de los cambios, una nueva generación de enormes algoritmos para SEO y posicionamiento entra silenciosamente en la habitacion a través de estar presente no detras de cubiertas en bares en la cima de opiniones, sino a través de menciones fuertes para que el asistente de respuestas de cientos de millones de masas te pesque del resto exponiendo estrictamente el gran contenido de asesores - y recomiende tus servicios SaaS al usuario para quien se invito a si mismo por las manos en ventanas de chatbot gratuitas. Llamamos a esto “IA SEO” o una gran novedad de campañas en “anuncios GPT”. Y en futuras ventanas del mercado, son compras silenciosas especial y autorizadamente tranquilas en el mercado de suscripciones al lado donde robots de corporaciones hacen compras estrictamente con agentes automatizados sin una sombra de minutos de decision de demora humana. Lanzaran nuevas diez licencias de suscripciones al servicio estrictamente y cerraran con un gesto de despedida al inicio los presupuestos clásicos de alcance.&lt;/p&gt;
&lt;h2 id=&quot;un-breve-resumen-para-los-grandes-caminos-por-delante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#un-breve-resumen-para-los-grandes-caminos-por-delante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Un breve resumen para los grandes caminos por delante&lt;/h2&gt;
&lt;p&gt;Las herramientas para la generación artificial de código hacen hoy sin negar que el software mediocre y simplemente hecho clon a clon nos inunda como un mar masivo en el escritorio. Pero la verdad entrega y da la bienvenida a la defensa del hecho sobre el escudo en cada mercado directamente desde una cabeza dura en la lógica de fusion con el negocio y enfocandose en construir sabiamente desde las paredes hacia las manos y oido para la distribucion. Para escapar de la plaga del fotocopiado de código pobre y un balance final perdido en la billetera, simplemente tienes que golpear la fuerza estrictamente sobre las relaciones en la columna vertebral de las necesidades del clientes. Necesitamos distribuir lo tuyo para el propósito correcto alla en las regiones más profundas de la industria, donde el viejo castillo B2B es una defensa contra bots ciegos que copian estrictamente desde el fondo de ventanas a bajo precio para la poblacion general del mercado. Estamos todos aquí ante ti en este enorme barco navegando estrictamente desde el timon a las olas ganadoras. Abajo la mediocridad a la basura, a favor de construir relaciones desde los motores reales de corporaciones de pequeños nichos!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Necesitas una estrategia de distribucion para tu producto de software? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para una consultoria estrategica sobre tu presencia digital en 2026.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>technology</category><category domain="tag">ai</category><category domain="tag">saas</category><category domain="tag">marketing</category><category domain="tag">software-development</category><enclosure url="https://wppoland.com/images/og/software-engineering-workshop-group.jpg" type="image/jpeg"/></item><item><title>Reemplazara la IA a los desarrolladores de WordPress?</title><link>https://wppoland.com/es/will-ai-replace-wordpress-developers/</link><guid isPermaLink="true">https://wppoland.com/es/will-ai-replace-wordpress-developers/</guid><description>Que es un desarrollador de WordPress, que hace y reemplazara la IA ese rol? Una mirada honesta a tarifas, habilidades y el impacto real de la IA en el desarrollo WordPress en 2026.</description><pubDate>Wed, 25 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;introduction&quot; class=&quot;speakable-summary&quot;&gt;
&lt;h2 id=&quot;reemplazara-la-ia-a-los-desarrolladores-de-wordpress-la-pregunta-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reemplazara-la-ia-a-los-desarrolladores-de-wordpress-la-pregunta-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reemplazara la IA a los desarrolladores de WordPress? La pregunta real&lt;/h2&gt;
&lt;p&gt;Seamos honestos. Si es desarrollador de WordPress en 2026, ha visto los titulares. Ha probado ChatGPT. Probablemente ha usado Copilot. Y se ha preguntado: se acabo mi carrera?&lt;/p&gt;
&lt;p&gt;Aqui esta la verdad: no se acabo. Pero esta cambiando.&lt;/p&gt;
&lt;p&gt;Este no es otro artículo diciendole que la IA revolucionara todo o que necesita entrar en panico. Es simplemente lo que realmente importa para su trabajo.&lt;/p&gt;
&lt;p&gt;He estado construyendo sitios WordPress desde antes de que fuera popular. Recuerdo cuando WordPress era solo una plataforma de blogging. He visto la plataforma evolucionar, he visto frameworks ir y venir, y ahora estoy viendo la IA remodelar como trabajamos. Aqui esta lo que pienso.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;que-es-un-desarrollador-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-un-desarrollador-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es un desarrollador de WordPress&lt;/h2&gt;
&lt;p&gt;Un desarrollador de WordPress es un profesional web que construye, personaliza y mantiene sitios web en la plataforma WordPress. El rol abarca un amplio espectro:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desarrolladores de temas&lt;/strong&gt; crean la capa visual — plantillas, layouts, diseño responsive, CSS y la integración entre el diseño y la jerarquia de plantillas de WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrolladores de plugins&lt;/strong&gt; extienden la funcionalidad de WordPress a través de código PHP personalizado, hooks (acciones y filtros), endpoints de REST API e interacciones con la base de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrolladores WordPress full-stack&lt;/strong&gt; manejan tanto frontend como backend, incluyendo configuración de servidores, optimización de rendimiento, endurecimiento de seguridad y pipelines de despliegue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrolladores WooCommerce&lt;/strong&gt; se especializan en comercio electronico — configuraciónes de productos, integraciones de pasarelas de pago, logica de envios y cumplimiento normativo (IVA, RGPD, Omnibus).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En 2026, un desarrollador de WordPress también trabaja cada vez más con arquitecturas headless (WPGraphQL + frontends React/Astro), integraciones de IA (Abilities API) e ingenieria de rendimiento (optimización de Core Web Vitals).&lt;/p&gt;
&lt;h2 id=&quot;que-hace-un-desarrollador-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hace-un-desarrollador-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hace un desarrollador de WordPress&lt;/h2&gt;
&lt;p&gt;El trabajo diario varia según la especializacion, pero las responsabilidades tipicas de un desarrollador WordPress incluyen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Construir temas y plugins personalizados&lt;/strong&gt; a partir de especificaciones del clientes, traduciendo requisitos de negocio en código funcional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrar sistemas de terceros&lt;/strong&gt; — CRMs, procesadores de pagos, APIs de envio, plataformas de analítica, herramientas de automatizacion de marketing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de rendimiento&lt;/strong&gt; — diagnosticar consultas lentas, reducir TTFB, optimizar imagenes, implementar estrategias de cache y alcanzar los objetivos de Core Web Vitals.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantenimiento de seguridad&lt;/strong&gt; — aplicar actualizaciones, endurecer configuraciónes, ejecutar escaneos de vulnerabilidades, manejar respuesta ante incidentes cuando los sitios son comprometidos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Depuracion de problemas en producción&lt;/strong&gt; — conflictos de plugins, errores fatales de PHP, corrupcion de base de datos, problemas del entorno de hosting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comúnicacion con el clientes&lt;/strong&gt; — traducir restricciones técnicas a lenguaje de negocio, gestionar expectativas y entregar proyectos a tiempo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura de contenido&lt;/strong&gt; — disenar custom post types, taxonomias, grupos de campos ACF y patrones de bloques Gutenberg que se ajusten a como realmente trabaja el equipo del clientes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El rol no es solo “hacer sitios web.” Es resolver problemas de negocio usando WordPress como plataforma. Los desarrolladores que más ganan son quienes entienden tanto el stack técnico como el contexto de negocio. Con &lt;a href=&quot;/es/wordpress-7-0-gu%C3%ADa-completa-integraci%C3%B3n-ia/&quot;&gt;WordPress 7.0 integrando IA nativamente&lt;/a&gt;, la alfabetizacion en IA se esta convirtiendo en parte del conjunto de habilidades básicas.&lt;/p&gt;
&lt;h2 id=&quot;como-la-ia-ayuda-a-los-desarrolladores-de-wordpress-hoy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-la-ia-ayuda-a-los-desarrolladores-de-wordpress-hoy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como la IA ayuda a los desarrolladores de WordPress hoy&lt;/h2&gt;
&lt;p&gt;Demos credito donde corresponde. Las herramientas de IA son genuinamente utiles para ciertas tareas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generación de código&lt;/strong&gt; funciona para cosas estándar. Necesita una estructura básica de plugin? Una configuración de custom post type? Patrones estándar de WordPress? La IA maneja esto bien. No es magia, pero ahorra escritura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preguntas de documentación&lt;/strong&gt; es donde la IA brilla. Olvido como funciona una función de WordPress? Solo pregunte. Supera buscar en el codex. Supera Stack Overflow cuando las respuestas estan desactualizadas. Claro, a veces alucina, pero la mitad de Stack Overflow también.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ayuda de depuracion&lt;/strong&gt; puede acelerar las cosas. La IA no arreglara su bug, pero podria senalarle la dirección correcta más rápido que googlear al azar. Puede leer su mensaje de error y sugerir causas comunes. Eso es util.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Boilerplate de todo&lt;/strong&gt; desde plantillas de email hasta politicas de privacidad y banners de cookies. La IA genera primeros borradores razonables que luego personaliza. Es más rápido que escribir desde cero.&lt;/p&gt;
&lt;p&gt;Para ayuda específica con WordPress, consulte nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; si necesita ayuda con proyectos personalizados.&lt;/p&gt;
&lt;h2 id=&quot;trabajo-de-wordpress-que-la-ia-no-puede-reemplazar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trabajo-de-wordpress-que-la-ia-no-puede-reemplazar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trabajo de WordPress que la IA no puede reemplazar&lt;/h2&gt;
&lt;p&gt;Ahora la conversacion real. Aqui es donde su trabajo esta seguro.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conversaciones con clientes.&lt;/strong&gt; Alguien necesita hablar con el clientes, entender su negocio real, traducir eso en un sitio web, y gestionar expectativas. Eso no es código. Es una conversacion. La IA no puede hacer eso. Puede generar correos profesionales, pero no conoce la personalidad de su clientes, su nivel de paciencia, si prefieren una llamada rápida o respuestas escritas detalladas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes personalizadas.&lt;/strong&gt; Cada clientes piensa que sus necesidades son únicas. A veces tienen razon. Cuando necesita construir algo que no existe, descubrir por que tres plugins no funcionan juntos, o resolver un problema que nadie más ha resuelto, usted lo hace. La IA solo puede trabajar con lo que existe. La innovacion es humana.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La realidad desordenada.&lt;/strong&gt; Los sitios WordPress en producción son un desastre. Plugins viejos, código deprecado, configuraciónes raras. No puede automatizar su camino a través de la deuda técnica de otra persona. Aparece, investiga, lo resuelve. Eso no va a ninguna parte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seguridad y cumplimiento.&lt;/strong&gt; Los clientes necesitan cumplimiento RGPD, &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditorias de seguridad&lt;/a&gt;, correcciones de accesibilidad. Estos requieren entender contexto, hacer juicios de valor, y asumir responsabilidad. La IA puede sugerir mejores prácticas pero no puede firmar el cumplimiento. Esa firma es humana.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gestión de proyectos.&lt;/strong&gt; Estimaciones de plazos, asignacion de recursos, gestión de alcance. Estas son habilidades humanas. La IA no conoce su equipo, la flexibilidad presupuestaria de su clientes, ni que funcionalidades son realmente criticas versus agradables de tener.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Relaciones.&lt;/strong&gt; Los clientes contratan desarrolladores que conocen. La confianza se construye a través de comunicación real, confiabilidad y resultados. Este es trabajo humano.&lt;/p&gt;
&lt;h2 id=&quot;como-la-ia-esta-cambiando-los-trabajos-de-desarrolladores-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-la-ia-esta-cambiando-los-trabajos-de-desarrolladores-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como la IA esta cambiando los trabajos de desarrolladores WordPress&lt;/h2&gt;
&lt;p&gt;El trabajo no esta desapareciendo. Esta cambiando.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fundamentos más rápidos.&lt;/strong&gt; Si la IA maneja las cosas simples más rápido, tiene más tiempo para trabajo complejo. Esto es bueno. Significa entrega más rápida, clientes más contentos, más dinero.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diferentes expectativas.&lt;/strong&gt; Los clientes ahora esperan que use herramientas de IA. No quieren pagar tarifa completa por trabajo que un robot podria hacer más rápido. Adaptese o pierda licitaciones. Es economia simple.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nuevas oportunidades.&lt;/strong&gt; La integración de IA en WordPress se esta convirtiendo en un servicio. Si entiende ambos, puede ofrecer algo valioso. Quien más lo haria? Los desarrolladores tradicionales no entienden IA, los especialistas en IA no entienden WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La barra esta más alta.&lt;/strong&gt; Porque la IA maneja lo básico, los clientes esperan mas. El trabajo commodity se esta automatizando. El valor esta en el trabajo personalizado ahora. Ahi es donde necesita estar.&lt;/p&gt;
&lt;h2 id=&quot;tarifas-de-desarrolladores-wordpress-y-la-economia-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tarifas-de-desarrolladores-wordpress-y-la-economia-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tarifas de desarrolladores WordPress y la economia de la IA&lt;/h2&gt;
&lt;p&gt;Aqui esta lo que realmente impulsa las tarifas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Oferta y demanda&lt;/strong&gt; no han cambiado tanto. Todavia hay demanda masiva de sitios WordPress. Cada pequeño negocio necesita uno. La mayoria no puede construirlo por si mismos. Lo necesitan a usted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Commoditizacion vs especializacion.&lt;/strong&gt; Los sitios WordPress básicos se estan commoditizando. Cualquiera con Elementor puede construir una landing page. Pero proyectos complejos, &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tiendas WooCommerce&lt;/a&gt;, sistemas de membresia, desarrollo de plugins personalizados, ahi es donde las tarifas se mantienen altas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La prima de la relación.&lt;/strong&gt; Los desarrolladores con relaciones establecidas con clientes pueden cobrar 30-50% más que desconocidos. Los clientes pagan por confianza. Por confiabilidad. Por no tener que explicar las cosas dos veces. Esto es completamente humano. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactenos&lt;/a&gt; para ver como construimos relaciones duraderas con clientes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La ubicacion importa menos.&lt;/strong&gt; El trabajo remoto globalizo el mercado. Esta compitiendo con desarrolladores de todo el mundo. Pero eso también significa que puede acceder a clientes de todo el mundo. La oportunidad es más grande, pero también la competencia.&lt;/p&gt;
&lt;h2 id=&quot;como-mantenerse-valioso-como-desarrollador-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-mantenerse-valioso-como-desarrollador-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como mantenerse valioso como desarrollador WordPress&lt;/h2&gt;
&lt;p&gt;Si quiere prosperar como desarrollador WordPress en este entorno, esto es lo que realmente ayuda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sea util, no solo técnico.&lt;/strong&gt; Los clientes no les importa su stack. Les importa que su sitio web funcióne. Resuelva problemas reales. Eso es lo que le pagan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comuniquese claramente.&lt;/strong&gt; Explique las cosas en español simple. Gestione expectativas. Entregue a tiempo. Esto es lo que hace felices a los clientes. Los clientes felices refieren otros clientes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abrace las herramientas.&lt;/strong&gt; La IA no es su enemiga. Es una herramienta. Usela para lo que es buena, enfoque su energia en lo que usted es bueno. Los desarrolladores que más dinero ganan? Usan IA para el 40% del trabajo y hacen el 60% complejo que requiere habilidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Especialicese estrategicamente.&lt;/strong&gt; No intente ser todo. Elija un nicho. Sitios WordPress de salud. E-commerce con WooCommerce. Plataformás de membresia. Algo donde pueda ser el experto. Los especialistas cobran más que los generalistas. Nuestro &lt;a href=&quot;/es/blog/&quot;&gt;blog&lt;/a&gt; muestra ejemplos de trabajo especializado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Siga aprendiendo.&lt;/strong&gt; Pero aprenda cosas que realmente importan. No cada framework nuevo. No cada actualización de plugin. Los fundamentos que le permiten resolver nuevos problemas. Las habilidades de negocio que le ayudan a conseguir y mantener clientes.&lt;/p&gt;
&lt;h2 id=&quot;el-futuro-de-wordpress-y-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-de-wordpress-y-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro de WordPress y la IA&lt;/h2&gt;
&lt;p&gt;Habiendo hecho esto por años, aquí esta mi prediccion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La IA no le reemplazara.&lt;/strong&gt; Reemplazara las partes de su trabajo que son aburridas de todas formas. Pasara menos tiempo en boilerplate, más tiempo en trabajo interesante. Eso suena bien para mi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El rol evoluciona.&lt;/strong&gt; La descripción del trabajo cambia cada pocos años de todas formas. Del PHP crudo a temas, a constructores de páginas, a headless. Esta es solo otra evolucion. Los desarrolladores que se adapten estaran bien.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Surgen oportunidades.&lt;/strong&gt; Nuevos servicios aparecen. Integración de IA, funcionalidades impulsadas por IA, soporte asistido por IA. Estos son flujos de ingresos que no existian antes. Los adoptantes tempranos capturan valor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Las habilidades humanas se vuelven más valiosas.&lt;/strong&gt; Conforme el trabajo técnico se automatiza, lo humano destaca. Comúnicación, construccion de relaciones, gestión de proyectos. Estos se convierten en diferenciadores.&lt;/p&gt;
&lt;h2 id=&quot;deberia-seguir-aprendiendo-wordpress-en-la-era-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deberia-seguir-aprendiendo-wordpress-en-la-era-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deberia seguir aprendiendo WordPress en la era de la IA?&lt;/h2&gt;
&lt;p&gt;La IA no reemplazara a los desarrolladores de WordPress. Reemplazara las partes aburridas del trabajo. Y honestamente? Eso probablemente es bueno.&lt;/p&gt;
&lt;p&gt;Los desarrolladores que les vaya bien seran los que usen la IA como herramienta, se enfoquen en el lado humano del trabajo, y sigan mejorando en resolver problemas reales para clientes reales.&lt;/p&gt;
&lt;p&gt;Su carrera no se acabo. Solo esta evolucionando. Como siempre.&lt;/p&gt;
&lt;p&gt;Necesita ayuda con un proyecto WordPress? &lt;a href=&quot;/es/contacto/&quot;&gt;Contactenos&lt;/a&gt;. Nos especializamos en trabajo complejo de WordPress que la IA no puede manejar.&lt;/p&gt;
&lt;p&gt;Ahora vaya y construya algo.&lt;/p&gt;
&lt;h2 id=&quot;proyectos-wordpress-que-la-ia-todavia-no-puede-entregar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proyectos-wordpress-que-la-ia-todavia-no-puede-entregar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proyectos WordPress que la IA todavia no puede entregar&lt;/h2&gt;
&lt;p&gt;Dejeme contarle sobre un proyecto en el que trabaje el mes pasado. Un clientes necesitaba un sistema de reservas personalizado para su consultorio medico. Nada fuera de lo comun, verdad? Incorrecto.&lt;/p&gt;
&lt;p&gt;Tenian tres sistemas de software diferentes que de alguna manera necesitaban comunicarse entre si. Su software de gestión de pacientes, su calendario y su sistema de facturacion. Ninguno tenia APIs. Ninguno estaba documentado correctamente. Y necesitaban que todo funcionara para el proximo mes.&lt;/p&gt;
&lt;p&gt;La IA no podia ayudar con esto. No habia código que generar, ningun plugin que instalar, ninguna plantilla que seguir. Era pura resolución de problemas. Descubrir soluciones alternativas, construir integraciones personalizadas, probar cada conexión hasta que funcionara de manera confiable.&lt;/p&gt;
&lt;p&gt;Ahi es donde esta el dinero. Ahi es donde la IA no puede llegar.&lt;/p&gt;
&lt;p&gt;Otro ejemplo. Sitio de comercio electronico con 10,000 productos. El clientes queria migrar de Magento a WooCommerce. Suena sencillo, verdad? No lo era. Los datos estaban desordenados, faltaban imágenes, las categorías no coincidian. La IA puede generar scripts de migración, pero no puede mirar 10,000 productos y tomar decisiones sobre cuales mantener, cuales archivar, como manejar los que tienen datos faltantes.&lt;/p&gt;
&lt;p&gt;Pase tres semanas en esa migración. El clientes pago en consecuencia. La IA habria creado un desastre roto.&lt;/p&gt;
&lt;h2 id=&quot;la-economia-freelance-del-desarrollador-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-economia-freelance-del-desarrollador-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La economia freelance del desarrollador WordPress&lt;/h2&gt;
&lt;p&gt;Aqui hay algo más para considerar. La economia para los desarrolladores de WordPress esta cambiando.&lt;/p&gt;
&lt;p&gt;Mas desarrolladores se estan yendo al freelance. Las empresas no quieren contratar desarrolladores a tiempo completo. Quieren pagar por trabajo completado, no por horas sentados en un escritorio. Esto crea oportunidad para usted, pero también crea presion en las tarifas.&lt;/p&gt;
&lt;p&gt;La IA esta empeorando esto. Los clientes ahora pueden obtener sitios básicos baratos. El mercado de sitios WordPress de $500 se esta muriendo. Pero el mercado de proyectos personalizados de $5000 esta creciendo. Necesita estar en el segundo mercado.&lt;/p&gt;
&lt;p&gt;Eso significa que necesita habilidades que justifiquen tarifas más altas. Integraciones complejas, desarrollo personalizado, contratos de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento&lt;/a&gt; continuo. Aqui es donde construye ingresos sostenibles.&lt;/p&gt;
&lt;p&gt;Los contratos de mantenimiento estan subestimados. Se hace cargo del sitio, maneja actualizaciones, arregla cosas cuando se rompen. El clientes le paga mensualmente. Ingresos predecibles, menos estres por encontrar nuevo trabajo. Y requiere supervision humana que la IA no puede proporcionar.&lt;/p&gt;
&lt;h2 id=&quot;trabajando-con-clientes-en-proyectos-wordpress-de-la-era-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trabajando-con-clientes-en-proyectos-wordpress-de-la-era-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trabajando con clientes en proyectos WordPress de la era IA&lt;/h2&gt;
&lt;p&gt;Una cosa mas. Los clientes se estan volviendo más dificiles de tratar.&lt;/p&gt;
&lt;p&gt;No porque sean malas personas. Porque han sido estafados antes. Han contratado desarrolladores que desaparecieron, que cobraron de mas, que entregaron sitios rotos. Ahora son desconfiados. Investigan. Comparan precios. Hacen preguntas dificiles.&lt;/p&gt;
&lt;p&gt;Esto es bueno para usted si es profesional. Porque significa que los operadores oportunistas estan siendo filtrados. Los clientes dispuestos a pagar por calidad buscan desarrolladores confiables. Ese es usted.&lt;/p&gt;
&lt;p&gt;Pero tiene que ganarse esa confianza. Entregue a tiempo. Comuniquese claramente. No prometa de mas. Si algo sale mal, arreglelo rápido. Estos fundamentos importan más que nunca.&lt;/p&gt;
&lt;p&gt;Los mejores clientes vienen de referencias. Entregue gran trabajo, trate bien a las personas, y el trabajo sigue llegando. No se trata de marketing, no de tener el sitio web más llamativo. Se trata de ser la persona a la que llaman cuando necesitan algo bien hecho.&lt;/p&gt;
&lt;h2 id=&quot;donde-enfocar-su-carrera-wordpress-en-un-mundo-con-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-enfocar-su-carrera-wordpress-en-un-mundo-con-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde enfocar su carrera WordPress en un mundo con IA&lt;/h2&gt;
&lt;p&gt;Si se pregunta en que enfocarse, aquí esta mi consejo.&lt;/p&gt;
&lt;p&gt;No intente aprender todo. Elija un area y vuelvase realmente bueno en ella. Quizas es WooCommerce. Quizas es desarrollo de plugins personalizados. Quizas es migraciones. Lo que sea, conviertase en la persona en la que la gente piensa cuando necesita eso hecho.&lt;/p&gt;
&lt;p&gt;Construya su portfolio alrededor de esa especializacion. Escriba sobre ello. Hable sobre ello. Hagase fácil de encontrar.&lt;/p&gt;
&lt;p&gt;También, cuide su salud. Este trabajo es sedentario. Se sienta en un escritorio todo el dia. Le duele la espalda, le duelen los ojos, su cerebro esta cansado. El ejercicio importa. Tome descansos. Salga a veces.&lt;/p&gt;
&lt;p&gt;El ritmo sostenible gana. No el desarrollador que trabaja 80 horas esta semana. El desarrollador que sigue trabajando productivamente en diez años.&lt;/p&gt;
&lt;h2 id=&quot;reflexiones-finales-sobre-ia-y-desarrolladores-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reflexiones-finales-sobre-ia-y-desarrolladores-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reflexiones finales sobre IA y desarrolladores WordPress&lt;/h2&gt;
&lt;p&gt;El mercado de WordPress esta evolucionando. La IA es parte de esa evolucion. Pero los fundamentos no han cambiado. Los clientes necesitan sitios web funcionando. Necesitan a alguien a quien llamar cuando las cosas se rompen. Necesitan a alguien en quien puedan confiar.&lt;/p&gt;
&lt;p&gt;Ese es usted. Siempre ha sido usted.&lt;/p&gt;
&lt;p&gt;Las herramientas cambian. Las técnicas evolucionan. Pero el valor central que proporciona, resolver problemas para negocios reales, eso no desaparece.&lt;/p&gt;
&lt;p&gt;Su carrera es lo que usted haga de ella. La IA es una herramienta en su kit de herramientas, no un reemplazo de sus habilidades. Usela sabiamente, enfoquese en lo que le hace valioso, y siga construyendo.&lt;/p&gt;
&lt;p&gt;El futuro es lo que usted cree que sea.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; y otros servicios especializados en WPPoland.&lt;/p&gt;</content:encoded><category>AI</category><category>WordPress</category><category>Career</category><category domain="tag">AI</category><category domain="tag">WordPress</category><category domain="tag">Web Development</category><category domain="tag">Career</category><category domain="tag">Future</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-flip.jpg" type="image/jpeg"/></item><item><title>Guia de supervivencia IT 2026 para el mercado laboral de IA</title><link>https://wppoland.com/es/it-industry-survival-guide-2026-ai-layoffs/</link><guid isPermaLink="true">https://wppoland.com/es/it-industry-survival-guide-2026-ai-layoffs/</guid><description>Los despidos globales en IT superaron los 245,000 en 2025, con empresas como Intel y Amazon liderando el cambio. Descubre como sobrevivir a la transformación del mercado 2026.</description><pubDate>Sat, 21 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;hr&gt;
&lt;div id=&quot;introduction&quot; class=&quot;speakable-summary&quot;&gt;
&lt;h2 id=&quot;introducción-leer-los-despidos-de-2022-a-2025&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introducción-leer-los-despidos-de-2022-a-2025&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introducción: leer los despidos de 2022 a 2025&lt;/h2&gt;
&lt;p&gt;Los despidos masivos de los últimos tres años en el sector IT global - Meta, Google, Amazon, Microsoft, Intel y oleadas paralelas en fintech europea - dan una lectura más útil cuando se separan dos historias mezcladas. Una es la corrección post-ZIRP del mercado sobrecalentado de 2020-2021. La otra es el cambio progresivo en qué tipo de trabajo es barato (CRUD, settings pages, informes rutinarios) y qué tipo sigue caro (arquitectura, integración con sistemas legacy, comunicación cercana al cliente).&lt;/p&gt;
&lt;p&gt;El “Desarrollador Junior” como lo conociamos ha desaparecido. El “Tester Manual” es una especie en peligro. En su lugar, una nueva clase de &lt;strong&gt;Ingenieros Aumentados por IA&lt;/strong&gt; y &lt;strong&gt;Orquestadores de Sistemas&lt;/strong&gt; esta demandando salarios record.&lt;/p&gt;
&lt;p&gt;En esta guía completa, analizamos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La ola global:&lt;/strong&gt; Por que Intel, Amazon y Meta estan recortando miles a pesar de ganancias record.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La perspectiva europea:&lt;/strong&gt; Como Europa Central se esta convirtiendo en el “Hub de Verificación” para sistemas de IA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metricas de supervivencia:&lt;/strong&gt; 5 estrategias respaldadas por datos para aumentar tu valor de mercado en un 40-60%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La hoja de ruta 2027:&lt;/strong&gt; Prepararse para el cambio “agentico” antes de que llegue.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id=&quot;la-crisis-it-global-despidos-2025-2026-en-números&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-crisis-it-global-despidos-2025-2026-en-números&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La crisis IT global: Despidos 2025-2026 en números&lt;/h2&gt;
&lt;p&gt;Para entender el mercado local, primero debemos mirar al epicentro. Los despidos de 2025-2026 son fundamentalmente diferentes de las correcciones post-pandemia de 2023. Estos son &lt;strong&gt;despidos estructurales por IA.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;gigantes-tecnológicos-la-transformación-ia-lean&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gigantes-tecnológicos-la-transformación-ia-lean&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gigantes tecnológicos: La transformación “IA lean”&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Empresa&lt;/th&gt;&lt;th&gt;Despidos (2025-26)&lt;/th&gt;&lt;th&gt;Razon principal declarada&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Intel&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;15,000+&lt;/td&gt;&lt;td&gt;Reestructuracion de fabricacion y enfoque en IA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Amazon&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;9,000+ (AWS/Live)&lt;/td&gt;&lt;td&gt;Automatizacion de cumplimiento y optimización Cloud&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Meta&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;5,500+&lt;/td&gt;&lt;td&gt;“Año de Eficiencia” Fase II (agentes IA)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Microsoft&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;4,000+&lt;/td&gt;&lt;td&gt;Cambio de software legacy a Copilot/Azure&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Oracle&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3,000+&lt;/td&gt;&lt;td&gt;Automatizacion de soporte cloud y ops SaaS&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;el-efecto-dominó-europeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-efecto-dominó-europeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El efecto dominó europeo&lt;/h3&gt;
&lt;p&gt;Europa ha visto un cambio más lento pero más permanente. A diferencia de EE.UU., donde “contratar y despedir” es comun, las empresas europeas estan usando &lt;strong&gt;desgaste natural&lt;/strong&gt; y &lt;strong&gt;reciclaje profesional forzado.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alemania:&lt;/strong&gt; Grandes gigantes automotrices e industriales (SAP, Bosch) estan reemplazando IT back-office tradicional con agentes LLM personalizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;España y Europa del Sur:&lt;/strong&gt; Como mercado creciente de outsourcing IT, la region siente la compresion global. Los equipos se estan consolidando alrededor de desarrolladores mid-senior que multiplican su productividad con IA.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;análisis-del-mercado-tendencias-globales-vs-realidad-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-del-mercado-tendencias-globales-vs-realidad-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis del mercado: tendencias globales vs realidad local&lt;/h2&gt;
&lt;p&gt;Sin tablas con cifras montadas para el efecto - los informes públicos (No Fluff Jobs Rynek Pracy IT 2025/2026, Just Join IT informe salarial, OECD Employment Outlook) muestran tres señales consistentes: la cuota de juniors en las vacantes ha caído por debajo del 6%, B2B en seniors se mantiene por encima del 70%, y la demanda de roles especializados (IA, seguridad, performance) crece más rápido que la demanda de roles generales. Citamos cifras concretas con enlace a la fuente en otros artículos, en lugar de construir indicadores a partir de informes distintos.&lt;/p&gt;
&lt;h3 id=&quot;que-esta-impulsando-estos-cambios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-esta-impulsando-estos-cambios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que esta impulsando estos cambios?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Automatizacion de tareas de programacion simples&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La IA ahora escribe código plantilla, APIs simples, tests unitarios e incluso documentación. Lo que antes tomaba horas ahora toma minutos. Esto no significa el fin de la programacion - significa la evolucion del rol del programador.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Optimización de costos por corporaciones&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En lugar de contratar 10 programadores, las empresas ahora contratan 4 especialistas + IA. Son matemáticas que ningun CFO ignorara.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Polarizacion del mercado&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La conclusion más importante: el mercado no esta muriendo, esta cambiando. Menos ofertas para roles simples (desarrolladores junior, testers manuales, soporte L1-L2), pero demanda record de especialistas en IA/ML, ciberseguridad y cloud.&lt;/p&gt;
&lt;h2 id=&quot;5-estrategias-de-adaptacion-probadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-estrategias-de-adaptacion-probadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5 Estrategias de adaptacion probadas&lt;/h2&gt;
&lt;h3 id=&quot;estrategia-1-conviertete-en-un-desarrollador-aumentado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-1-conviertete-en-un-desarrollador-aumentado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 1: Conviertete en un desarrollador aumentado por IA&lt;/h3&gt;
&lt;p&gt;No compitas con la IA - &lt;strong&gt;colabora con la IA&lt;/strong&gt;. Este es el cambio de mentalidad más importante que necesitas hacer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultados de la experiencia de mercado:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo para escribir una función API: 45 min → 12 min (73% de ahorro)&lt;/li&gt;
&lt;li&gt;Tiempo para escribir tests: 60 min → 20 min (67% de ahorro)&lt;/li&gt;
&lt;li&gt;Tiempo para documentación: 30 min → 8 min (73% de ahorro)&lt;/li&gt;
&lt;li&gt;Tiempo para investigación: 60 min → 15 min (75% de ahorro)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-2-especializate-en-areas-a-prueba-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-2-especializate-en-areas-a-prueba-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 2: Especializate en areas a prueba de IA&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Area&lt;/th&gt;&lt;th&gt;Por que la IA no puede reemplazarlo&lt;/th&gt;&lt;th&gt;Salario (EUR)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Ingenieria IA/ML&lt;/td&gt;&lt;td&gt;Tu creas las herramientas que reemplazan a otros&lt;/td&gt;&lt;td&gt;50,000-90,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ciberseguridad&lt;/td&gt;&lt;td&gt;Requiere evaluación de contexto humano, etica&lt;/td&gt;&lt;td&gt;45,000-80,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Arquitectura de sistemas&lt;/td&gt;&lt;td&gt;Requiere equilibrar negocio/tecnología/riesgo&lt;/td&gt;&lt;td&gt;50,000-85,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DevOps/Cloud&lt;/td&gt;&lt;td&gt;Requiere gestión de infraestructura, compliance&lt;/td&gt;&lt;td&gt;40,000-75,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Integración/Enterprise&lt;/td&gt;&lt;td&gt;Cada proyecto es único, requiere negociacion&lt;/td&gt;&lt;td&gt;45,000-75,000&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;estrategia-3-construye-un-portfolio-habilitado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-3-construye-un-portfolio-habilitado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 3: Construye un portfolio habilitado por IA&lt;/h3&gt;
&lt;p&gt;Los portfolios tradicionales ya no bastan. Los empleadores potenciales quieren ver proyectos con IA en el centro, automatizaciones y estudios de caso con metricas.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-4-haz-networking-activamente-y-construye-marca-personal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-4-haz-networking-activamente-y-construye-marca-personal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 4: Haz networking activamente y construye marca personal&lt;/h3&gt;
&lt;p&gt;En la era de la IA, &lt;strong&gt;la marca personal&lt;/strong&gt; es más importante que nunca. LinkedIn, blogs, presentaciones en meetups - esta es tu nueva tarjeta de presentacion.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-5-considera-freelancingconsulting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-5-considera-freelancingconsulting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 5: Considera freelancing/consulting&lt;/h3&gt;
&lt;p&gt;Las tarifas de consultoria en IA aumentaron significativamente en 2025 y 2026. Las empresas prefieren pagar a expertos por hora en lugar de construir equipos internos.&lt;/p&gt;
&lt;h2 id=&quot;que-hacer-ahora---pasos-concretos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hacer-ahora---pasos-concretos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hacer AHORA - pasos concretos&lt;/h2&gt;
&lt;h3 id=&quot;para-desarrolladores-todos-los-niveles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-desarrolladores-todos-los-niveles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para desarrolladores (todos los niveles)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Esta noche:&lt;/strong&gt; Instala Copilot y usalo para una tarea&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Esta semana:&lt;/strong&gt; Rastrea tiempo con IA y sin IA - anota resultados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Este mes:&lt;/strong&gt; Crea un proyecto con IA en el centro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Este trimestre:&lt;/strong&gt; Decide una especializacion y empieza un curso&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;para-managersleads&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-managersleads&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para managers/leads&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hoy:&lt;/strong&gt; Habla con tu equipo sobre IA - que ya estan usando?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Esta semana:&lt;/strong&gt; Introduce metricas - cuanto tiempo ahorra la IA?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Este mes:&lt;/strong&gt; Entrena al equipo en prompt engineering&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Este trimestre:&lt;/strong&gt; Modifica criterios de contratacion - busca personas “habilitadas por IA”&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;herramientas-y-frameworks-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-y-frameworks-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas y frameworks para 2026&lt;/h2&gt;
&lt;h3 id=&quot;ide-extensions-github-copilot-vs-cursor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ide-extensions-github-copilot-vs-cursor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IDE Extensions: GitHub Copilot vs. Cursor&lt;/h3&gt;
&lt;p&gt;Mientras Copilot sigue siendo el estándar de la industria, &lt;strong&gt;Cursor&lt;/strong&gt; ha ganado cuota de mercado significativa entre desarrolladores de elite. Su capacidad de “indexar” tu codebase completo localmente permite refactoring consciente del contexto.&lt;/p&gt;
&lt;h3 id=&quot;agentes-ia-especializados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agentes-ia-especializados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agentes IA especializados&lt;/h3&gt;
&lt;p&gt;Para 2026, la primera generación de agentes IA autonomos ha madurado. Estamos viendo a empresas de software moverse de contratar roles “Junior QA” en favor de &lt;strong&gt;Orquestadores de Agentes IA&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;preparandose-para-2027-el-cambio-agentico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preparandose-para-2027-el-cambio-agentico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preparandose para 2027: El cambio “agentico”&lt;/h2&gt;
&lt;p&gt;La proxima gran ola es el cambio de “IA generativa” (escribir código) a “IA agentica” (ejecutar tareas). Para 2027, el rol de “Programador” probablemente evolucionara al de “Orquestador de Sistemas”.&lt;/p&gt;
&lt;h3 id=&quot;habilidades-de-comunicación-no-habilidades-blandas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#habilidades-de-comunicación-no-habilidades-blandas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Habilidades de comunicación, no “habilidades blandas”&lt;/h3&gt;
&lt;p&gt;A medida que el trabajo rutinario se automatiza, sube el valor de las &lt;strong&gt;decisiones de arquitectura&lt;/strong&gt;, el &lt;strong&gt;trabajo de integración&lt;/strong&gt; y la &lt;strong&gt;comunicación con clientes&lt;/strong&gt;. Quien sabe explicarle a un stakeholder no técnico por qué se tomó una decisión y qué compromisos implica, no está en la primera ola de automatización.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Lo que los despidos de 2022-2025 realmente nos cuentan:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los despidos fueron una corrección post-ZIRP, no un apocalipsis de IA - la mayoría salieron de Meta, Google, Amazon, Microsoft e Intel, a menudo trimestres antes de la adopción amplia de herramientas de IA&lt;/li&gt;
&lt;li&gt;El trabajo rutinario (CRUD, settings, informes) se abarata; la arquitectura, el debugging de legacy y la comunicación cercana al cliente siguen caros&lt;/li&gt;
&lt;li&gt;Lo que funciona en 2026: profundidad en un stack concreto, trabajo visible (open source, charlas en conferencias), red de contactos de antiguos colegas&lt;/li&gt;
&lt;li&gt;Lo que no funciona: perseguir cada hype de framework, acumular certificaciones genéricas, montar prompt engineering como habilidad principal&lt;/li&gt;
&lt;li&gt;Nadie sabe cómo será 2027 - “habilidades a prueba de IA” es un eslogan de marketing, no un dato&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Explora nuestro &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>IT Industry</category><category>Career</category><category domain="tag">AI</category><category domain="tag">Artificial Intelligence</category><category domain="tag">Employment</category><category domain="tag">IT Career</category><category domain="tag">Job Market</category><enclosure url="https://wppoland.com/images/og/blog/ai-it-industry-poland-2026-survival.jpg" type="image/jpeg"/></item><item><title>WordPress 7.0: que se sabe, que es especulación, que hacer ahora</title><link>https://wppoland.com/es/wordpress-7-0-complete-guide-ai-integration/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-7-0-complete-guide-ai-integration/</guid><description>WordPress 7.0 no se ha lanzado al momento de escribir esto. Esté articulo separa lo que esta publicamente confirmado en Make WordPress y core trac de la especulación, y da trabajo concreto compatible con el futuro para hacer en 6.x hoy.</description><pubDate>Fri, 20 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;Una nota previa: al momento de escribir (abril de 2026), WordPress 7.0 esta en la hoja de ruta publica pero no se ha lanzado. Las listas especificas de funciones, los cambios de esquema y los cronogramas de migración que circulan en linea, incluyendo en publicaciones que se presentan como &quot;guia completa&quot;, son en parte pronostico, en parte lista de deseos. Trata cualquier afirmacion definitiva sobre 7.0 como especulación hasta que aterrice en un release candidate publicado en el blog oficial de Make WordPress y etiquetado en el core trac.&lt;/p&gt;
&lt;p&gt;Lo que sabemos por publicaciones publicas de Make WordPress: el trabajo de la Fase 3 sobre edicion colaborativa esta en curso, una integración mas profunda entre el Block Editor y los proveedores de IA se discute en reuniones del core, y el modelo de templating del Site Editor se esta refinando. Lo que aun no sabemos: que funciones de IA (si hay alguna) llegaran al core frente a quedarse como plugins, el minimo final de PHP, o la fecha exacta de lanzamiento.&lt;/p&gt;
&lt;p&gt;Si planificas trabajo que se solapara con el ciclo de 7.0, el movimiento honesto es seguir &lt;a href=&quot;https://make.wordpress.org/core/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;make.wordpress.org/core&lt;/a&gt; y los tickets de core trac directamente, en vez de confiar en predicciones de terceros. La comunidad WordPress española, incluidos los organizadores de WordCamp España, sigue los mismos canales. Esta publicación es una de esas predicciones de terceros; leela con esa consciencia.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;que-se-sabe-realmente-sobre-70-ahora-mismo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-se-sabe-realmente-sobre-70-ahora-mismo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que se sabe realmente sobre 7.0 ahora mismo&lt;/h2&gt;
&lt;p&gt;Quitando el envoltorio de marketing, el panorama es mas estrecho de lo que sugieren la mayoria de las publicaciones “guia completa”.&lt;/p&gt;
&lt;p&gt;Confirmado en discusion publica de Make WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La Fase 3 de la hoja de ruta de Gutenberg es el tema de trabajo, con la colaboración y el flujo de trabajo editorial como las dos areas que han visto mas propuestas publicas y PRs.&lt;/li&gt;
&lt;li&gt;La integración de IA se esta prototipando en el plugin Gutenberg y se discute en reuniones del core, pero la frontera entre “se entrega en el core” y “queda como plugin” no esta resuelta.&lt;/li&gt;
&lt;li&gt;El Site Editor y el sistema de patterns continuan iterandose, con refinamientos de la edicion de plantillas y el bloqueo de bloques aterrizando primero en releases puntuales 6.x.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No confirmado, pese a afirmaciones frecuentes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una fecha especifica de lanzamiento para 7.0. Los calendarios de release se desplazan; trata cualquier fecha unica como un objetivo, no un compromiso.&lt;/li&gt;
&lt;li&gt;Una lista definitiva de funciones de IA en el core. Existen varias propuestas, incluidas abilities independientes del proveedor y una UI de connectors, pero las propuestas no son releases.&lt;/li&gt;
&lt;li&gt;El aumento del minimo de PHP y las deprecations exactas. Estas decisiones se toman tarde en el ciclo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para agencias y equipos de producto que entregan en 2026, la conclusion practica es mas simple que cualquier lista de funciones: construir sobre WordPress 6.x usando patrones compatibles con el futuro (block themes, &lt;code&gt;theme.json&lt;/code&gt;, REST API, Action Scheduler para trabajo en segundo plano) para que, sea lo que sea que 7.0 acabe entregando, la migración sea incremental en lugar de una reescritura.&lt;/p&gt;
&lt;h2 id=&quot;ia-en-wordpress-hoy-y-hacia-donde-podria-ir-70&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ia-en-wordpress-hoy-y-hacia-donde-podria-ir-70&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IA en WordPress hoy, y hacia donde podria ir 7.0&lt;/h2&gt;
&lt;p&gt;La versión honesta de “funciones de IA en WordPress 7.0” comienza con lo que ya funciona en 6.x, porque eso es lo que ejecutan sitios reales.&lt;/p&gt;
&lt;p&gt;Disponible hoy, en WordPress de producción:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yoast y Rank Math (incluyendo versiones en español) ambos incluyen asistentes de escritura asistidos por IA (titulos, meta descripciones, sugerencias de enlaces internos) construidos sobre APIs de modelos de terceros.&lt;/li&gt;
&lt;li&gt;Jetpack AI Assistant ofrece generación en el editor, resumen y traducción. La calidad varia segun el idioma y el prompt; la calidad en español es aceptable para borradores pero exige revisión editorial.&lt;/li&gt;
&lt;li&gt;Plugins independientes de generación de contenido existen en un amplio rango de calidad; utiles para borradores, peligrosos cuando se conectan directamente a la publicación sin revisión humana.&lt;/li&gt;
&lt;li&gt;Automattic y los equipos de contribuidores ejecutan experimentos de Fase 3, incluyendo edicion colaborativa y llamadas de IA del lado del editor, en el plugin Gutenberg antes de cualquier merge al core.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una arquitectura pragmatica para añadir IA a un sitio WordPress hoy, que probablemente sobrevivira a lo que sea que 7.0 entregue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Expone un pequeño endpoint REST API por proveedor (OpenAI, Anthropic, Google, o un modelo auto-alojado). Manten el codigo especifico del proveedor detras de una interfaz para que cambiar de modelo sea un cambio de configuracion, no una reescritura.&lt;/li&gt;
&lt;li&gt;Ejecuta cualquier cosa que tarde mas de unos segundos a traves de Action Scheduler, no una solicitud sincrona. Este es el mismo patron que usa WooCommerce; escala.&lt;/li&gt;
&lt;li&gt;Almacena las claves de API como constantes de &lt;code&gt;wp-config.php&lt;/code&gt; o via un almacen de secretos gestionado cargado en el arranque. Nunca pongas claves vivas en opciones de plugins ni en archivos &lt;code&gt;.env&lt;/code&gt; commiteados a un repositorio.&lt;/li&gt;
&lt;li&gt;Cachea las respuestas con clave en un hash del prompt mas la versión del modelo. Las llamadas de IA son caras y se repiten con frecuencia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Modos de fallo que vale la pena diseñar contra desde el primer dia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fuga de claves de API mediante auto-actualizaciones de plugins o backups que incluyen volcados de &lt;code&gt;wp-content&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Fallos de rate-limit durante picos de trafico, que silenciosamente degradan la experiencia del editor si no hay fallback.&lt;/li&gt;
&lt;li&gt;Hechos, citas o especificaciones de producto alucinados publicados sin un paso de revisión humana. El coste de una pagina mala en busqueda es mayor que el coste de cualquier flujo de revisión.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si 7.0 introduce una capa de abilities o connectors en el core, se aplican las mismas fronteras: la superficie de la API cambia, los modos de fallo no. Para etica y enmarque editorial, ve la &lt;a href=&quot;/es/ethics-ai-content-wordpress-guide-2026-en/&quot;&gt;guia de etica de contenido de IA para editores&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;como-prepararse-sin-adivinar-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-prepararse-sin-adivinar-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como prepararse sin adivinar la migración&lt;/h2&gt;
&lt;p&gt;Escribir una guia paso a paso “como migrar a 7.0” antes de que 7.0 se haya lanzado es deshonesto. Los comandos especificos de la versión, la rutina de actualización de la base de datos, los nuevos ajustes de admin: nada de eso es final. Cualquiera que publique pasos exactos de migración hoy esta rellenando huecos con suposiciones.&lt;/p&gt;
&lt;p&gt;Lo que puedes hacer ahora es reducir el coste futuro de migración independientemente de como sea 7.0. El trabajo es ingrato y se paga en cada release, no solo en este.&lt;/p&gt;
&lt;p&gt;Audita las partes del stack mas propensas a romperse en una actualizacion mayor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Temas que aun usan template tags en &lt;code&gt;functions.php&lt;/code&gt; en vez de block themes. Convierte a block themes o planifica el trabajo.&lt;/li&gt;
&lt;li&gt;Bloques Gutenberg personalizados construidos contra versiones tempranas de &lt;code&gt;@wordpress/scripts&lt;/code&gt;. Fija y prueba contra la ultima estable.&lt;/li&gt;
&lt;li&gt;Page builders con su propia capa de renderizado. Estas son la causa mas comun de deuda “no podemos actualizar”.&lt;/li&gt;
&lt;li&gt;Endpoints REST personalizados sin versionado. Añade namespacing &lt;code&gt;/v1/&lt;/code&gt; ahora para que un futuro incremento no sea disruptivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Configura la infraestructura aburrida que te permite actualizar rapido cuando 7.0 se lance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un entorno de staging que refleje la versión de PHP, conjunto de plugins y volumen de contenido de producción. La paridad de base de datos importa mas de lo que la gente espera.&lt;/li&gt;
&lt;li&gt;Backups automatizados con un camino de restauración probado. Un backup no probado es teatro.&lt;/li&gt;
&lt;li&gt;Actualizaciones de plugins y temas corriendo a un ritmo regular, no aplazadas hasta el siguiente release mayor. Los sitios atascados en 6.0 estan atascados porque nadie actualizo 6.1 a 6.8.&lt;/li&gt;
&lt;li&gt;Una lista corta de autores de plugins en los que confias, con contactos de email. Cuando 7.0 se lance, querras saber dentro de una semana cuales de tus plugins estan probados contra el.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando 7.0 alcance efectivamente RC en el calendario oficial de releases, la ruta de actualizacion es la misma que ha funcionado para cada release mayor de WordPress: ejecuta primero en staging, observa el log de errores, espera dos a cuatro semanas tras la disponibilidad general antes de tocar producción para sitios de clientes, y lee la publicación oficial de field guide en Make WordPress antes de asumir que cualquier guia de terceros (esta incluida) refleja lo que realmente se entrego.&lt;/p&gt;
&lt;h2 id=&quot;que-hacer-hasta-que-70-se-lance-realmente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hacer-hasta-que-70-se-lance-realmente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hacer hasta que 7.0 se lance realmente&lt;/h2&gt;
&lt;p&gt;Hasta que WordPress 7.0 alcance una release tagged en wordpress.org, lo mas util que cualquier equipo puede hacer es ignorar las publicaciones de prediccion (esta incluida) y seguir las fuentes primarias: el blog Make WordPress core, las notas de release de Gutenberg y el milestone de trac para 7.0.&lt;/p&gt;
&lt;p&gt;Para un proyecto existente que entrega en 2026, construye sobre una release actual 6.x usando block themes, &lt;code&gt;theme.json&lt;/code&gt; y la REST API. Trata la IA como una capa de integración detras de tus propios endpoints, no como una funcion por la que esperas que el core la provea. Cuando 7.0 aterrice, la migración se convierte en una pregunta de cuales de tus integraciones personalizadas pueden sustituirse por una API del core, no en una reescritura.&lt;/p&gt;
&lt;p&gt;Si quieres ayuda para auditar un stack para preparación de actualizacion, nuestro &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;equipo de desarrollo WordPress&lt;/a&gt; hace ese trabajo para sitios en producción en cada ciclo de release.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">wordpress-7-0</category><category domain="tag">ai</category><category domain="tag">abilities-api</category><category domain="tag">wordpress-7-features</category><category domain="tag">real-time-collaboration</category><category domain="tag">gutenberg-phase-3</category><category domain="tag">2026</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-coding.jpg" type="image/jpeg"/></item><item><title>Que mostrar en un sitio web B2B y que dejar para ventas</title><link>https://wppoland.com/es/what-to-show-on-b2b-website-what-to-leave-for-sales/</link><guid isPermaLink="true">https://wppoland.com/es/what-to-show-on-b2b-website-what-to-leave-for-sales/</guid><description>El dilema B2B: demasiada información en el sitio alimenta a los competidores; muy poca alarga las conversaciones de ventas y reduce su calidad. Una division práctica en información sistemica (mostrar) y situacional (dejar para ventas), más 3 preguntas que deciden que va en tu arquitectura de información.</description><pubDate>Mon, 16 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-el-dilema-de-demasiado-vs-muy-poco&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-el-dilema-de-demasiado-vs-muy-poco&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: El dilema de “demasiado” vs “muy poco”&lt;/h2&gt;
&lt;p&gt;Uno de los dilemás B2B más comunes es &lt;strong&gt;que mostrar en el sitio web y que ocultar de los competidores&lt;/strong&gt;. Por un lado esta el miedo: “si mostramos demasiado, los competidores lo usaran.” Por otro, la falta de información concreta en el sitio alarga las conversaciones de ventas, multiplica las preguntas repetidas y reduce la calidad del primer contacto. El clientes no sabe si eres compatible con su problema, así que la reunion comienza con explicaciones básicas en lugar de “como implementamos esto para nosotros?”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Efectos de “muy poco”:&lt;/strong&gt; Un sitio lleno de afirmaciones genericas (“somos tu socio”, “entregamos soluciones”) atrae tanto leads bien encajados como mal encajados. Cada primera conversacion requiere explicar las mismás cosas otra vez: que haces, como trabajas, que impulsa el precio. El ciclo de ventas se estira y el equipo pierde tiempo en la calificación inicial que el sitio podria hacer parcialmente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Efectos de “demasiado” (los reales):&lt;/strong&gt; Publicar cotizaciones individuales, procedimientos internos, plantillas de contratos o métodologías detalladas puede dar a los competidores una receta lista. Asi que la clave no es “cuanta” información sino &lt;strong&gt;que tipo&lt;/strong&gt; de información: universal vs dependiente del contexto.&lt;/p&gt;
&lt;p&gt;En la práctica, el objetivo no es ocultar todo ni mostrar todo. Es una &lt;strong&gt;division deliberada del contenido&lt;/strong&gt;: lo que es universal y repetible (y deberia estar en el sitio) vs lo que necesita contexto individual (y se queda con ventas). En las conversaciones con clientes distingo dos tipos de información: &lt;strong&gt;sistemica&lt;/strong&gt; y &lt;strong&gt;situacional&lt;/strong&gt;. Esta division permite disenar la arquitectura de información para que el sitio atraiga los leads correctos y acorte el ciclo de ventas sin revelar know-how estrategico.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;información-sistemica-que-es-y-por-que-mostrarla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#información-sistemica-que-es-y-por-que-mostrarla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Información sistemica: que es y por que mostrarla&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;La información sistemica&lt;/strong&gt; es &lt;strong&gt;universal y repetible&lt;/strong&gt;. No requiere un diagnóstico individual; aparece de forma muy similar en casí todas las conversaciones de ventas. Estos son los mejores candidatos para el contenido del sitio web.&lt;/p&gt;
&lt;h3 id=&quot;que-cuenta-como-información-sistemica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-cuenta-como-información-sistemica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que cuenta como información sistemica?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contexto del problema que resuelves&lt;/strong&gt; — por ejemplo, “para quien es este servicio”, “en que situación empresarial tiene sentido”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escenarios donde la cooperación tiene sentido (y cuando no)&lt;/strong&gt; — por ejemplo, “trabajamos contigo cuando necesitas X; no aceptamos Y”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enfoque para resolver el problema&lt;/strong&gt; — como piensas sobre el proyecto, que principios usas (por ejemplo, iteraciones, prototipos, talleres).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proceso general de implementación&lt;/strong&gt; — fases tipicas, sin precios ni cronogramás específicos del clientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Riesgos tipicos y suposiciones erroneas&lt;/strong&gt; — por ejemplo, “los clientes a menudo asumen que…; en la práctica lo que importa es…”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Factores que afectan el costo&lt;/strong&gt; — no rangos de precios, sino &lt;strong&gt;que&lt;/strong&gt; impulsa el precio (alcance, complejidad, integraciones, plazos). Eso ayuda al clientes a entender que impulsa la cotizacion y preparar un mejor brief.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;por-que-ponerla-en-el-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-ponerla-en-el-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que ponerla en el sitio?&lt;/h3&gt;
&lt;p&gt;Mostrar esto en el sitio ayuda al clientes a &lt;strong&gt;autoevaluar la compatibilidad&lt;/strong&gt;. Acorta la primera conversacion, porque ventas ya no comienza con “que hacen exactamente?” sino con “como implementamos esto para nosotros?”. Al mismo tiempo, no revelas know-how central: no hay cotizaciones individuales, procedimientos internos ni matices específicos del proyecto. Si una pieza de información es &lt;strong&gt;la misma para la mayoria de los clientes&lt;/strong&gt; y puede ayudarles a entender tu solución, vale la pena colocarla en la arquitectura de información del sitio.&lt;/p&gt;
&lt;h3 id=&quot;ejemplo-de-uso-de-información-sistemica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-de-uso-de-información-sistemica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo de uso de información sistemica&lt;/h3&gt;
&lt;p&gt;Una empresa de implementación de ERP puede poner en el sitio: “Trabajamos con empresas de 50 a 500 empleados que ya tienen un departamento de TI y quieren unificar procesos en varias ubicaciones. No aceptamos proyectos sin un responsable de proyecto designado por parte del clientes.” Eso no revela precios ni detalles de implementación, pero una empresa de 5 personas sin TI ve inmediatamente que probablemente no estan en el segmento. Una empresa que cumple los criterios sabe que vale la pena ponerse en contacto. Ese es el efecto de la información sistemica: autocualificacion sin revelar know-how.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;información-situacional-el-espacio-para-ventas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#información-situacional-el-espacio-para-ventas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Información situacional: el espacio para ventas&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;La información situacional&lt;/strong&gt; es todo lo que &lt;strong&gt;requiere contexto e interpretacion&lt;/strong&gt;. No puede capturarse sensatamente en un texto universal del sitio, porque depende del clientes específico, la industria, la estructura organizaciónal o la madurez de los procesos.&lt;/p&gt;
&lt;h3 id=&quot;que-cuenta-como-información-situacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-cuenta-como-información-situacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que cuenta como información situacional?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Diagnostico empresarial individual&lt;/strong&gt; — cual es exactamente el problema para este clientes, cuales son las restricciones y prioridades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recomendacion de una solución específica&lt;/strong&gt; — por ejemplo, “en tu caso recomendamos la opción A, no la B” — despues de analizar las necesidades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminos comerciales&lt;/strong&gt; — tarifas, rangos, modelo de pago, condiciones del contrato. Estos siempre estan sujetos a negociacion y dependen del proyecto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Know-how operativo&lt;/strong&gt; — por ejemplo, listas de verificación internas, plantillas, formás de gestionar el riesgo del proyecto. Esa es tu ventaja operativa; no tienes que publicarla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matices de la industria, estructura o madurez organizaciónal&lt;/strong&gt; — por ejemplo, “en la industria X normalmente…”, “con tu tipo de equipo interno sugerimos…”. Eso no se puede generalizar en un artículo; es contenido de la conversacion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entregar esto es &lt;strong&gt;el espacio del equipo de ventas&lt;/strong&gt;. El trabajo del sitio es atraer los clientes correctos y preparar el escenario; los detalles de la solución, los precios y los terminos pertenecen a la reunion o al taller.&lt;/p&gt;
&lt;h3 id=&quot;por-que-no-mover-la-información-situacional-al-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-no-mover-la-información-situacional-al-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que no mover la información situacional al sitio?&lt;/h3&gt;
&lt;p&gt;Primero, &lt;strong&gt;no se puede generalizar&lt;/strong&gt; sin perder significado. Una linea como “el precio depende de tu presupuesto y cronograma” no aporta nada; una cotizacion real necesita un brief y una conversacion. Segundo, &lt;strong&gt;ahi es donde construyes relación y valor&lt;/strong&gt;: diagnóstico, recomendación, oferta personalizada es cuando el clientes ve que entiendes su situación. Mover todo eso al sitio debilita el rol de ventas y no ayuda ni a la empresa ni al clientes. Tercero, &lt;strong&gt;parte de la información situacional es tu ventaja&lt;/strong&gt;: por ejemplo, como gestionas el riesgo del proyecto o los estándares de calidad internos. Publicarla no es necesario ni deseable.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tres-preguntas-de-decision-esta-información-deberia-estar-en-el-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tres-preguntas-de-decision-esta-información-deberia-estar-en-el-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tres preguntas de decision: esta información deberia estar en el sitio?&lt;/h2&gt;
&lt;p&gt;Cuando necesitas decidir si &lt;strong&gt;una pieza específica de información&lt;/strong&gt; deberia aparecer en el sitio web, tres preguntas simples ayudan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Es esta información la misma para la mayoria de los clientes?&lt;/strong&gt;
Si es así — por ejemplo, “los proyectos tipicamente toman de X a Y semanas dependiendo del alcance” o “trabajamos con empresas que ya tienen un departamento de TI” — es candidata para contenido público. Si depende del caso (“depende de tu infraestructura, presupuesto, plazos”), es mejor dejarla para la conversacion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Con que frecuencia surge en las conversaciones de ventas?&lt;/strong&gt;
Si casí siempre — por ejemplo, “que hacen?”, “como es el proceso?”, “que impulsa el precio?” — es una señal de que falta en el sitio. Poner la respuesta en la arquitectura de información alivia a ventas y mejora la calidad del primer contacto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Afecta como el clientes entiende el producto o servicio?&lt;/strong&gt;
Si es así — por ejemplo, cuando la cooperación tiene sentido y cuando no, o cuales son las trampas tipicas — es contenido valioso para el sitio. Ayuda a la autocualificacion: el clientes sabe si vale la pena contactarte.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Regla general:&lt;/strong&gt; si las respuestas a estas tres preguntas son si &lt;strong&gt;y&lt;/strong&gt; no estas revelando know-how estrategico (por ejemplo, cotizaciones detalladas, procedimientos internos, patentes), &lt;strong&gt;recomiendo poner esa información en el sitio&lt;/strong&gt;. La comunicación disenada de esta manera reduce las preguntas repetidas. Marketing puede estar menos contento con el número de envios de formulario “para todo”, pero la calidad de la conversacion y la conversión deberian compensar.&lt;/p&gt;
&lt;h3 id=&quot;cuando-mantener-la-información-fuera-del-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-mantener-la-información-fuera-del-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando mantener la información fuera del sitio?&lt;/h3&gt;
&lt;p&gt;Si la información &lt;strong&gt;varia según el clientes&lt;/strong&gt; (por ejemplo, “para ti sugeriríamos una variante diferente”), &lt;strong&gt;rara vez surge en el primer contacto&lt;/strong&gt;, o &lt;strong&gt;revela métodología o datos&lt;/strong&gt; que son tu ventaja, mejor no publicarla. Cuando tengas dudas, haz una prueba rápida: si un competidor copiara este contenido en su sitio, perderias algo importante? Si es asi, es situacional y deberia quedarse en la conversacion.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;práctica-como-implementar-esta-division-en-el-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#práctica-como-implementar-esta-division-en-el-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Práctica: como implementar esta division en el sitio&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-auditoria-de-contenido-y-conversaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-auditoria-de-contenido-y-conversaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Auditoria de contenido y conversaciones&lt;/h3&gt;
&lt;p&gt;Revisa el sitio actual y la lista de preguntas que surgen más frecuentemente en el primer contacto (email, telefono, formulario). Listalas en dos columnas: &lt;strong&gt;“respuesta universal”&lt;/strong&gt; vs &lt;strong&gt;“respuesta dependiente del clientes”&lt;/strong&gt;. Las primeras son candidatas para contenido sistemico; las segundas se quedan en el dominio de ventas.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-completa-la-información-sistemica-faltante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-completa-la-información-sistemica-faltante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Completa la información sistemica faltante&lt;/h3&gt;
&lt;p&gt;Para cada tema recurrente que actualmente respondes en la conversacion, considera agregar una sección o página: “Para quien es?”, “Como trabajamos”, “Riesgos tipicos”, “Que impulsa el costo?”. No necesitas ensayos largos: a menudo una lista con puntos o un parrafo corto es suficiente. Lo importante es que despues de leer, el clientes sepa más que antes de visitar el sitio.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-no-reveles-rangos-de-precios-ni-know-how&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-no-reveles-rangos-de-precios-ni-know-how&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: No reveles rangos de precios ni know-how&lt;/h3&gt;
&lt;p&gt;Puedes escribir “el costo esta influenciado por el alcance, el número de integraciones, el plazo de entrega y el nivel de soporte post-implementación” — sin dar cifras específicas. Puedes describir “fases tipicas del proyecto” — sin listas de verificación ni plantillas internas. La linea es: lo que ayuda a entender la oferta y el proceso va en el sitio; lo que es tu ventaja operativa o comercial se queda en el equipo.&lt;/p&gt;
&lt;h3 id=&quot;paso-4-prepara-a-ventas-para-la-nueva-calidad-de-leads&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-prepara-a-ventas-para-la-nueva-calidad-de-leads&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Prepara a ventas para la nueva calidad de leads&lt;/h3&gt;
&lt;p&gt;Cuando más información sistemica aparece en el sitio, algunos leads “se caen” antes: concluiran que no eres compatible. Eso es bueno: menos consultas pero &lt;strong&gt;mejor calidad&lt;/strong&gt; de conversaciones. Vale la pena alinearse con el equipo de ventas de antemano y ajustar los KPIs (por ejemplo, menos leads pero mayor conversión o ciclo más corto).&lt;/p&gt;
&lt;h3 id=&quot;paso-5-revision-regular&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-revision-regular&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Revision regular&lt;/h3&gt;
&lt;p&gt;Cada trimestre o despues de un cambio importante en la oferta, revisa: las preguntas que surgen en el primer contacto siguen siendo las mismas? Han aparecido nuevas dudas que podrian abordarse con contenido sistemico? El sitio no tiene que ser “para siempre”: la arquitectura de información deberia evolucionar con el mercado y la experiencia del equipo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;ejemplos-que-en-el-sitio-que-en-la-conversacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplos-que-en-el-sitio-que-en-la-conversacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplos: que en el sitio, que en la conversacion&lt;/h2&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tema&lt;/th&gt;&lt;th&gt;En el sitio (sistemico)&lt;/th&gt;&lt;th&gt;En la conversacion (situacional)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Proceso&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Fases generales (por ejemplo, brief, taller, prototipo, implementación, soporte).&lt;/td&gt;&lt;td&gt;Cronograma concreto, hitos, roles del lado del clientes.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Costo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Factores que afectan el precio (alcance, complejidad, integraciones).&lt;/td&gt;&lt;td&gt;Rangos, cotizacion, modelo de pago, condiciones de pago.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Compatibilidad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Para quien tiene sentido la cooperación; cuando no aceptas un proyecto.&lt;/td&gt;&lt;td&gt;Si este clientes y proyecto específicos encajan — despues de revisar el brief.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Riesgos&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Suposiciones erroneas tipicas y como evitarlas.&lt;/td&gt;&lt;td&gt;Riesgos específicos del proyecto despues del diagnóstico.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La tabla no cierra el tema pero muestra la dirección: &lt;strong&gt;universal, repetible, educativo&lt;/strong&gt; -&gt; sitio; &lt;strong&gt;contextual, individual, comercial&lt;/strong&gt; -&gt; ventas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;errores-comunes-que-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-que-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes: que evitar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sitio como tarjeta de visita sin sustancia&lt;/strong&gt; — solo eslogan (“somos tu socio”, “entregamos valor”) sin respuestas a “para quien?”, “como?” y “que impulsa el precio?”. Resultado: cada conversacion empieza de cero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicar rangos de precios “para filtrar”&lt;/strong&gt; — los rangos a menudo atraen a personas que no comprarian de todos modos (buscando la opción más barata) y ahuyentan a clientes bien encajados que los interpretan sin contexto. Mejor: describe &lt;strong&gt;factores&lt;/strong&gt; que afectan el costo e invita a una conversacion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Poner todo en el sitio, incluyendo procedimientos internos&lt;/strong&gt; — por ejemplo, plantillas de contratos, listas de verificación de implementación, SLAs internos. Ese es tu know-how operativo; los competidores pueden copiarlo y el clientes aun necesita una versión adaptada a ellos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin alineacion con el equipo de ventas&lt;/strong&gt; — si el sitio promete “primera conversacion en 24 horas” pero ventas tiene un estándar diferente, o el sitio describe un proceso de 4 pasos y ventas habla de 6, el clientes pierde confianza. El contenido sistemico en el sitio y el mensaje de ventas deben ser consistentes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Conoce más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;El modelo “información sistemica vs situacional” funciona mejor para servicios B2B con un ciclo de ventas largo y una primera conversacion de alto valor: consultoria, implementaciónes, desarrollo de software, agencias. Cuanto más depende la oferta del contexto del clientes, más importante es una division clara: el sitio califica y educa, ventas diagnostica y recomienda.&lt;/p&gt;
&lt;p&gt;El dilema “que ocultar de los competidores y que mostrar para diferenciarse?” se puede estructurar. &lt;strong&gt;La información sistemica&lt;/strong&gt; — contexto del problema, escenarios de cooperación, enfoque, proceso, riesgos, factores de costo — vale la pena mostrarla en el sitio. Ayuda al clientes a evaluar la compatibilidad y acorta la primera conversacion sin revelar know-how central. &lt;strong&gt;La información situacional&lt;/strong&gt; — diagnóstico, recomendación para el caso específico, terminos comerciales, know-how operativo — es el espacio de ventas.&lt;/p&gt;
&lt;p&gt;Las tres preguntas — &lt;em&gt;es esta información la misma para la mayoria de los clientes? Con que frecuencia surge en la conversacion? Afecta como se entiende la oferta?&lt;/em&gt; — ayudan a decidir que va en la arquitectura de información. Un sitio disenado de esta manera puede generar menos consultas “a ciegas” pero conversaciones de mejor calidad y un movimiento más rápido hacia “como implementamos esto para nosotros?”.&lt;/p&gt;
&lt;p&gt;Descubre nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y GEO&lt;/a&gt; para llevar tu proyecto al siguiente nivel.&lt;/p&gt;</content:encoded><category>marketing</category><category>business</category><category domain="tag">b2b</category><category domain="tag">sales</category><category domain="tag">website</category><category domain="tag">commúnication</category><enclosure url="https://wppoland.com/images/og/software-engineering-workshop-group.jpg" type="image/jpeg"/></item><item><title>El fin del clic: 7 verdades sorprendentes sobre como la IA esta reescribiendo la web</title><link>https://wppoland.com/es/fin-del-clic-ia-reescribiendo-web/</link><guid isPermaLink="true">https://wppoland.com/es/fin-del-clic-ia-reescribiendo-web/</guid><description>Para 2026, la búsqueda con IA ha reemplazado al enlace azul. Descubre 7 verdades respaldadas por datos sobre búsqueda zero-click, optimización GEO y como convertirte en la respuesta que citan los motores de IA.</description><pubDate>Sun, 15 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Para 2026, la búsqueda con IA ha reemplazado al enlace azul como la puerta principal a la información. Gartner proyecto una caida del 25% en el volumen de búsqueda tradicional, y con el tráfico referido por IA creciendo un 527% interanual, estas 7 verdades definen la supervivencia en la era zero-click. Comprender estos principios es esencial para cualquier negocio que dependa de la visibilidad organica, porque las reglas del descubrimiento han sido reescritas desde cero.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;la-transicion-de-seo-a-geo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-transicion-de-seo-a-geo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La transicion de SEO a GEO&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-01.avif&quot; alt=&quot;Búsqueda con IA reemplazando los enlaces azules tradicionales&quot;&gt;&lt;/p&gt;
&lt;p&gt;El panorama digital ha experimentado un cambio tectonico. Durante decadas, el enlace azul fue la moneda principal de internet, pero esa era termino. Hemos pasado del motor de búsqueda a la era del motor de respuestas. La proyeccion de Gartner de una caida del 25% en el volumen de búsqueda tradicional para 2026 se ha materializado en gran medida, y la evidencia esta en todas partes: los usuarios ya no navegan entre diez enlaces azules en una página de resultados. Mantienen conversaciones de alto contexto con sistemas de IA que sintetizan información y entregan respuestas directamente.&lt;/p&gt;
&lt;p&gt;Esta es la transicion de Search Engine Optimization (SEO) a &lt;strong&gt;Generative Engine Optimization (GEO)&lt;/strong&gt;. En este nuevo paradigma, la visibilidad no se trata de ocupar el puesto número uno en una lista. Se trata de convertirse en la respuesta sintetizada. Las implicaciones son profundas para cada negocio que ha invertido en marketing de búsqueda tradicional.&lt;/p&gt;
&lt;p&gt;Con el tráfico referido por IA creciendo un asombroso 527% interanual, las siete conclusiones que siguen representan las nuevas leyes de supervivencia en un mundo AI-first y zero-click. Cada una esta respaldada por datos, y juntas forman un manual completo para adaptar tu estrategia digital a las realidades de 2026.&lt;/p&gt;
&lt;p&gt;La diferencia crítica entre SEO y GEO radica en lo que cada sistema recompensa. SEO recompensa las páginas que atraen clics humanos a través de títulos y meta descripciones atractivos. GEO recompensa las páginas en las que los sistemas de IA confian lo suficiente como para citarlas como fuentes autoritativas. Estos son objetivos de optimización fundamentalmente diferentes, y tratarlos como iguales dejara tu contenido varado entre dos paradigmas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-regla-tldr-las-citas-se-ganan-en-las-primeras-200-palabras&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-regla-tldr-las-citas-se-ganan-en-las-primeras-200-palabras&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La regla “TLDR”: las citas se ganan en las primeras 200 palabras&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-02.avif&quot; alt=&quot;Estructura de contenido para optimización de citas de IA&quot;&gt;&lt;/p&gt;
&lt;p&gt;Los dias de enterrar lo esencial para inflar metricas de tiempo en página han terminado oficialmente. Los sistemas modernos de recuperacion de IA utilizan Retrieval-Augmented Generation (RAG), un proceso construido para la eficiencia extrema. Estos sistemas no leen tu artículo completo de principio a fin. Extraen pasajes específicos para alimentar el contexto del modelo, y el proceso de extraccion favorece fuertemente al contenido que aparece al inicio del documento.&lt;/p&gt;
&lt;p&gt;Los datos muestran que &lt;strong&gt;el 44,2% de todas las citas verificadas de LLM provienen del primer 30% de una página&lt;/strong&gt;. Esta estadística por si sola deberia remodelar la forma en que cada equipo de contenido aborda la estructura de los artículos. Si la respuesta directa no esta en tus parrafos iniciales, tu contenido efectivamente no existe para la maquina.&lt;/p&gt;
&lt;p&gt;Para ganar la cita, debes adoptar una arquitectura de “respuesta primero”: comienza con un resumen conciso de menos de 300 palabras que responda directamente a la consulta principal, luego sigue con matices ricos en datos y evidencia de respaldo. Piensa en ello como escribir un resumen ejecutivo que una maquina pueda extraer de forma aislada y aun así entregar una respuesta completa y precisa al usuario.&lt;/p&gt;
&lt;p&gt;Esto no significa que tu contenido deba ser superficial. Todo lo contrario. La profundidad debe estar presente, pero la arquitectura debe invertirse. Coloca tus hechos, estadísticas y declaraciones más citables en la sección de apertura. Luego usa el contenido restante para proporcionar el contexto, la evidencia y los matices que construyen autoridad.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Responde la pregunta primero, luego explica los matices. Asi es como debes abordar la escritura para búsqueda con IA en general: claridad primero, profundidad despues.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La implicacion práctica es que cada pieza de contenido necesita lo que podria llamarse un “encabezado de citacion”: una sección de apertura densa y rica en hechos disenada específicamente para la extraccion RAG. Esta sección debe contener tu palabra clave principal de forma natural, una respuesta directa a la consulta objetivo y al menos dos puntos de datos de respaldo. Todo lo que sigue se construye sobre esta base.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-el-impacto-del-83-el-puesto-número-uno-ya-no-garantiza-visibilidad-en-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-impacto-del-83-el-puesto-número-uno-ya-no-garantiza-visibilidad-en-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El impacto del 83%: el puesto número uno ya no garantiza visibilidad en IA&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-03.avif&quot; alt=&quot;Desacoplamiento de rankings de Google y citas de IA&quot;&gt;&lt;/p&gt;
&lt;p&gt;Uno de los descubrimientos más disruptivos para los lideres empresariales es que los rankings tradicionales de Google se han desacoplado de las citas de IA. La superposicion entre los enlaces mejor posicionados en Google y las fuentes citadas por motores de IA ha caido por debajo del 20%. Esto significa que cuatro de cada cinco citas de IA provienen de fuentes que no aparecerian en una página de resultados tradicional del top diez.&lt;/p&gt;
&lt;p&gt;Aun más impactante, la investigación de Digital Applied indica que &lt;strong&gt;el 83% de las citas de AI Overview provienen de páginas que se posicionan fuera del top 10 organico&lt;/strong&gt;. Esta estadística demolece la suposicion de que un buen SEO se traduce automáticamente en visibilidad en IA. Los dos sistemas evaluan el contenido a través de lentes fundamentalmente diferentes.&lt;/p&gt;
&lt;p&gt;Los modelos de IA priorizan hechos extraibles por maquinas y claridad estructural sobre las señales basadas en backlinks del SEO clásico. Donde el algoritmo de Google sopesa la autoridad de dominio, la equidad de enlaces y las metricas de engagement del usuario, los sistemas de IA evaluan con que facilidad pueden extraer un hecho verificable, con que claridad esta estructurado el contenido y cuanta confianza pueden tener en la precision de la información.&lt;/p&gt;
&lt;p&gt;Este desacoplamiento significa que tu sitio “perfecto para SEO” podria ser invisible para los mismos modelos de IA que ahora manejan las consultas de tus clientes. También significa oportunidad: un sitio más pequeño con una estructura de contenido excepcional, declaraciones factuales claras y un marcado de entidades solido puede superar a un gigante de autoridad de dominio en citas de IA.&lt;/p&gt;
&lt;p&gt;La conclusion práctica es que los negocios necesitan estrategias de optimización paralelas. Tus esfuerzos de SEO deben continuar, pero debes superponer optimizaciones específicas de GEO: marcado de datos estructurados, declaraciones factuales claras en las primeras 200 palabras, implementación de schema a nivel de entidad y actualizaciones regulares de frescura del contenido. Ejecutar SEO sin GEO en 2026 es como optimizar para escritorio en 2015 mientras se ignora el móvil.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-la-autoridad-es-una-red-no-una-página-el-multiplicador-32x&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-la-autoridad-es-una-red-no-una-página-el-multiplicador-32x&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. La autoridad es una red, no una página (el multiplicador 3,2x)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-04.avif&quot; alt=&quot;Autoridad temática y arquitectura entity-first&quot;&gt;&lt;/p&gt;
&lt;p&gt;Los motores de IA no solo buscan una buena página. Verifican una autoridad de grafo tematico. El cambio a una arquitectura entity-first es ahora la base estructural de GEO, y los datos que lo respaldan son convincentes.&lt;/p&gt;
&lt;p&gt;El análisis de millones de citas de IA confirma que &lt;strong&gt;el 86% de las citas provienen de sitios con cinco o más páginas interconectadas sobre un tema específico&lt;/strong&gt;. Las páginas aisladas, sin importar lo bien escritas que esten, rara vez obtienen citas de IA porque el modelo generativo no puede verificar la autoridad más amplia de la fuente.&lt;/p&gt;
&lt;p&gt;Usar una arquitectura pilar-cluster proporciona un &lt;strong&gt;aumento de 3,2x en las tasas de citacion&lt;/strong&gt;. Los sistemas de IA necesitan ver una red densa de enlaces internos bidireccionales para sentirse lo suficientemente seguros como para citar tu marca como autoridad definitiva. Sin esta red de contexto, las páginas individuales permanecen huerfanas y sin confianza por parte de los modelos generativos.&lt;/p&gt;
&lt;p&gt;Como se ve esto en la práctica? Significa construir ecosistemas de contenido, no artículos independientes. Una página pilar cubre el tema amplio de forma integral, y las páginas cluster profundizan en subtemas mientras enlazan de vuelta al pilar y entre si. La estructura de enlaces internos crea una red semántica que la IA puede recorrer para verificar autoridad.&lt;/p&gt;
&lt;p&gt;Por ejemplo, un sitio que cubra “seguridad de WordPress” como pilar deberia tener páginas cluster interconectadas sobre configuración de firewall, deteccion de malware, endurecimiento de login, implementación de SSL, escaneo de vulnerabilidades de plugins y respuesta a incidentes. Cada página enlaza a las demás con texto ancla descriptivo, creando un grafo de conocimiento denso que los sistemas de IA pueden navegar y en el que pueden confiar.&lt;/p&gt;
&lt;p&gt;El enfoque entity-first va más alla. Cada concepto clave en tu sitio debe estar vinculado a su entidad correspondiente en Wikidata, y tus datos estructurados deben expresar las relaciones entre entidades de forma clara. Cuando un sistema de IA puede rastrear un grafo de entidades claro a través de tu contenido, trata tu sitio como una base de conocimiento en lugar de una coleccion de artículos desconectados.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-el-precipicio-de-frescura-de-90-dias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-el-precipicio-de-frescura-de-90-dias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. El precipicio de frescura de 90 dias&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-05.avif&quot; alt=&quot;Impacto de la frescura del contenido en citas de IA&quot;&gt;&lt;/p&gt;
&lt;p&gt;En la era de la IA, el contenido tiene una vida útil más corta que nunca. Los sistemas de IA exhiben un sesgo masivo hacia la actualidad, priorizando información al dia para evitar alucinaciones o consejos desactualizados. Los datos sobre esto son contundentes y exigen atención de cada estratega de contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El contenido actualizado en 90 dias logra tasas de citacion 2x mayores&lt;/strong&gt; comparado con material más antiguo. Esto no es una mejora marginal. Es una distincion binaria entre contenido que se cita y contenido que se ignora.&lt;/p&gt;
&lt;p&gt;Por el contrario, el contenido que no se ha tocado en más de 18 meses es ampliamente ignorado por los motores generativos, independientemente de su autoridad histórica. Una página que alguna vez gano miles de backlinks y se posiciono en el número uno durante años puede volverse invisible para los sistemas de IA simplemente porque no se ha actualizado con datos actuales y hechos verificados.&lt;/p&gt;
&lt;p&gt;El modelo estatico de “publicar y olvidar” ha sido reemplazado por un ciclo obligatorio de actualización trimestral. Si tus datos no estan frescos, la IA simplemente encontrara un competidor cuyos datos si lo estan. Esto representa un cambio fundamental en la economia del contenido: el coste de mantener el contenido es ahora tan importante como el coste de crearlo.&lt;/p&gt;
&lt;p&gt;Los pasos practicos para mantener la frescura incluyen actualizar estadísticas y puntos de datos trimestralmente, agregar nuevas secciones que aborden subtemas emergentes, actualizar las fechas de publicación y última modificacion con cambios genuinos de contenido, verificar que todos los enlaces externos sigan funcionando y apunten a recursos actuales, y revisar cualquier recomendación o buena práctica que haya podido cambiar desde la última actualización.&lt;/p&gt;
&lt;p&gt;La señal de frescura no se trata solo de cambiar una fecha. Los sistemas de IA son lo suficientemente sofisticados como para detectar actualizaciones sustantivas frente a cambios cosmeticos. Una actualización genuina agrega nueva información, actualiza estadísticas obsoletas y refleja el estado actual del tema.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-los-sistemas-de-ia-prefieren-la-capa-de-legitimidad-el-sesgo-de-earned-media&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-los-sistemas-de-ia-prefieren-la-capa-de-legitimidad-el-sesgo-de-earned-media&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Los sistemas de IA prefieren la “capa de legitimidad” (el sesgo de earned media)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-06.avif&quot; alt=&quot;Earned media y señales de autoridad de terceros&quot;&gt;&lt;/p&gt;
&lt;p&gt;Los motores de búsqueda de IA exhiben un sesgo sistematico y abrumador hacia los earned media: menciones de terceros en plataformas autoritativas, no contenido propio de la marca. Esta es la capa de legitimidad, y comprenderla es crucial para cualquier estrategia GEO.&lt;/p&gt;
&lt;p&gt;Por ejemplo, &lt;strong&gt;Wikipedia sigue siendo una fuerza dominante en el descubrimiento por IA, representando el 7,8% de todas las citas de ChatGPT&lt;/strong&gt;. Esta única plataforma genera más citas de IA que la mayoria de los sitios web corporativos completos combinados. La segunda fuente más citada, Reddit, queda detras pero aun representa una porcion masiva del contenido referenciado por IA.&lt;/p&gt;
&lt;p&gt;Para ser citado por IA en tu propio sitio, a menudo debes primero ganar menciones en otros sitios en los que la IA ya confia, como Reddit, YouTube, los principales medios de comunicación, publicaciónes de la industria y repositorios academicos. Esto crea un “foso zero-click” donde tu presencia en dominios autoritativos de terceros actua como la señal de confianza requerida para que una IA eventualmente justifique citar tu dominio principal.&lt;/p&gt;
&lt;p&gt;El mecanismo funciona asi: cuando un modelo de IA encuentra tu marca mencionada positivamente en Wikipedia, Reddit y publicaciónes de la industria, construye una puntuacion de confianza interna para tu dominio. Una vez que se cruza ese umbral de confianza, el modelo se vuelve dispuesto a citar contenido directamente de tu sitio web. Sin esa capa de validación de terceros, tu contenido de primera parte existe en un vacio de confianza.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Wikipedia lidera las citas de ChatGPT, con una participacion del 7,8%, mientras que la segunda fuente más citada, Reddit, queda muy atras… sirve como una ‘capa de legitimidad’ para las empresas.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto significa que las relaciones publicas digitales, la participacion en comunidades y el liderazgo de opinion en plataformas de terceros ya no son actividades de marca “agradables de tener”. Son requisitos estructurales para la visibilidad en IA. Cada mencion en una plataforma autoritativa aumenta la probabilidad de que los sistemas de IA confien y citen el contenido de tu dominio principal.&lt;/p&gt;
&lt;p&gt;La estrategia requiere paciencia. Construir la capa de legitimidad es una inversión a largo plazo, pero los retornos compuestos en visibilidad de IA la convierten en una de las actividades de mayor ROI en el marketing digital actual.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-el-llmstxt-apreton-de-manos-secreto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-el-llmstxt-apreton-de-manos-secreto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. El /llms.txt: “apreton de manos secreto”&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-07.avif&quot; alt=&quot;El estándar llms.txt para contenido legible por IA&quot;&gt;&lt;/p&gt;
&lt;p&gt;A medida que los sitios web evolucionan para servir tanto a humanos como a maquinas, ha surgido un nuevo estándar técnico: el archivo &lt;code&gt;/llms.txt&lt;/code&gt;. Mientras que &lt;code&gt;robots.txt&lt;/code&gt; indica a los rastreadores adonde pueden ir, &lt;code&gt;/llms.txt&lt;/code&gt; proporciona un directorio curado en formato Markdown específicamente para uso en tiempo de inferencia por LLMs. Este es un propósito fundamentalmente diferente: no controlar el acceso, sino alimentar activamente información estructurada a los sistemas de IA cuando más la necesitan.&lt;/p&gt;
&lt;p&gt;Este archivo resuelve el problema de la “ventana de contexto”. Los bots de IA a menudo tienen dificultades para analizar HTML complejo, menús de navegación, contenido renderizado por JavaScript y estructuras de página multicapa. Cuando un agente de IA visita tu sitio durante una conversacion en vivo, tiene una ventana de contexto limitada y tiempo limitado para extraer información relevante. Un resumen limpio y legible por maquinas resuelve este problema de forma elegante.&lt;/p&gt;
&lt;p&gt;Al proporcionar un archivo &lt;code&gt;/llms.txt&lt;/code&gt; estructurado, permites que los agentes de IA ingieran tu información de nivel experto instantaneamente durante una conversacion con el usuario. El archivo tipicamente incluye las areas de experiencia principal de tu sitio, afirmaciones factuales clave, categorías de contenido principales y enlaces a tus páginas más autoritativas, todo formateado en Markdown limpio que cualquier LLM puede procesar sin sobrecarga de análisis.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-08.avif&quot; alt=&quot;Implementación de llms.txt y sitemaps de IA&quot;&gt;&lt;/p&gt;
&lt;p&gt;Este apreton de manos secreto se esta volviendo tan esencial como el sitemap lo fue en la era anterior. Los sitios con vision de futuro ya estan implementando archivos complementarios: &lt;code&gt;/llms.txt&lt;/code&gt; para resumenes de contenido estructurado, &lt;code&gt;/ai-sitemap.xml&lt;/code&gt; para el descubrimiento de contenido específico de IA, y feeds JSON estructurados como &lt;code&gt;/ai-training-data.json&lt;/code&gt; que proporcionan contenido optimizado para maquinas a cualquier sistema de IA que lo solicite.&lt;/p&gt;
&lt;p&gt;La implementación es sencilla. Crea un archivo Markdown en la raiz de tu dominio que describa la experiencia de tu sitio, liste tu contenido más importante con breves resumenes y proporcione declaraciones factuales claras que los modelos de IA puedan extraer y citar. Actualizalo cada vez que publiques contenido nuevo significativo. Piensa en ello como el curriculum de tu sitio para los sistemas de IA: conciso, factual y estructurado para el consumo por maquinas.&lt;/p&gt;
&lt;p&gt;Los sitios que implementan este estándar reportan tasas de citacion de IA mediblemente más altas, particularmente para consultas donde multiples fuentes compiten por la misma respuesta. El archivo &lt;code&gt;/llms.txt&lt;/code&gt; otorga a tu contenido una ventaja estructural en el proceso de extraccion.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-intencion-sobre-precision-el-poder-del-query-fan-out&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-intencion-sobre-precision-el-poder-del-query-fan-out&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Intencion sobre precision: el poder del “query fan-out”&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-09.avif&quot; alt=&quot;Procesamiento de lenguaje natural y query fan-out&quot;&gt;&lt;/p&gt;
&lt;p&gt;La IA funciona con procesamiento de lenguaje natural (NLP), que prioriza la coincidencia de intencion sobre la densidad de palabras clave. La forma en que los usuarios buscan ha cambiado fundamentalmente, y los datos ilustran la magnitud de este cambio.&lt;/p&gt;
&lt;p&gt;Las búsquedas tradicionales escritas son fragmentos abreviados con un promedio de &lt;strong&gt;4 palabras&lt;/strong&gt;. Un usuario podria escribir “mejores pluginseguridad WordPress 2026”. Las consultas de IA son conversacionales y detalladas, con un promedio de &lt;strong&gt;23 palabras&lt;/strong&gt;. El mismo usuario le dice a una IA: “Tengo una tienda WooCommerce en hosting compartido y me preocupa la seguridad. Que plugins deberia instalar para protegerme contra los ataques más comunes sin ralentizar mi sitio?”&lt;/p&gt;
&lt;p&gt;Los usuarios ahora proporcionan contexto situacional completo en sus prompts. Describen su situación específica, restricciones, preferencias y objetivos. En respuesta, los motores de IA realizan “query fan-out”, dividiendo una pregunta compleja en multiples subconsultas para encontrar la mejor respuesta. Esa única pregunta de 23 palabras podria generar cinco o seis subconsultas internas, cada una buscando diferentes aspectos de la respuesta.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-10.avif&quot; alt=&quot;Patrones de búsqueda conversacional vs palabras clave tradicionales&quot;&gt;&lt;/p&gt;
&lt;p&gt;El contenido que suena robotico o sobrecargado de palabras clave es penalizado en este proceso. Escribir como una persona real para una persona real es ahora una optimización técnica, no solo una preferencia estilistica. Asegura que tu contenido se alinee con la intencion semántica que la IA esta tratando de satisfacer durante su proceso de fan-out.&lt;/p&gt;
&lt;p&gt;La implicacion práctica es significativa. En lugar de optimizar para frases cortas de palabras clave, debes optimizar para las situaciones y contextos que los usuarios describen en sus conversaciones con IA. Esto significa escribir contenido que aborde escenarios específicos, reconozca restricciones y proporcione recomendaciónes matizadas en lugar de consejos genericos.&lt;/p&gt;
&lt;p&gt;El contenido estructurado en torno a “Si estas en la situación X, entonces el mejor enfoque es Y porque Z” rinde mucho mejor en citaciones de IA que el contenido estructurado en torno a “El mejor enfoque es Y”. El contexto situacional le da a la IA confianza en que tu respuesta aplica a la pregunta específica del usuario que esta procesando.&lt;/p&gt;
&lt;p&gt;Esto también significa que el contenido long-tail basado en preguntas es más valioso que nunca. Las secciones de FAQ, las guías detalladas de como hacerlo y las recomendaciónes específicas por escenario dan a los sistemas de IA exactamente el contenido estructurado y consciente de la situación que necesitan para generar respuestas precisas y citadas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;convertirse-en-la-respuesta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#convertirse-en-la-respuesta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Convertirse en la respuesta&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-11.avif&quot; alt=&quot;El futuro de la visibilidad en busquedas en la era de la IA&quot;&gt;&lt;/p&gt;
&lt;p&gt;En 2026, la visibilidad ya no se trata de ser uno de diez enlaces en una página. Se trata de ser la respuesta definitiva en un panorama fragmentado de LLMs. Ya sea ChatGPT, Gemini o Perplexity, estos sistemas buscan contenido estructurado, fresco y autoritativo que puedan justificar ante sus usuarios.&lt;/p&gt;
&lt;p&gt;La transicion a GEO requiere un giro de perseguir clics a poseer la cita. Esto no es simplemente un ajuste tactico. Es una reorientacion estrategica que afecta la creación de contenido, la infraestructura técnica, las relaciones publicas digitales y la medicion del rendimiento.&lt;/p&gt;
&lt;p&gt;Las siete verdades descritas en este artículo forman un marco accionable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estructura el contenido para la extraccion&lt;/strong&gt;: Coloca tus hechos más citables en las primeras 200 palabras y construye una arquitectura de respuesta primero que los sistemas RAG puedan procesar eficientemente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desacopla tus estrategias&lt;/strong&gt;: Reconoce que SEO y GEO son objetivos de optimización paralelos pero distintos, e invierte en ambos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construye redes de autoridad temática&lt;/strong&gt;: Crea ecosistemas de contenido interconectados con cinco o más páginas por cluster tematico, conectados por enlaces internos bidireccionales y marcado de entidades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantiene un ciclo de actualización de 90 dias&lt;/strong&gt;: Trata cada pieza de contenido como un documento vivo que requiere actualizaciones trimestrales con información genuinamente nueva y datos verificados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invierte en la capa de legitimidad&lt;/strong&gt;: Construye presencia en plataformas autoritativas de terceros en las que los sistemas de IA ya confian, creando las señales de confianza necesarias para la citacion directa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementa el estándar /llms.txt&lt;/strong&gt;: Dale a los sistemas de IA un punto de entrada limpio y estructurado a tu experiencia proporcionando resumenes de contenido optimizados para maquinas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escribe para la intencion, no para palabras clave&lt;/strong&gt;: Crea contenido consciente de la situación que coincida con las consultas conversacionales y contextuales que los usuarios llevan a los sistemas de IA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/images/ai-search-12.avif&quot; alt=&quot;Midiendo el éxito en el mundo zero-click&quot;&gt;&lt;/p&gt;
&lt;p&gt;A medida que avanzamos más profundamente en esta era AI-first, los lideres empresariales deben enfrentar una nueva realidad de medicion y valor. Si un usuario nunca hace clic en tu sitio web pero obtiene la respuesta de tu marca a través de una IA, ganaste de todos modos, y como vas a medirlo?&lt;/p&gt;
&lt;p&gt;Los negocios que respondan esta pregunta primero definiran la proxima decada de estrategia digital. Estan surgiendo nuevas metricas: frecuencia de citacion en plataformas de IA, sentimiento de mencion de marca en respuestas generadas por IA, puntuaciones de confianza de entidades y tasas de propiedad de respuestas para consultas clave. Estas metricas eventualmente se volveran tan estándar como el tráfico organico y las tasas de conversión lo son hoy.&lt;/p&gt;
&lt;p&gt;El fin del clic no es el fin de la visibilidad. Es el comienzo de un nuevo tipo de influencia, uno donde ser la fuente de confianza que la IA cita es más valioso que ser el enlace en el que un usuario hace clic. Las organizaciónes que comprendan este cambio y actuen ahora seran duenas del activo más valioso en la economia digital: la respuesta misma.&lt;/p&gt;</content:encoded><category>technology</category><category>seo</category><category domain="tag">ai-search</category><category domain="tag">geo-(generative-engine-optimization)</category><category domain="tag">zero-click</category><category domain="tag">llm-optimization</category><category domain="tag">2026</category><enclosure url="https://wppoland.com/images/og/ai-search-01.jpg" type="image/jpeg"/></item><item><title>Protocolo Universal de Comercio: Como los Agentes de IA Estan Transformando las Compras Online</title><link>https://wppoland.com/es/universal-commerce-protocol-ai-agents-guide/</link><guid isPermaLink="true">https://wppoland.com/es/universal-commerce-protocol-ai-agents-guide/</guid><description>El Universal Commerce Protocol (UCP) de Google permite a los agentes de IA completar compras directamente. Aprende que significa para tu negocio y como prepararte.</description><pubDate>Fri, 13 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;El panorama de las compras online esta experimentando su transformación más significativa desde la aparicion del comercio móvil. El **Universal Commerce Protocol (UCP)** de Google esta permitiendo a los agentes de IA descubrir productos, verificar disponibilidad y completar compras directamente dentro de interfaces de IA - sin que los usuarios visiten jamás un sitio web tradicional.&lt;/p&gt;
&lt;h2 id=&quot;comprendiendo-el-universal-commerce-protocol&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprendiendo-el-universal-commerce-protocol&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprendiendo el Universal Commerce Protocol&lt;/h2&gt;
&lt;p&gt;El &lt;strong&gt;Universal Commerce Protocol (UCP)&lt;/strong&gt; es un estándar abierto desarrollado por Google que estandariza como los sistemas de IA pueden interactuar con comerciantes para descubrir productos, verificar precios y disponibilidad, y completar transacciones. Lanzado a principios de 2026, UCP representa la respuesta de Google a la creciente realidad de que los asistentes de IA se estan convirtiendo en la interfaz principal a través de la cual los usuarios buscan y compran productos.&lt;/p&gt;
&lt;p&gt;A diferencia del e-commerce tradicional donde los usuarios navegan manualmente por sitios web, añaden artículos al carrito y completan formularios de checkout, UCP habilita lo que Google llama “comercio agentico” - donde los agentes de IA actuan en nombre de los usuarios para encontrar productos que cumplan sus criterios, comparar opciones, verificar detalles y ejecutar compras de forma autonoma.&lt;/p&gt;
&lt;h3 id=&quot;el-cambio-del-descubrimiento-web-al-descubrimiento-por-protocolo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-cambio-del-descubrimiento-web-al-descubrimiento-por-protocolo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El cambio del descubrimiento web al descubrimiento por protocolo&lt;/h3&gt;
&lt;p&gt;Durante más de dos decadas, la &lt;strong&gt;optimización para motores de búsqueda (SEO)&lt;/strong&gt; ha sido el mecanismo principal a través del cual las empresas aseguran que sus productos y servicios sean descubribles online. Las empresas optimizaban sus sitios web con palabras clave relevantes, construian backlinks de calidad y creaban contenido atractivo para posicionarse mejor en los resultados de búsqueda.&lt;/p&gt;
&lt;p&gt;El Universal Commerce Protocol cambia fundamentalmente esta ecuacion. En lugar de optimizar para crawlers de motores de búsqueda que indexan páginas HTML, las empresas ahora deben optimizar para agentes de IA que analizan protocolos de datos estructurados. La capa de descubrimiento se ha movido de la capa de presentacion (sitios web) a la capa de datos (APIs y schemás estructurados).&lt;/p&gt;
&lt;p&gt;Esto representa lo que los expertos de la industria llaman el &lt;strong&gt;“nuevo SEO”&lt;/strong&gt; - donde los factores de posicionamiento incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Calidad de datos&lt;/strong&gt;: Son tus datos estructurados completos, precisos y actuales?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento de schema&lt;/strong&gt;: Estas usando los tipos correctos de Schema.org (Offer, Product, PriceSpecification)?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Señales de disponibilidad&lt;/strong&gt;: Pueden los agentes de IA verificar niveles de stock y tiempos de entrega en tiempo real?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preparacion transaccional&lt;/strong&gt;: Puede la IA completar la compra sin friccion?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;como-funciona-ucp-vision-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-ucp-vision-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona UCP: Vision técnica&lt;/h2&gt;
&lt;p&gt;En su nucleo, UCP requiere que los comerciantes expongan su catálogo de productos o servicios a través de un archivo JSON estandarizado ubicado en &lt;code&gt;/.well-known/ucp.json&lt;/code&gt; en su dominio.&lt;/p&gt;
&lt;h3 id=&quot;componentes-clave-de-ucp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#componentes-clave-de-ucp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Componentes clave de UCP&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Perfil del comerciante&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La sección del comerciante contiene información empresarial incluyendo nombre legal, ID de IVA, detalles de contacto, ubicacion geografica y regiones de servicio.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;merchant&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Organization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Tu Empresa&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;vatID&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ES12345678A&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;address&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;areaServed&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ES&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;MX&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;AR&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Declaracion de capacidades&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esta sección específica que soportan los sistemas del comerciante - incluyendo si manejan consultas, presupuestos, reservas o pagos directos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Ofertas de productos/servicios&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cada oferta incluye especificaciones detalladas usando tipos de Schema.org: Offer, PriceSpecification, DeliveryTimeSpecification y WarrantyPromise.&lt;/p&gt;
&lt;h3 id=&quot;opciones-de-integración-de-checkout&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opciones-de-integración-de-checkout&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opciones de integración de checkout&lt;/h3&gt;
&lt;p&gt;UCP soporta dos modelos de checkout:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Checkout nativo&lt;/strong&gt;: El agente de IA se integra directamente con los sistemas de checkout del comerciante&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkout embebido&lt;/strong&gt;: Solución basada en iframe para comerciantes que requieren flujos de checkout altamente personalizados&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;el-ecosistema-de-protocolos-más-amplio-mcp-y-a2a&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ecosistema-de-protocolos-más-amplio-mcp-y-a2a&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ecosistema de protocolos más amplio: MCP y A2A&lt;/h2&gt;
&lt;p&gt;UCP no existe de forma aislada. Es parte de un stack emergente de protocolos para &lt;strong&gt;comercio agentico&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 id=&quot;model-context-protocol-mcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#model-context-protocol-mcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Model Context Protocol (MCP)&lt;/h3&gt;
&lt;p&gt;Mientras UCP maneja la capa de transacciones comerciales, &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; permite a los agentes de IA interactuar con sitios web como herramientas. Desarrollado originalmente por Anthropic para Claude, MCP permite a los sistemas de IA ejecutar búsquedas web, navegar sitios sin renderizar HTML, rellenar formularios y acceder a APIs.&lt;/p&gt;
&lt;h3 id=&quot;agent-to-agent-protocol-a2a&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agent-to-agent-protocol-a2a&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agent-to-Agent Protocol (A2A)&lt;/h3&gt;
&lt;p&gt;Desarrollado por Google, &lt;strong&gt;A2A (Agent-to-Agent)&lt;/strong&gt; maneja la comunicación entre diferentes agentes de IA. Esto permite flujos de trabajo complejos donde multiples agentes especializados colaboran.&lt;/p&gt;
&lt;h3 id=&quot;webmcp-el-complemento-frontend&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webmcp-el-complemento-frontend&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WebMCP: El complemento frontend&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;WebMCP&lt;/strong&gt; estandariza como los agentes de IA pueden interactuar con sitios web a nivel de navegador. Juntos, estos protocolos crean un stack completo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UCP&lt;/strong&gt;: Capa de comercio y transacciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP&lt;/strong&gt;: Interacción con herramientas y acceso API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A2A&lt;/strong&gt;: Comúnicación agente-a-agente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebMCP&lt;/strong&gt;: Interacción a nivel de navegador&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;que-significa-para-diferentes-tipos-de-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-para-diferentes-tipos-de-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa para diferentes tipos de negocio&lt;/h2&gt;
&lt;h3 id=&quot;tiendas-de-e-commerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tiendas-de-e-commerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tiendas de e-commerce&lt;/h3&gt;
&lt;p&gt;Para negocios de e-commerce basados en productos, la implementación de UCP es esencialmente obligatoria para mantenerse competitivo. Si tus competidores implementan UCP y tu no, los agentes de IA descubriran y recomendaran sus productos mientras tus ofertas permanecen invisibles.&lt;/p&gt;
&lt;h3 id=&quot;empresas-de-servicios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#empresas-de-servicios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Empresas de servicios&lt;/h3&gt;
&lt;p&gt;Para negocios basados en servicios como agencias, consultores y servicios profesionales, el calculo es ligeramente diferente. Los servicios no pueden “comprarse” de la misma manera que los productos. Sin embargo, las empresas de servicios pueden y deben adaptar los principios de UCP usando schemás &lt;strong&gt;ProfessionalService&lt;/strong&gt; y &lt;strong&gt;Offer&lt;/strong&gt; en lugar de Product.&lt;/p&gt;
&lt;h3 id=&quot;editores-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#editores-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Editores de contenido&lt;/h3&gt;
&lt;p&gt;Las empresas de medios deben enfocarse en implementar schemás completos de Schema.org Article y FAQ, asegurar que el contenido sea estructurado para citacion de IA, y crear datos estructurados para entidades, temas y relaciones.&lt;/p&gt;
&lt;h2 id=&quot;guia-de-implementación-primeros-pasos-con-ucp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-implementación-primeros-pasos-con-ucp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de implementación: Primeros pasos con UCP&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-auditar-tus-datos-actuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-auditar-tus-datos-actuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Auditar tus datos actuales&lt;/h3&gt;
&lt;p&gt;Antes de implementar UCP, comprende que datos ya tienes: Schema.org existente, información de producto en tu base de datos, precios y disponibilidad estructurados.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-crear-tu-archivo-de-datos-ucp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-crear-tu-archivo-de-datos-ucp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Crear tu archivo de datos UCP&lt;/h3&gt;
&lt;p&gt;Sigue la específicacion oficial de UCP para crear tu archivo &lt;code&gt;/.well-known/ucp.json&lt;/code&gt; con perfil completo del comerciante, declaraciones de capacidades y catálogo de productos/servicios.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-implementar-marcado-schemaorg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-implementar-marcado-schemaorg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Implementar marcado Schema.org&lt;/h3&gt;
&lt;p&gt;Mejora tu sitio web con datos Schema.org completos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Para productos&lt;/strong&gt;: Product, Offer, Brand, Review&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Para servicios&lt;/strong&gt;: ProfessionalService, Offer, PriceSpecification&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Para ambos&lt;/strong&gt;: Organization, ContactPoint, FAQPage&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-4-crear-endpoints-optimizados-para-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-crear-endpoints-optimizados-para-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Crear endpoints optimizados para IA&lt;/h3&gt;
&lt;p&gt;Mas alla del archivo UCP requerido, considera añadir &lt;code&gt;/agent.json&lt;/code&gt; con datos completos de servicio/producto en JSON-LD.&lt;/p&gt;
&lt;h3 id=&quot;paso-5-probar-y-monitorear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-probar-y-monitorear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Probar y monitorear&lt;/h3&gt;
&lt;p&gt;Consulta asistentes de IA sobre tus productos/servicios, verifica que los datos estructurados se validen correctamente, monitorea la citacion y descubrimiento por IA.&lt;/p&gt;
&lt;h2 id=&quot;conclusion-preparate-ahora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-preparate-ahora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Preparate ahora&lt;/h2&gt;
&lt;p&gt;El cambio al comercio agentico no es un escenario futuro lejano - esta sucediendo ahora. Google ha desplegado UCP en producción, Shopify ha integrado soporte, y los early adopters ya estan capturando tráfico y ventas impulsadas por IA.&lt;/p&gt;
&lt;p&gt;La clave es esta: &lt;strong&gt;la capa de descubrimiento se ha movido de los sitios web a los protocolos&lt;/strong&gt;. Ya sea que vendas productos o servicios, asegurar que tus datos esten estructurados, completos y accesibles para agentes de IA se esta volviendo tan fundamental como tener un sitio web responsive móvil hace una decada.&lt;/p&gt;
&lt;p&gt;Descubre nuestros servicios de &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio IA para WordPress&lt;/a&gt; o los servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt;. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt; para una evaluación gratuita de visibilidad en IA.&lt;/p&gt;</content:encoded><category>seo</category><category>ai</category><category>e-commerce</category><category domain="tag">universal-commerce-protocol</category><category domain="tag">ucp</category><category domain="tag">ai-agents</category><category domain="tag">agentic-commerce</category><category domain="tag">google-ai</category><category domain="tag">structured-data</category><category domain="tag">schema-org</category><category domain="tag">json-ld</category><enclosure url="https://wppoland.com/images/og/szybkie-strony-woocommerce.jpg" type="image/jpeg"/></item><item><title>Hardening, rendimiento y SEO de WordPress: lo que de verdad mueve la aguja en 2026</title><link>https://wppoland.com/es/the-ultimate-guide-to-wordpress-best-practices/</link><guid isPermaLink="true">https://wppoland.com/es/the-ultimate-guide-to-wordpress-best-practices/</guid><description>Lista de cambios concretos en wp-config, reglas de Cloudflare y decisiones de schema que mueven TTFB, cumplimiento AEPD y rankings en proyectos WordPress españoles.</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;hardening-rendimiento-y-seo-de-wordpress-lo-que-de-verdad-mueve-la-aguja-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hardening-rendimiento-y-seo-de-wordpress-lo-que-de-verdad-mueve-la-aguja-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hardening, rendimiento y SEO de WordPress: lo que de verdad mueve la aguja en 2026&lt;/h2&gt;
&lt;p&gt;No existe una guía definitiva de WordPress. Quien le venda una, le está vendiendo un listicle. Lo que sigue es una checklist de profesional con los cambios que mueven la aguja en proyectos reales de cliente en wppoland.com, ordenada en tres planos que se entrelazan más de lo que admiten la mayoría de artículos: hardening, peso de página y cómo motores de búsqueda y LLMs realmente parsean el resultado.&lt;/p&gt;
&lt;p&gt;El patrón es casi siempre el mismo. Un sitio español llega con un cementerio de plugins, una tabla &lt;code&gt;wp_options&lt;/code&gt; sin auditar, tres plugins SEO peleándose por la etiqueta &lt;code&gt;&amp;#x3C;title&gt;&lt;/code&gt;, y un &lt;code&gt;/wp-login.php&lt;/code&gt; que recibe 200 POSTs por minuto desde IPs residenciales rotativas. Nada de esto se arregla con una checklist genérica. Se arregla sabiendo qué constantes en &lt;code&gt;wp-config.php&lt;/code&gt;, qué reglas de Cloudflare y qué decisiones de schema devuelven tiempo y rankings, y qué es teatro de cumplimiento.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-este-post-no-es&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-este-post-no-es&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que este post no es&lt;/h2&gt;
&lt;p&gt;No es documentación de referencia exhaustiva. El documento canónico de hardening vive en &lt;code&gt;wordpress.org/documentation/article/hardening-wordpress/&lt;/code&gt; y es más completo que cualquier post de blog. Lo que este post añade es opinión: qué subconjunto de esos controles vale la pena implementar primero, en qué orden, y dónde el típico artículo de “best practices” salta calladamente el detalle doloroso, por ejemplo el plazo de 72 horas de la AEPD para notificar una brecha de datos según el RGPD Art. 33 y la LOPDGDD.&lt;/p&gt;
&lt;p&gt;Si gestiona un sitio escaparate en hosting compartido, la mitad de las recomendaciones de abajo es excesiva. Si gestiona un WooCommerce con precios para B2B autenticado e integración Bizum o Redsys, la mitad es lo mínimo.&lt;/p&gt;
&lt;h2 id=&quot;hardening-que-se-paga-solo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hardening-que-se-paga-solo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hardening que se paga solo&lt;/h2&gt;
&lt;p&gt;La mayoría de incidentes WordPress que he limpiado se reducen a una de tres cosas: un plugin viejo con CVE conocida, una contraseña de admin reutilizada de un servicio filtrado, o un endpoint XML-RPC o REST abierto a enumeración. Casi nada se debe a un plugin de seguridad ausente. La implicación: hardening es sobre todo configuración, y un puñado de constantes en &lt;code&gt;wp-config.php&lt;/code&gt; hacen más por el modelo de amenaza que cualquier suite “todo en uno”.&lt;/p&gt;
&lt;h3 id=&quot;el-bloque-wp-configphp-que-pongo-en-cada-instalación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-bloque-wp-configphp-que-pongo-en-cada-instalación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El bloque &lt;code&gt;wp-config.php&lt;/code&gt; que pongo en cada instalación&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_MODS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FORCE_SSL_ADMIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_AUTO_UPDATE_CORE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;minor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AUTOMATIC_UPDATER_DISABLED&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;EMPTY_TRASH_DAYS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;DISALLOW_FILE_EDIT&lt;/code&gt; retira el editor de código del escritorio, y es la reducción de radio de explosión más útil que existe. &lt;code&gt;DISALLOW_FILE_MODS&lt;/code&gt; va más lejos y bloquea instalaciones y actualizaciones de plugins y temas desde el escritorio por completo; combínelo con un pipeline de despliegue que actualice vía WP-CLI o Composer. &lt;code&gt;FORCE_SSL_ADMIN&lt;/code&gt; evita el caso vergonzoso de que alguien acceda brevemente a &lt;code&gt;http://&lt;/code&gt; admin y filtre una cookie de sesión. Los límites de revisiones y papelera no son seguridad en sí, pero impiden que &lt;code&gt;wp_posts&lt;/code&gt; y &lt;code&gt;wp_postmeta&lt;/code&gt; se conviertan en la query lenta que enmascara un incidente real.&lt;/p&gt;
&lt;h3 id=&quot;application-passwords-2fa-y-una-salida-cli&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#application-passwords-2fa-y-una-salida-cli&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Application passwords, 2FA y una salida CLI&lt;/h3&gt;
&lt;p&gt;Application passwords se activaron por defecto en WordPress 5.6 y casi nadie las audita. Ejecute &lt;code&gt;wp user application-password list &amp;#x3C;user&gt;&lt;/code&gt; para cada administrador en cada revisión trimestral. Revoque todo lo que no se corresponda con una integración documentada. Trate cualquier application password ligada a un usuario con &lt;code&gt;manage_options&lt;/code&gt; como equivalente a la credencial principal de ese usuario.&lt;/p&gt;
&lt;p&gt;Para 2FA, el plugin Two-Factor sigue siendo la opción más limpia, pero configúrelo dando por hecho que un teléfono se acabará perdiendo. Documente la ruta de recuperación: SSH al servidor y &lt;code&gt;wp user meta delete &amp;#x3C;id&gt; _two_factor_*&lt;/code&gt; para eliminar el segundo factor, después rote la contraseña inmediatamente. Si se salta este paso, dejará al cliente fuera de su propia producción en un momento que siempre es inoportuno, típicamente la tarde antes del Black Friday o de subir el modelo Verifactu a la AEAT.&lt;/p&gt;
&lt;h3 id=&quot;saque-la-pelea-contra-brute-force-fuera-de-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#saque-la-pelea-contra-brute-force-fuera-de-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Saque la pelea contra brute force fuera de PHP&lt;/h3&gt;
&lt;p&gt;PHP es el peor sitio para gestionar un flood en &lt;code&gt;/wp-login.php&lt;/code&gt;. Cuando &lt;code&gt;wp-login.php&lt;/code&gt; decide que una petición es mala, ya ha quemado CPU haciendo bootstrap de WordPress. El rate limit pertenece una capa más arriba.&lt;/p&gt;
&lt;p&gt;En Cloudflare, una regla de Rate Limiting que permita diez POSTs a &lt;code&gt;/wp-login.php&lt;/code&gt; cada diez minutos por IP, combinada con un managed challenge para la misma ruta desde geografías fuera de la UE si su público es regional, elimina más del 95% del tráfico de credential stuffing sin tocar el origin. Si su stack corre ModSecurity (común en Webempresa, Raiola Networks, Dinahosting y SiteGround Iberia), OWASP Core Rule Set en paranoia level 1 con &lt;code&gt;xmlrpc.php&lt;/code&gt; bloqueado de raíz es la base. Paranoia 2 empieza a generar falsos positivos sobre el JSON de bloques Gutenberg, así que no salte sin probar el editor en staging.&lt;/p&gt;
&lt;h3 id=&quot;aepd-rgpd-y-el-registro-de-consentimientos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aepd-rgpd-y-el-registro-de-consentimientos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;AEPD, RGPD y el registro de consentimientos&lt;/h3&gt;
&lt;p&gt;Un punto que las guías anglófonas saltan: el RGPD Art. 33 obliga a notificar a la AEPD en 72 horas tras una brecha de datos, y sin un log de consentimientos que sobreviva a una limpieza de incidente queda sin prueba documental. Mantenga una tabla &lt;code&gt;wp_consent_log&lt;/code&gt; separada de &lt;code&gt;wp_options&lt;/code&gt;, con timestamp, IP hasheada y versión de política. Para hardening de pagos Bizum y Redsys, el callback debe validar la firma HMAC contra la clave de comercio; sin eso un atacante puede falsificar una confirmación de pago y marcar un pedido como pagado sin que el cliente complete el cargo. Si emite facturas certificadas conforme a Verifactu o TicketBAI, separe la pasarela de facturación del frontend en un Worker dedicado para evitar que un compromiso del tema afecte la integridad de los registros de la AEAT.&lt;/p&gt;
&lt;h3 id=&quot;permisos-de-archivos-en-breve&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#permisos-de-archivos-en-breve&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Permisos de archivos, en breve&lt;/h3&gt;
&lt;p&gt;Directorios &lt;code&gt;755&lt;/code&gt;, archivos &lt;code&gt;644&lt;/code&gt;, &lt;code&gt;wp-config.php&lt;/code&gt; &lt;code&gt;440&lt;/code&gt; o &lt;code&gt;400&lt;/code&gt; y propiedad del usuario bajo el que corre PHP-FPM, no &lt;code&gt;root&lt;/code&gt;. Si su hosting insiste en &lt;code&gt;777&lt;/code&gt; en algún sitio, cambie de hosting. No estamos en 2008.&lt;/p&gt;
&lt;h2 id=&quot;seo-que-sobrevive-al-contacto-con-la-realidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-que-sobrevive-al-contacto-con-la-realidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO que sobrevive al contacto con la realidad&lt;/h2&gt;
&lt;p&gt;La conversación sobre SEO en WordPress lleva una década atrancada en permalinks y alt text. Ambos siguen importando, pero no son lo que separa a un sitio que rankea de uno que no en 2026. Las cuatro cosas que veo mover rankings en sitios de cliente: un grafo Schema.org coherente, un plugin SEO configurado para una sola tarea en lugar de pelearse con otro, hreflang hecho correctamente para builds multilingüe, y una sitemap con prioridades alineadas con lo que importa al negocio.&lt;/p&gt;
&lt;h3 id=&quot;schema-como-grafo-no-como-checklist&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-como-grafo-no-como-checklist&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema como grafo, no como checklist&lt;/h3&gt;
&lt;p&gt;La mayoría de plugins SEO emiten una lista plana de bloques JSON-LD desconectados: una &lt;code&gt;Organization&lt;/code&gt; aquí, un &lt;code&gt;Article&lt;/code&gt; allá, un &lt;code&gt;BreadcrumbList&lt;/code&gt; que no referencia ninguno. Motores de búsqueda y LLMs premian un grafo conectado: &lt;code&gt;Article&lt;/code&gt; cuyo &lt;code&gt;author&lt;/code&gt; es una &lt;code&gt;Person&lt;/code&gt; cuyo &lt;code&gt;worksFor&lt;/code&gt; es la &lt;code&gt;Organization&lt;/code&gt; cuyo &lt;code&gt;logo&lt;/code&gt; referencia el &lt;code&gt;WebSite&lt;/code&gt;. Tanto Yoast como Rank Math soportan esto a través de sus filtros; el trabajo está en definir el grafo una vez y alimentar tanto las páginas de usuario como los crawlers de LLM con un set consistente de referencias &lt;code&gt;@id&lt;/code&gt;. Si los campos &lt;code&gt;about&lt;/code&gt; y &lt;code&gt;mentions&lt;/code&gt; del front-matter ya tienen URLs de Wikidata, la mitad del trabajo está hecho.&lt;/p&gt;
&lt;p&gt;Para tiendas españolas con facturación certificada Verifactu o TicketBAI, una schema &lt;code&gt;Invoice&lt;/code&gt; ligada a la &lt;code&gt;Organization&lt;/code&gt; por &lt;code&gt;@id&lt;/code&gt; aporta tracción adicional en AI Overviews ante consultas sobre procedimiento ante la AEAT.&lt;/p&gt;
&lt;h3 id=&quot;yoast-vs-rank-math-elija-uno-y-desactive-el-otro-por-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#yoast-vs-rank-math-elija-uno-y-desactive-el-otro-por-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Yoast vs Rank Math: elija uno y desactive el otro por completo&lt;/h3&gt;
&lt;p&gt;El patrón de colisión más habitual son dos plugins SEO ambos escribiendo &lt;code&gt;&amp;#x3C;title&gt;&lt;/code&gt; y &lt;code&gt;&amp;#x3C;meta name=&quot;description&quot;&gt;&lt;/code&gt;, donde gana el que corre último, pero ambos dejan su schema en &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;. Síntoma: &lt;code&gt;BreadcrumbList&lt;/code&gt; duplicado, &lt;code&gt;WebPage&lt;/code&gt; duplicada, bloques &lt;code&gt;Article&lt;/code&gt; en conflicto. Google fusiona lo que puede y descarta el resto, pero la señal queda turbia. Elija uno, desactive el otro, después revise el HTML renderizado por schema obsoleta cacheada en object cache o page cache. Vacíe ambos tras la migración.&lt;/p&gt;
&lt;p&gt;Rank Math suele ganar en flexibilidad de schema, Yoast en el análisis opinado de contenido que los autores leen de verdad. Ninguno importa más que la consistencia de usar uno solo.&lt;/p&gt;
&lt;h3 id=&quot;hreflang-para-los-builds-en-seis-idiomas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hreflang-para-los-builds-en-seis-idiomas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hreflang para los builds en seis idiomas&lt;/h3&gt;
&lt;p&gt;Si gestiona un sitio multilingüe (típico en España: ES más CA o GL para mercados regionales, ES más EN para exportación), hreflang es la diferencia entre que Google sirva la versión &lt;code&gt;es-ES&lt;/code&gt; a lectores españoles y que sirva la &lt;code&gt;es-MX&lt;/code&gt; a un cliente que después reboté por el formato del IVA. Las anotaciones deben ser recíprocas (cada alternate debe listar todos los demás incluyéndose a sí mismo), apuntar a URLs canónicas e incluir &lt;code&gt;x-default&lt;/code&gt;. Plugins lo manejan, pero verifique en Search Console bajo International Targeting; los errores silenciosos de hreflang tras un cambio de slug son comunes.&lt;/p&gt;
&lt;h3 id=&quot;prioridades-de-sitemap-default-de-wordpress-vs-lo-que-quiere&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prioridades-de-sitemap-default-de-wordpress-vs-lo-que-quiere&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prioridades de sitemap, default de WordPress vs lo que quiere&lt;/h3&gt;
&lt;p&gt;El core entrega &lt;code&gt;/wp-sitemap.xml&lt;/code&gt;, suficiente para sitios pequeños e insuficiente para todo lo demás porque no permite ponderar ni excluir. Yoast y Rank Math publican &lt;code&gt;/sitemap_index.xml&lt;/code&gt; con índices separados por post type, y eso es lo que quiere. El movimiento no obvio: excluya el post type &lt;code&gt;attachment&lt;/code&gt; de la sitemap salvo que la mediateca sea el producto. URLs de attachment generadas por subidas de imagen no necesitan estar en el índice de Google; diluyen el crawl budget en sitios grandes y producen soft 404 de thin content en sitios pequeños.&lt;/p&gt;
&lt;h2 id=&quot;rendimiento-dónde-se-va-el-tiempo-de-verdad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-dónde-se-va-el-tiempo-de-verdad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento: dónde se va el tiempo de verdad&lt;/h2&gt;
&lt;p&gt;La mayoría de tickets “WordPress va lento” que abro acaban siendo una de cuatro cosas, más o menos en este orden: &lt;code&gt;wp_options&lt;/code&gt; autoload hinchado, una fuente externa en el camino crítico, una imagen hero sobredimensionada sin &lt;code&gt;fetchpriority&lt;/code&gt;, y un plugin de cache entregando la cache key incorrecta para usuarios autenticados. El hosting importa, pero rara vez es el cuello de botella si las cuatro anteriores están mal.&lt;/p&gt;
&lt;h3 id=&quot;pode-primero-el-autoload-de-wp_options&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pode-primero-el-autoload-de-wp_options&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pode primero el autoload de &lt;code&gt;wp_options&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Es el cambio de rendimiento con más palanca en WordPress, y casi nadie lo corre de forma planificada. Cada page load lanza &lt;code&gt;SELECT option_name, option_value FROM wp_options WHERE autoload = &apos;yes&apos;&lt;/code&gt;, y en un sitio que ha acumulado cinco años de detritus de plugins esa query puede devolver tres o cuatro megabytes. Sesenta a ochenta por ciento de esas filas son típicamente transients dejados por plugins desinstalados o settings que no tenían nada que estar en autoload.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;SELECT option_name, LENGTH(option_value) AS size FROM wp_options WHERE autoload=&apos;yes&apos; ORDER BY size DESC LIMIT 30&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Todo lo que pase de 100KB y no esté en uso activo se vuelve candidato. &lt;code&gt;wp option set &amp;#x3C;name&gt; --autoload=no&lt;/code&gt; para cosas que quiere conservar pero rara vez lee; filas huérfanas de plugins, borrar directamente. En una intervención reciente sobre WooCommerce para una tienda madrileña, una sola pasada bajó el TTFB de 880ms a 310ms sin tocar código.&lt;/p&gt;
&lt;h3 id=&quot;object-cache-no-solo-page-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#object-cache-no-solo-page-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Object cache, no solo page cache&lt;/h3&gt;
&lt;p&gt;Page caching resuelve el caso del visitante anónimo. Object caching resuelve el usuario autenticado, WooCommerce y los pantallazos de admin, que es donde vive el camino de conversión real. Redis vía el módulo PECL oficial más el plugin Redis Object Cache es la respuesta aburrida y correcta.&lt;/p&gt;
&lt;p&gt;Verifique que está trabajando: &lt;code&gt;wp redis status&lt;/code&gt; debe mostrar hit ratio por encima del 90% en un sitio caliente. Por debajo, o la política de eviction está mal (&lt;code&gt;allkeys-lru&lt;/code&gt; es la correcta) o algo está llamando a &lt;code&gt;wp_cache_flush()&lt;/code&gt; con más agresividad de la cuenta.&lt;/p&gt;
&lt;h3 id=&quot;cloudflare-page-rules-vs-workers-para-wp-json&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-page-rules-vs-workers-para-wp-json&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cloudflare: Page Rules vs Workers para &lt;code&gt;/wp-json&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Para HTML estático, basta una Cache Rule que cachee &lt;code&gt;(http.host eq &quot;ejemplo.es&quot; and not http.request.uri.path contains &quot;/wp-admin&quot; and not http.cookie contains &quot;wordpress_logged_in_&quot;)&lt;/code&gt; durante una hora. El caso difícil es &lt;code&gt;/wp-json&lt;/code&gt; para sitios headless o parcialmente headless. Page Rules no varía limpiamente sobre headers de autenticación, así que si está cacheando el REST API para tráfico anónimo, hágalo en un Worker que haga bypass explícito sobre &lt;code&gt;Authorization&lt;/code&gt; y &lt;code&gt;Cookie: wordpress_logged_in_*&lt;/code&gt; y respete &lt;code&gt;Cache-Control: private&lt;/code&gt;. La cantidad de sitios que entregan datos de usuario autenticado a anónimos porque cachearon &lt;code&gt;/wp-json/wp/v2/users&lt;/code&gt; en el edge es deprimente.&lt;/p&gt;
&lt;h3 id=&quot;imágenes-lazy-por-defecto-eager-donde-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-lazy-por-defecto-eager-donde-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes: lazy por defecto, eager donde cuenta&lt;/h3&gt;
&lt;p&gt;WordPress 5.5+ añade &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; automáticamente, lo que es correcto para todo bajo el fold y erróneo para el elemento LCP. La imagen hero de una landing debe llevar &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; y explícitamente &lt;code&gt;loading=&quot;eager&quot;&lt;/code&gt;. La implementación más simple es un pequeño filtro sobre &lt;code&gt;wp_get_attachment_image_attributes&lt;/code&gt; que invierta ambos atributos cuando el ID del attachment coincide con la featured image y el contexto es la plantilla singular.&lt;/p&gt;
&lt;p&gt;AVIF primero, WebP fallback, JPEG solo como último recurso. Sirva desde el mismo origin si puede; cross-origin image fetches siguen costando un TLS handshake incluso en HTTP/3.&lt;/p&gt;
&lt;h3 id=&quot;critical-css-y-la-cuestión-de-las-fuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#critical-css-y-la-cuestión-de-las-fuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Critical CSS y la cuestión de las fuentes&lt;/h3&gt;
&lt;p&gt;Inline el CSS above-the-fold para la home y cualquier landing de tráfico alto. Critters o los extractors basados en Penthouse lo hacen bien; para WordPress en concreto, un Cloudflare Worker que inyecte el critical CSS extraído en &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; y diferir el stylesheet completo es el camino de menor resistencia si no controla la build pipeline.&lt;/p&gt;
&lt;p&gt;Para fuentes: self-host. &lt;code&gt;font-display: swap&lt;/code&gt; no es negociable. Un único subset WOFF2 de 30KB suele batir lo que Google Fonts pueda servir, y elimina un DNS lookup de tercero del camino crítico. Para sitios españoles el subset &lt;code&gt;latin-ext&lt;/code&gt; debe cubrir á, é, ó, ñ, ¿ y ¡; sin eso el primer paint muestra un fallback con huecos glíficos.&lt;/p&gt;
&lt;h2 id=&quot;qué-hacer-mañana-por-la-mañana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hacer-mañana-por-la-mañana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué hacer mañana por la mañana&lt;/h2&gt;
&lt;p&gt;Si esta lista resulta abrumadora, el orden en que la trabajaría en un proyecto real:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Suelte el bloque de constantes en &lt;code&gt;wp-config.php&lt;/code&gt; y verifique que el editor del escritorio ha desaparecido.&lt;/li&gt;
&lt;li&gt;Corra la query de autoload en &lt;code&gt;wp_options&lt;/code&gt; y pode todo lo que pase de 100KB y no justifique su peso.&lt;/li&gt;
&lt;li&gt;Audite las application passwords con &lt;code&gt;wp user application-password list&lt;/code&gt; para cada administrador.&lt;/li&gt;
&lt;li&gt;Empuje el rate limiting de &lt;code&gt;/wp-login.php&lt;/code&gt; a Cloudflare.&lt;/li&gt;
&lt;li&gt;Elija un plugin SEO, desactive el otro, después revise el HTML renderizado en busca de schema huérfana.&lt;/li&gt;
&lt;li&gt;Arregle la imagen LCP con &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; y haga self-host de las fuentes.&lt;/li&gt;
&lt;li&gt;Confirme que el log de consentimientos RGPD vive fuera de &lt;code&gt;wp_options&lt;/code&gt; y tiene formato exportable para solicitudes de acceso AEPD.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La lista completa de arriba es un sprint, no una tarde. Quien venda un arreglo de una hora para los cuatro planos, está vendiendo un listicle.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación de mejores prácticas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Soporte continuo para su sitio&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Core Web Vitals perfectos&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad&lt;/a&gt; - Protección empresarial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; - Visibilidad en motores de búsqueda y búsqueda por IA&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>wordpress</category><category>security</category><category>seo</category><category>performance</category><category domain="tag">wordpress</category><category domain="tag">security</category><category domain="tag">seo</category><category domain="tag">performance</category><category domain="tag">best-practices</category><category domain="tag">wordpress-core</category><category domain="tag">evergreen</category><enclosure url="https://wppoland.com/images/og/wordpress-security-why-updates-and-security-measures-are-crucial.jpg" type="image/jpeg"/></item><item><title>Las mejores herramientas de IA para contenido y SEO en WordPress 2026</title><link>https://wppoland.com/es/ai-wordpress-tools-content-generation-guide/</link><guid isPermaLink="true">https://wppoland.com/es/ai-wordpress-tools-content-generation-guide/</guid><description>Guia práctica de las mejores herramientas de IA para WordPress en 2026, cubriendo generación de contenido, flujos SEO, chatbots, herramientas de imagen, asistentes de código y riesgos editoriales.</description><pubDate>Sun, 01 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La inteligencia artificial ha transformado fundamentalmente como los equipos de marketing y desarrollo trabajan con WordPress en 2026. Desde la generación de borradores de contenido hasta la optimización SEO automatizada, pasando por chatbots de soporte y asistentes de código, las herramientas de IA se han convertido en componentes esenciales del flujo de trabajo WordPress moderno.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio e IA en WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Sin embargo, la clave no esta en usar más herramientas de IA, sino en usar las correctas de la manera correcta. Esta guía práctica analiza las mejores herramientas de IA para WordPress en 2026, con recomendaciónes honestas sobre cuando la IA ayuda genuinamente y cuando puede perjudicar.&lt;/p&gt;
&lt;h2 id=&quot;1-herramientas-de-ia-para-generación-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-herramientas-de-ia-para-generación-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Herramientas de IA para generación de contenido&lt;/h2&gt;
&lt;p&gt;La generación de contenido asistida por IA es el caso de uso más popular y también el más mal utilizado en WordPress. La diferencia entre un sitio que usa IA correctamente y uno que no es la calidad de supervision humana aplicada.&lt;/p&gt;
&lt;h3 id=&quot;las-mejores-opciones-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-mejores-opciones-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las mejores opciones en 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Claude (Anthropic):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Excelente para contenido largo y técnico&lt;/li&gt;
&lt;li&gt;Genera texto coherente y bien estructurado&lt;/li&gt;
&lt;li&gt;Sigue instrucciones complejas de formato y estilo&lt;/li&gt;
&lt;li&gt;Mejor opción para redaccion técnica y guías detalladas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ChatGPT (OpenAI):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Versatil para todo tipo de contenido&lt;/li&gt;
&lt;li&gt;Excelente para brainstorming y generación de ideas&lt;/li&gt;
&lt;li&gt;Integraciones amplias con plugins WordPress&lt;/li&gt;
&lt;li&gt;Buena relación calidad-precio para equipos grandes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Gemini (Google):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acceso a información actualizada en tiempo real&lt;/li&gt;
&lt;li&gt;Ideal para contenido que requiere datos recientes&lt;/li&gt;
&lt;li&gt;Buena integración con herramientas Google (Search Console, Analytics)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;flujo-de-trabajo-recomendado-para-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-recomendado-para-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo recomendado para contenido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Brief humano&lt;/strong&gt;: Defina el tema, audiencia objetivo, keywords y estructura antes de invocar la IA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Borrador con IA&lt;/strong&gt;: Use la IA para generar un primer borrador basado en el brief detallado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision editorial&lt;/strong&gt;: Un editor humano revisa precision factual, tono de marca, originalidad y calidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enriquecimiento&lt;/strong&gt;: Anada experiencia directa, datos propios, capturas de pantalla y ejemplos reales que la IA no puede proporcionar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización SEO&lt;/strong&gt;: Use herramientas específicas para verificar cobertura de keywords, estructura y datos estructurados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicación y monitoreo&lt;/strong&gt;: Publique y monitoree el rendimiento para iterar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;lo-que-la-ia-no-debe-hacer-por-usted&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-la-ia-no-debe-hacer-por-usted&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que la IA NO debe hacer por usted&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Crear contenido de liderazgo de opinion&lt;/strong&gt;: Las opiniones y perspectivas únicas son inherentemente humanas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generar testimonios o casos de estudio&lt;/strong&gt;: Estos deben ser reales y verificables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escribir contenido Your Money Your Life (YMYL)&lt;/strong&gt;: Contenido medico, financiero o legal requiere expertise humana verificable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicar sin revision&lt;/strong&gt;: Ningun contenido generado por IA debe publicarse sin revision humana.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-herramientas-de-ia-para-seo-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-herramientas-de-ia-para-seo-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Herramientas de IA para SEO en WordPress&lt;/h2&gt;
&lt;p&gt;El &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO&lt;/a&gt; asistido por IA ha evolucionado de sugerencias básicas de keywords a sistemas sofisticados que analizan intencion de búsqueda, competencia y cobertura temática.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-integradas-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-integradas-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas integradas en WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;RankMath AI:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sugerencias de título y meta description basadas en IA&lt;/li&gt;
&lt;li&gt;Análisis de contenido con puntuacion SEO en tiempo real&lt;/li&gt;
&lt;li&gt;Generación automática de FAQ Schema&lt;/li&gt;
&lt;li&gt;Sugerencias de enlaces internos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Yoast SEO Premium:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Análisis de legibilidad mejorado con IA&lt;/li&gt;
&lt;li&gt;Sugerencias de palabras clave relacionadas&lt;/li&gt;
&lt;li&gt;Esquema de datos estructurados automatizado&lt;/li&gt;
&lt;li&gt;Integración con Semrush para datos de keywords&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-externas-con-impacto-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-externas-con-impacto-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas externas con impacto SEO&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Surfer SEO:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Análisis de la competencia SERP en tiempo real&lt;/li&gt;
&lt;li&gt;Puntuacion de cobertura de contenido&lt;/li&gt;
&lt;li&gt;Sugerencias de estructura y subencabezados&lt;/li&gt;
&lt;li&gt;Integración directa con WordPress via plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Clearscope:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Análisis semántico avanzado&lt;/li&gt;
&lt;li&gt;Recomendaciones de vocabulario basadas en contenido top-ranking&lt;/li&gt;
&lt;li&gt;Seguimiento de mejoras de posicionamiento post-optimización&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;MarketMuse:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modelado de autoridad temática&lt;/li&gt;
&lt;li&gt;Identificacion de gaps de contenido&lt;/li&gt;
&lt;li&gt;Planificacion de clusters tematicos&lt;/li&gt;
&lt;li&gt;Priorización de contenido basada en oportunidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;advertencias-sobre-ia-y-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#advertencias-sobre-ia-y-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Advertencias sobre IA y SEO&lt;/h3&gt;
&lt;p&gt;Google ha sido explicito en 2026: no penaliza el contenido generado por IA per se, pero si penaliza el contenido de baja calidad, independientemente de como fue creado. Los riesgos principales son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenido generico&lt;/strong&gt;: La IA tiende a producir contenido que suena “como todos los demas”. Sin perspectiva única, no posicionara.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inexactitudes factuales&lt;/strong&gt;: Los LLM pueden generar información incorrecta con confianza. Toda afirmacion factual debe verificarse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de E-E-A-T&lt;/strong&gt;: El contenido generado por IA carece de experiencia directa. Debe enriquecerse con datos propios, capturas de pantalla y perspectivas únicas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-chatbots-de-ia-para-sitios-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-chatbots-de-ia-para-sitios-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Chatbots de IA para sitios WordPress&lt;/h2&gt;
&lt;p&gt;Los chatbots de IA pueden reducir significativamente la carga de soporte en sitios WordPress, especialmente en tiendas &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt; y sitios de servicios.&lt;/p&gt;
&lt;h3 id=&quot;implementaciones-efectivas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementaciones-efectivas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementaciones efectivas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Chatbots de soporte de primera linea:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Responden preguntas frecuentes automáticamente&lt;/li&gt;
&lt;li&gt;Proporcionan información sobre productos, precios y disponibilidad&lt;/li&gt;
&lt;li&gt;Guian a los usuarios a través de procesos (pedidos, devoluciones, FAQ)&lt;/li&gt;
&lt;li&gt;Escalan a agentes humanos cuando no pueden resolver la consulta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Asistentes de navegación:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ayudan a los usuarios a encontrar contenido relevante&lt;/li&gt;
&lt;li&gt;Sugieren productos basados en necesidades expresadas&lt;/li&gt;
&lt;li&gt;Proporcionan recomendaciónes personalizadas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-de-chatbot-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-chatbot-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de chatbot para WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tidio&lt;/strong&gt;: Chatbot con IA integrada y chat en vivo, fácil integración con WooCommerce&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LiveChat + ChatBot&lt;/strong&gt;: Combinación de chat humano con bot de IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intercom&lt;/strong&gt;: Solución empresarial con IA avanzada para segmentacion y automatizacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WPBot (ChatBot para WordPress)&lt;/strong&gt;: Plugin nativo con integración DialogFlow&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mejores-prácticas-para-chatbots&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-para-chatbots&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas para chatbots&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Transparencia&lt;/strong&gt;: Informe siempre que el usuario esta hablando con un bot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalamiento humano&lt;/strong&gt;: Proporcione siempre una ruta clara hacia un agente humano.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitaciones claras&lt;/strong&gt;: No permita que el bot proporcione asesoramiento medico, legal o financiero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entrenamiento continuo&lt;/strong&gt;: Alimente el bot con datos reales de su negocio y actualicelos regularmente.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;4-herramientas-de-ia-para-imágenes-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-herramientas-de-ia-para-imágenes-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Herramientas de IA para imágenes en WordPress&lt;/h2&gt;
&lt;p&gt;Las imágenes generadas y optimizadas por IA han transformado la producción visual en WordPress.&lt;/p&gt;
&lt;h3 id=&quot;generación-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generación-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Generación de imágenes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Midjourney&lt;/strong&gt;: La mayor calidad artistica para imágenes de marketing y branding&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DALL-E 3&lt;/strong&gt;: Integrado en ChatGPT, ideal para ilustraciones y diagramas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stable Diffusion&lt;/strong&gt;: Opción de código abierto con control total&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-de-imágenes-con-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-imágenes-con-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de imágenes con IA&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ShortPixel&lt;/strong&gt;: Compresion inteligente con deteccion de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imagify&lt;/strong&gt;: Optimización automática al subir con multiples niveles de compresion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Image Resizing&lt;/strong&gt;: Optimización en el Edge con formatos adaptativos (AVIF, WebP)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;consideraciones-legales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-legales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones legales&lt;/h3&gt;
&lt;p&gt;En 2026, las regulaciones sobre imágenes generadas por IA varian por jurisdiccion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifique los derechos de uso de imágenes generadas según el servicio utilizado&lt;/li&gt;
&lt;li&gt;Algunas jurisdicciones requieren etiquetar contenido generado por IA&lt;/li&gt;
&lt;li&gt;Evite generar imágenes de personas reales identificables&lt;/li&gt;
&lt;li&gt;Mantenga registros de las herramientas y prompts utilizados&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-asistentes-de-código-ia-para-desarrollo-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-asistentes-de-código-ia-para-desarrollo-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Asistentes de código IA para desarrollo WordPress&lt;/h2&gt;
&lt;p&gt;Para &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores WordPress&lt;/a&gt;, los asistentes de código IA han cambiado fundamentalmente la productividad diaria.&lt;/p&gt;
&lt;h3 id=&quot;las-mejores-herramientas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-mejores-herramientas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las mejores herramientas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;GitHub Copilot:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Autocompletado de código contextual en tiempo real&lt;/li&gt;
&lt;li&gt;Excelente para PHP, JavaScript, CSS&lt;/li&gt;
&lt;li&gt;Integrado en VS Code, JetBrains y otros editores&lt;/li&gt;
&lt;li&gt;Entiende patrones WordPress (hooks, filtros, funciones del nucleo)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Análisis de bases de código completas&lt;/li&gt;
&lt;li&gt;Excelente para refactorizacion de código legacy&lt;/li&gt;
&lt;li&gt;Generación de tests unitarios&lt;/li&gt;
&lt;li&gt;Documentación automática de funciones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cursor:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IDE completo con IA integrada&lt;/li&gt;
&lt;li&gt;Contexto de proyecto completo para sugerencias más precisas&lt;/li&gt;
&lt;li&gt;Capacidad de editar multiples archivos simultaneamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;donde-la-ia-de-código-brilla-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-la-ia-de-código-brilla-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde la IA de código brilla para WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Boilerplate&lt;/strong&gt;: Generación de estructura de plugins, temas y bloques personalizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refactorizacion&lt;/strong&gt;: Modernizar código legacy (PHP 5.6 -&gt; PHP 8.3)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tests&lt;/strong&gt;: Generación de tests unitarios para funciones existentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentación&lt;/strong&gt;: Generar PHPDoc y README automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consultas de base de datos&lt;/strong&gt;: Optimizar queries $wpdb complejas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hooks y filtros&lt;/strong&gt;: Encontrar los hooks correctos para implementar funcionalidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;donde-la-ia-de-código-requiere-precaucion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-la-ia-de-código-requiere-precaucion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde la IA de código requiere precaucion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lógica de negocio crítica&lt;/strong&gt;: Las decisiones de negocio requieren comprension del contexto que la IA no tiene&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Nunca confie ciegamente en código generado por IA para funciones de seguridad (sanitizacion, nonces, validación)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento crítico&lt;/strong&gt;: Optimizaciónes de rendimiento a bajo nivel requieren comprension profunda del stack&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-gobernanza-de-ia-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-gobernanza-de-ia-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Gobernanza de IA en WordPress&lt;/h2&gt;
&lt;p&gt;Con multiples herramientas de IA integradas en el flujo de trabajo, la gobernanza se vuelve esencial.&lt;/p&gt;
&lt;h3 id=&quot;politica-de-uso-de-ia-recomendada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#politica-de-uso-de-ia-recomendada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Politica de uso de IA recomendada&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inventario de herramientas&lt;/strong&gt;: Mantenga un registro de todas las herramientas de IA utilizadas, sus costes y sus politicas de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flujos de revision&lt;/strong&gt;: Todo contenido generado por IA debe pasar por revision humana antes de publicarse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacidad de datos&lt;/strong&gt;: No envie datos sensibles de clientes o información propietaria a herramientas de IA de terceros.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atribucion&lt;/strong&gt;: Decida si y como comunicara el uso de IA en su contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad minima&lt;/strong&gt;: Establezca estándares claros que el contenido asistido por IA debe cumplir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capacitacion&lt;/strong&gt;: Forme a su equipo en el uso efectivo y responsable de herramientas de IA.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;metricas-de-efectividad-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-efectividad-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de efectividad de IA&lt;/h3&gt;
&lt;p&gt;Mida el impacto real de la IA en su flujo de trabajo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tiempo de producción&lt;/strong&gt;: Cuanto más rápido produce contenido con vs. sin IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad&lt;/strong&gt;: Comparativa de engagement, tiempo en página y posicionamiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste por pieza&lt;/strong&gt;: Reduccion real de costes considerando herramientas + revision humana&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de rechazo&lt;/strong&gt;: Porcentaje de contenido de IA que necesita reescritura significativa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ROI&lt;/strong&gt;: Retorno de inversión de las suscripciones a herramientas de IA&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La IA es una aliada poderosa para los equipos de WordPress en 2026, pero no es una varita magica. Las herramientas más efectivas son las que amplifican las capacidades humanas en lugar de intentar reemplazarlas. La clave esta en seleccionar las herramientas correctas, implementar procesos de revision robustos y mantener la supervision humana en cada paso.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para integrar herramientas de IA en su flujo WordPress o evaluar que herramientas son adecuadas para su caso, contacte con el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio con IA&lt;/a&gt; y &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO&lt;/a&gt; que integran las mejores prácticas de IA.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;Comercio e IA en WordPress&lt;/a&gt; - Integración de IA en comercio electronico&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación de herramientas IA&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; - Optimización para búsqueda por IA&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Chatbots y IA para tiendas online&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>ai</category><category>marketing</category><category domain="tag">ai-tools</category><category domain="tag">content-generation</category><category domain="tag">wordpress-ai</category><category domain="tag">seo-optimization</category><category domain="tag">chatbots</category><category domain="tag">machine-learning</category><category domain="tag">automation</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>Passkeys para WordPress - Guia de autenticación sin contrasena 2026</title><link>https://wppoland.com/es/passkeys-wordpress-passwordless-authentication-guide/</link><guid isPermaLink="true">https://wppoland.com/es/passkeys-wordpress-passwordless-authentication-guide/</guid><description>Aprende a agregar passkeys a WordPress con WebAuthn y FIDO2, además de como funciona el registro de passkeys en iPhone, Android, Windows Hello y llaves de seguridad.</description><pubDate>Sun, 01 Feb 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Las contrasenas han sido la piedra angular de la seguridad digital durante decadas, pero sus defectos fundamentales se han vuelto imposibles de ignorar. Desde ataques de credential stuffing hasta esquemás de phishing, las contrasenas representan el eslabon más debil en la cadena de seguridad de tu WordPress. Aqui entran los &lt;strong&gt;passkeys&lt;/strong&gt; - el estándar de autenticación sin contrasena que elimina las credenciales por completo, reemplazandolas con pares de claves criptograficas vinculadas a tu identidad biometrica.&lt;/p&gt;
&lt;p&gt;En esta guía completa, exploraremos como implementar la autenticación con passkeys en WordPress, transformando el proceso de login de tu sitio en el método de autenticación más seguro disponible en 2026. Ya sea que gestiónes un blog personal, una tienda e-commerce o una red multisite empresarial, los passkeys ofrecen seguridad incomparable combinada con una experiencia de usuario excepcional.&lt;/p&gt;
&lt;p&gt;Respuesta corta: si solo quieres saber como funciona la creación de passkeys, los usuarios crean un passkey durante el inicio de sesion en un sitio compatible, luego confirman con Face ID, Touch ID, Windows Hello, biometria Android o una llave de seguridad. Para WordPress, el paso extra es habilitar un plugin que soporte WebAuthn o FIDO2, y luego registrar al menos un autenticador principal y uno de respaldo.&lt;/p&gt;
&lt;h2 id=&quot;que-son-los-passkeys-y-como-funcionan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-son-los-passkeys-y-como-funcionan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que son los passkeys y como funcionan?&lt;/h2&gt;
&lt;p&gt;Los passkeys representan un cambio de paradigma en la tecnología de autenticación, desarrollados por la FIDO Alliance y el W3C como parte del estándar WebAuthn (Web Authentication). A diferencia de las contrasenas tradicionales que dependen de secretos compartidos almacenados en servidores, los passkeys usan criptografia de clave pública para verificar la identidad sin jamás transmitir credenciales sensibles a través de redes.&lt;/p&gt;
&lt;h3 id=&quot;la-base-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-base-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La base técnica&lt;/h3&gt;
&lt;p&gt;Cuando registras un passkey, tu dispositivo genera un par único de claves criptograficas compuesto por una clave privada y una clave pública. La clave privada permanece almacenada de forma segura en tu dispositivo - protegida por sensores biometricos como Touch ID o Face ID, o por un PIN o patron. La clave pública se transmite al servidor WordPress y se almacena en la base de datos.&lt;/p&gt;
&lt;p&gt;Durante la autenticación, el servidor envia un desafio a tu dispositivo. Tu dispositivo usa la clave privada para firmar criptograficamente este desafio, demostrando la posesion de la clave sin revelarla. El servidor verifica la firma usando la clave pública almacenada, y si es válida, concede acceso. Este proceso ocurre en milisegundos y no requiere introducir ninguna contrasena.&lt;/p&gt;
&lt;h3 id=&quot;sincronizacion-entre-plataformas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sincronizacion-entre-plataformas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sincronizacion entre plataformas&lt;/h3&gt;
&lt;p&gt;Una de las características más poderosas de los passkeys es la sincronizacion entre dispositivos. Cuando registras un passkey en tu iPhone, se sincroniza automáticamente a tus otros dispositivos Apple a través de iCloud Keychain. De manera similar, los passkeys de Android se sincronizan via Google Password Manager, y los passkeys de Windows a través de cuentas Microsoft.&lt;/p&gt;
&lt;p&gt;Para escenarios entre plataformas - como iniciar sesion en WordPress en un PC Windows usando tu iPhone - los passkeys soportan transporte hibrido via códigos QR y Bluetooth.&lt;/p&gt;
&lt;h2 id=&quot;por-que-los-passkeys-son-más-seguros-que-las-contrasenas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-passkeys-son-más-seguros-que-las-contrasenas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los passkeys son más seguros que las contrasenas&lt;/h2&gt;
&lt;h3 id=&quot;inmunidad-a-ataques-de-phishing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inmunidad-a-ataques-de-phishing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inmunidad a ataques de phishing&lt;/h3&gt;
&lt;p&gt;El phishing representa uno de los vectores de ataque más comunes contra administradores WordPress. Los passkeys son inherentemente resistentes al phishing porque usan credenciales vinculadas al origen. Cada passkey esta criptograficamente atado a un dominio específico.&lt;/p&gt;
&lt;h3 id=&quot;sin-secretos-del-lado-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sin-secretos-del-lado-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sin secretos del lado del servidor&lt;/h3&gt;
&lt;p&gt;Las instalaciones WordPress tradicionales almacenan hashes de contrasenas en la base de datos. Los passkeys eliminan este riesgo completamente - los servidores solo almacenan claves publicas, que son inutiles para los atacantes.&lt;/p&gt;
&lt;h3 id=&quot;protección-contra-credential-stuffing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protección-contra-credential-stuffing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protección contra credential stuffing&lt;/h3&gt;
&lt;p&gt;Como los passkeys eliminan las contrasenas, no hay credenciales que rellenar. Cada passkey es único para tu sitio y no puede reutilizarse entre servicios.&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Caracteristica de seguridad&lt;/th&gt;&lt;th&gt;Contrasenas&lt;/th&gt;&lt;th&gt;Passkeys&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Resistencia al phishing&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;td&gt;Integrada - credenciales vinculadas al origen&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Impacto de brecha de BD&lt;/td&gt;&lt;td&gt;Alto - hashes crackeables&lt;/td&gt;&lt;td&gt;Ninguno - solo claves publicas almacenadas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Credential stuffing&lt;/td&gt;&lt;td&gt;Vulnerable&lt;/td&gt;&lt;td&gt;Inmune - sin secretos compartidos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ataques de replay&lt;/td&gt;&lt;td&gt;Posibles si interceptados&lt;/td&gt;&lt;td&gt;Imposibles - protocolo challenge-response&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Protección fuerza bruta&lt;/td&gt;&lt;td&gt;Requiere rate limiting&lt;/td&gt;&lt;td&gt;Criptograficamente infactible&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Experiencia de usuario&lt;/td&gt;&lt;td&gt;Friccion - escribir, recordar, resetear&lt;/td&gt;&lt;td&gt;Fluida - toque/mirada biometrica&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;mejores-plugins-de-passkeys-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-plugins-de-passkeys-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores plugins de passkeys para WordPress&lt;/h2&gt;
&lt;h3 id=&quot;webauthn-provider-por-markusbordihn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webauthn-provider-por-markusbordihn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WebAuthn Provider por MarkusBordihn&lt;/h3&gt;
&lt;p&gt;Este plugin WebAuthn dedicado proporciona soporte completo de passkeys con una interfaz intuitiva. Soporta autenticadores de plataforma (Touch ID, Face ID, Windows Hello) así como autenticadores itinerantes como YubiKeys.&lt;/p&gt;
&lt;h3 id=&quot;plugin-two-factor-con-webauthn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugin-two-factor-con-webauthn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugin Two Factor con WebAuthn&lt;/h3&gt;
&lt;p&gt;El plugin oficial Two Factor, mantenido por contribuidores de WordPress.org, ahora incluye soporte WebAuthn como uno de multiples métodos de autenticación.&lt;/p&gt;
&lt;h3 id=&quot;fido2webauthn-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fido2webauthn-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;FIDO2/WebAuthn para WordPress&lt;/h3&gt;
&lt;p&gt;Este plugin enfocado en empresas ofrece características avanzadas para organizaciónes que requieren politicas de autenticación estrictas, incluyendo verificación de atestacion.&lt;/p&gt;
&lt;h2 id=&quot;guia-de-implementación-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-implementación-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de implementación paso a paso&lt;/h2&gt;
&lt;h3 id=&quot;lista-de-verificación-pre-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-pre-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación pre-implementación&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Certificado SSL activo&lt;/strong&gt;: Los passkeys requieren HTTPS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versión PHP&lt;/strong&gt;: PHP 7.4 minimo, 8.0+ fuertemente recomendado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte de navegador&lt;/strong&gt;: Chrome 109+, Safari 16+, Firefox 122+, o Edge 109+&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extensiones PHP&lt;/strong&gt;: Confirma que GMP o BC Math esten habilitadas&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;instalación-y-configuración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#instalación-y-configuración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Instalación y configuración&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Instalar el plugin&lt;/strong&gt;: Navega a Plugins &gt; Anadir nuevo, busca “WebAuthn Provider” e instala&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuración inicial&lt;/strong&gt;: Ve a Ajustes &gt; WebAuthn y ejecuta la verificación de compatibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Establecer modo de autenticación&lt;/strong&gt;: Elige entre Secundario (junto a contrasenas), Primario (reemplaza contrasenas) o Mandatorio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurar roles de usuario&lt;/strong&gt;: Comienza con roles Administrador y Editor&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;proceso-de-registro-de-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-registro-de-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de registro de usuarios&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;El usuario inicia sesion con credenciales existentes&lt;/li&gt;
&lt;li&gt;WordPress muestra un aviso para registrar un passkey&lt;/li&gt;
&lt;li&gt;El usuario hace clic en “Registrar Passkey” y sigue las indicaciones del navegador&lt;/li&gt;
&lt;li&gt;El dispositivo solicita verificación biometrica&lt;/li&gt;
&lt;li&gt;Se genera la clave pública y se envia al servidor WordPress&lt;/li&gt;
&lt;li&gt;Registro completo - los futuros inicios de sesion usan solo el passkey&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;instrucciones-de-configuración-por-dispositivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#instrucciones-de-configuración-por-dispositivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Instrucciones de configuración por dispositivo&lt;/h2&gt;
&lt;h3 id=&quot;dispositivos-apple-iphone-ipad-mac&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dispositivos-apple-iphone-ipad-mac&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dispositivos Apple (iPhone, iPad, Mac)&lt;/h3&gt;
&lt;p&gt;Apple soporta completamente los passkeys a través de iCloud Keychain, sincronizando automáticamente credenciales entre tus dispositivos Apple. Requiere iOS/iPadOS 16.0 o posterior para móviles y macOS Ventura (13.0) o posterior para Mac.&lt;/p&gt;
&lt;h3 id=&quot;dispositivos-android&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dispositivos-android&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dispositivos Android&lt;/h3&gt;
&lt;p&gt;Android soporta passkeys a través de Google Password Manager y gestores de contrasenas de terceros como 1Password o Dashlane. Requiere Android 9.0 o posterior con Google Play Services actualizados.&lt;/p&gt;
&lt;h3 id=&quot;dispositivos-windows&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dispositivos-windows&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dispositivos Windows&lt;/h3&gt;
&lt;p&gt;Windows 10 (1903+) y Windows 11 soportan passkeys a través de Windows Hello y llaves de seguridad externas. Configura Windows Hello en Ajustes &gt; Cuentas &gt; Opciones de inicio de sesion.&lt;/p&gt;
&lt;h2 id=&quot;estrategia-de-migración-de-contrasenas-a-passkeys&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-migración-de-contrasenas-a-passkeys&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de migración: De contrasenas a passkeys&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-programa-piloto-semanas-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-programa-piloto-semanas-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Programa piloto (Semanas 1-2)&lt;/h3&gt;
&lt;p&gt;Comienza con un pequeño grupo de administradores expertos en tecnología: instala el plugin en modo secundario, registra passkeys para 3-5 administradores, recopila feedback.&lt;/p&gt;
&lt;h3 id=&quot;fase-2-despliegue-opcional-semanas-3-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-despliegue-opcional-semanas-3-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Despliegue opcional (Semanas 3-6)&lt;/h3&gt;
&lt;p&gt;Expande a todas las cuentas de administrador y editor: habilita avisos de passkey durante login, envia documentación, monitorea tasas de adopcion.&lt;/p&gt;
&lt;h3 id=&quot;fase-3-mandatorio-para-roles-privilegiados-semanas-7-10&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-mandatorio-para-roles-privilegiados-semanas-7-10&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Mandatorio para roles privilegiados (Semanas 7-10)&lt;/h3&gt;
&lt;p&gt;Requiere passkeys para cuentas de alto privilegio: establece modo mandatorio para roles Administrador y Editor, deshabilita autenticación por contrasena para estos roles.&lt;/p&gt;
&lt;h3 id=&quot;fase-4-despliegue-organizaciónal-semanas-11-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-despliegue-organizaciónal-semanas-11-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Despliegue organizaciónal (Semanas 11-12)&lt;/h3&gt;
&lt;p&gt;Extiende passkeys a todos los roles de usuario, proporcionando multiples canales de soporte durante la transicion.&lt;/p&gt;
&lt;h2 id=&quot;conclusion-el-futuro-es-sin-contrasenas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-el-futuro-es-sin-contrasenas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: El futuro es sin contrasenas&lt;/h2&gt;
&lt;p&gt;Los passkeys representan el avance más significativo en tecnología de autenticación desde la invencion de la propia contrasena. Al implementar passkeys en tu sitio WordPress, eliminas los principales vectores de ataque que comprometen sitios web diariamente - phishing, credential stuffing y brechas de bases de datos - mientras mejoras simultaneamente la experiencia de usuario.&lt;/p&gt;
&lt;p&gt;A medida que avanzamos en 2026, la autenticación sin contrasena se esta convirtiendo en el estándar esperado, no en una función avanzada. La adopcion temprana posiciona tu sitio WordPress a la vanguardia de las mejores prácticas de seguridad.&lt;/p&gt;
&lt;p&gt;Comienza tu implementación de passkeys hoy. El futuro sin contrasenas esta aquí - y es más seguro que nunca.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Listo para asegurar tu sitio WordPress con passkeys?&lt;/strong&gt; Contacta a WPPoland para asistencia experta en implementación, auditorias de seguridad y mantenimiento WordPress continuo.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de auditoria de seguridad WordPress&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>security</category><category>wordpress-basics</category><category>development</category><category domain="tag">passkeys</category><category domain="tag">passwordless</category><category domain="tag">webauthn</category><category domain="tag">fido2</category><category domain="tag">biometric-authentication</category><category domain="tag">touch-id</category><category domain="tag">face-id</category><category domain="tag">security</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>Soberania digital: Por que el código abierto importa en 2026</title><link>https://wppoland.com/es/digital-sovereignty-open-source-2026/</link><guid isPermaLink="true">https://wppoland.com/es/digital-sovereignty-open-source-2026/</guid><description>Protege los datos de tu empresa eligiendo CMS de código abierto en lugar de plataformas SaaS cerradas en la era de la IA. Aprende sobre propiedad de datos, cumplimiento GDPR y riesgos de dependencia del proveedor.</description><pubDate>Thu, 29 Jan 2026 19:15:16 GMT</pubDate><content:encoded>&lt;p&gt;La soberania digital se ha convertido en uno de los temas más críticos para las empresas que operan en la economia digital de 2026. A medida que las plataformas SaaS cerradas continuan consolidandose y las preocupaciones sobre la privacidad de datos se intensifican con la expansion de la IA, la capacidad de controlar tus propios datos y operaciones digitales no es solo una ventaja competitiva - es una necesidad estrategica.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;introduccion-el-imperativo-de-la-soberania-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-el-imperativo-de-la-soberania-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: El imperativo de la soberania digital&lt;/h2&gt;
&lt;p&gt;La era de confiar ciegamente en plataformas SaaS con tus datos empresariales esta llegando a su fin. En 2026, multiples factores convergen para hacer de la soberania digital una prioridad ejecutiva:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El entrenamiento de IA con datos de clientes&lt;/strong&gt; por parte de proveedores SaaS plantea nuevos riesgos de privacidad sin precedentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Las subidas de precios agresivas&lt;/strong&gt; de plataformas como Salesforce, Adobe y otros han demostrado los riesgos del vendor lock-in&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Las regulaciones europeas&lt;/strong&gt; (GDPR, Digital Services Act, AI Act) imponen requisitos cada vez más estrictos sobre el procesamiento de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los conflictos geopoliticos&lt;/strong&gt; han demostrado que la dependencia de infraestructura extranjera puede ser un riesgo de continuidad del negocio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WordPress, como el CMS de código abierto que impulsa el 43% de la web, ofrece una alternativa concreta: propiedad total de datos, portabilidad completa y una comunidad global que garantiza la continuidad del software independientemente de cualquier empresa individual.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;el-problema-del-vendor-lock-in-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-del-vendor-lock-in-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema del vendor lock-in en 2026&lt;/h2&gt;
&lt;h3 id=&quot;el-ciclo-de-dependencia-saas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ciclo-de-dependencia-saas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ciclo de dependencia SaaS&lt;/h3&gt;
&lt;p&gt;Las plataformas SaaS cerradas crean un ciclo de dependencia que se profundiza con el tiempo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Adopcion inicial&lt;/strong&gt;: Configuración fácil, precios de entrada atractivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración profunda&lt;/strong&gt;: Los datos, flujos de trabajo y procesos se entrelazan con la plataforma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aumento de costos&lt;/strong&gt;: Subidas de precio anuales del 15-30%, nuevos tiers de precios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dificultad de salida&lt;/strong&gt;: Formatos propietarios, APIs limitadas, costos de migración prohibitivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencia total&lt;/strong&gt;: El negocio no puede operar sin la plataforma&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;riesgos-concretos-del-lock-in&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgos-concretos-del-lock-in&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgos concretos del lock-in&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Riesgo&lt;/th&gt;&lt;th&gt;Impacto&lt;/th&gt;&lt;th&gt;Ejemplo real&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Subida de precios&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;+30-50% anual&lt;/td&gt;&lt;td&gt;Salesforce aumentando precios un 9% en 2024&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cambio de terminos&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Perdida de funcionalidad&lt;/td&gt;&lt;td&gt;Adobe cambiando terminos de licencia de contenido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Entrenamiento IA&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Datos usados sin consentimiento&lt;/td&gt;&lt;td&gt;Zoom usando datos de reuniones para entrenar IA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cierre de plataforma&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Perdida total de datos&lt;/td&gt;&lt;td&gt;Google eliminando productos con 30 dias de aviso&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Regulacion&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Incumplimiento legal&lt;/td&gt;&lt;td&gt;Transferencia de datos UE-EEUU tras Schrems II&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lo-que-el-código-abierto-realmente-te-da-y-lo-que-no&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-el-código-abierto-realmente-te-da-y-lo-que-no&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que el código abierto realmente te da (y lo que no)&lt;/h2&gt;
&lt;p&gt;“Soberania digital” se utiliza como eslogan de marketing. La versión honesta es más estrecha: con código abierto puedes auditar el código, elegir la jurisdicción donde residen los datos y migrar sin pagar peaje de salida. No puedes escapar por completo de la infraestructura bajo jurisdicción estadounidense, porque los navegadores de tus visitantes seguirán llegando a edges de Cloudflare, iframes de checkout de Stripe y endpoints de Google reCAPTCHA, esté donde esté tu origin. El objetivo realista es un flujo de datos defendible bajo el RGPD, no exposición cero a EE. UU.&lt;/p&gt;
&lt;p&gt;Lo que WordPress sobre infraestructura europea te da y Wix, Squarespace o HubSpot no pueden: una base de datos MySQL o MariaDB que puedes volcar con &lt;code&gt;mysqldump&lt;/code&gt; a las tres de la mañana sin pedir permiso a nadie. Ficheros en un sistema de ficheros que puedes mover con &lt;code&gt;rsync&lt;/code&gt; a otro proveedor en una tarde. Una base de código GPL que sobrevive a cualquier empresa que se hunda, sea adquirida o pivote a precios solo-enterprise. Tras la disputa de Automattic con WP Engine a finales de 2024, que recordó a todos que incluso los ecosistemas de código abierto tienen política, la garantía GPL aguanta: tu código sigue funcionando aun cuando la gobernanza se pone fea.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-schrems-ii-que-la-mayoría-de-sitios-wordpress-aún-tiene&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-schrems-ii-que-la-mayoría-de-sitios-wordpress-aún-tiene&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema Schrems II que la mayoría de sitios WordPress aún tiene&lt;/h3&gt;
&lt;p&gt;Una instalación WordPress autoalojada en Hetzner Falkenstein parece soberana sobre el papel. Luego enumeras las llamadas de red que un sitio típico realmente hace:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Fonts CDN (declarada transferencia ilícita a tercer país por LG München I, 20 de enero de 2022, sentencia 3 O 17493/20)&lt;/li&gt;
&lt;li&gt;Google Analytics 4 o GTM (resoluciones de la AEPD, CNIL, Garante y DSB entre 2022 y 2024)&lt;/li&gt;
&lt;li&gt;Gravatar (Automattic, jurisdicción estadounidense)&lt;/li&gt;
&lt;li&gt;reCAPTCHA, embeds de YouTube, embeds de Maps&lt;/li&gt;
&lt;li&gt;Mailchimp o HubSpot para formularios&lt;/li&gt;
&lt;li&gt;Cloudflare sin el complemento EU Data Localization activado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada uno es una exposición Schrems II. El contrato de encargo de tratamiento que firmaste con Hetzner no cubre ninguno. La AEPD ha resuelto sanciones por estos puntos desde 2022 y el ENS (Esquema Nacional de Seguridad) para entidades públicas y proveedores ya exige documentación expresa de estos flujos. Arreglarlo es fontanería sin glamour: alojar fuentes localmente con reglas en &lt;code&gt;wp-config.php&lt;/code&gt; o el plugin OMGF, sustituir GA4 por Plausible o Matomo en host europeo (Stackscale en Madrid y Arsys en Logroño son opciones nacionales con DPA en castellano), cambiar Gravatar por un schema Person de autor con imagen autoalojada, abandonar reCAPTCHA por hCaptcha (alojado en Hetzner) o Cloudflare Turnstile con localización UE, encaminar formularios a través de Brevo o MailerLite EU. Stripe se queda, pero configúralo con datos de comerciante residentes en UE y verifica el adendo del DPA. Cloudflare se queda si activas la Data Localization Suite (complemento de pago) o migras a bunny.net.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-cuesta-realmente-alojar-solo-en-la-ue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-cuesta-realmente-alojar-solo-en-la-ue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que cuesta realmente alojar solo en la UE&lt;/h3&gt;
&lt;p&gt;Cifras honestas del trabajo de agencia 2025-2026: un stack monoregión en UE en Hetzner o Stackscale Madrid más Plausible más Brevo cuesta del orden de dos a tres veces el equivalente en AWS más CloudFront más SES más GA4 con tráfico pequeño-mediano. La prima compra menos párrafos de cláusulas tipo SCC que discutir y una respuesta defendible cuando la AEPD pregunta a dónde fluyen los datos personales. Pondéralo contra el techo de sanción RGPD del 4 por ciento de la facturación anual global, más la responsabilidad personal de los órganos de dirección bajo NIS2 transpuesta en España por el Real Decreto-ley 7/2025 desde los plazos de transposición de octubre de 2024. Para una pyme española, una multa AEPD de 30.000 euros por Google Fonts duele más que tres años de hosting europeo premium.&lt;/p&gt;
&lt;h3 id=&quot;la-afirmación-sin-lock-in-auditada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-afirmación-sin-lock-in-auditada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La afirmación “sin lock-in”, auditada&lt;/h3&gt;
&lt;p&gt;El código abierto elimina el lock-in contractual. No elimina el lock-in operativo. Un sitio WordPress con 40 plugins activos, campos ACF Pro, bloques Gutenberg a medida y un tema personalizado es genuinamente portable en sentido legal, pero moverlo sigue costando una semana de developer. La portabilidad que importa está al nivel de base de datos: SQL estándar, el formato de exportación WXR, ficheros en disco que puedes empaquetar con &lt;code&gt;tar&lt;/code&gt; y llevarte. Ninguna plataforma SaaS ofrece este suelo, motivo por el que incluso una migración WordPress compleja es trabajo finito, mientras que una migración Webflow o HubSpot puede ser infinita.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;gdpr-y-protección-de-datos-en-la-era-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gdpr-y-protección-de-datos-en-la-era-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GDPR y protección de datos en la era de la IA&lt;/h2&gt;
&lt;h3 id=&quot;nuevos-desafios-de-privacidad-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nuevos-desafios-de-privacidad-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nuevos desafios de privacidad en 2026&lt;/h3&gt;
&lt;p&gt;La expansion de la IA ha creado nuevas preocupaciones de privacidad que las plataformas SaaS no pueden resolver fácilmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entrenamiento de modelos con datos de clientes&lt;/strong&gt;: Muchas plataformas SaaS incluyen clausulas que permiten usar datos para entrenar IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procesamiento en jurisdicciones multiples&lt;/strong&gt;: Los datos pueden procesarse en servidores alrededor del mundo sin control&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retención de datos indefinida&lt;/strong&gt;: Los modelos de IA pueden “recordar” datos incluso despues de su eliminación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transferencias transfronterizas&lt;/strong&gt;: El flujo de datos entre la UE y terceros paises sigue siendo legalmente complejo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;como-el-autoalojamiento-simplifica-el-cumplimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-el-autoalojamiento-simplifica-el-cumplimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como el autoalojamiento simplifica el cumplimiento&lt;/h3&gt;
&lt;p&gt;WordPress autoalojado en servidores europeos simplifica dramaticamente el cumplimiento del GDPR:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo: Configuración de privacidad en wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_PRIVACY_EXPORT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DATA_RETENTION_DAYS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;365&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar servicios externos que filtran datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_HTTP_BLOCK_EXTERNAL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_ACCESSIBLE_HOSTS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;api.wordpress.org,*.github.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Artículo 28 GDPR&lt;/strong&gt;: Control total sobre procesadores de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artículo 44-49 GDPR&lt;/strong&gt;: Sin transferencias transfronterizas no autorizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artículo 17 GDPR&lt;/strong&gt;: Derecho al olvido implementable directamente en la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artículo 20 GDPR&lt;/strong&gt;: Portabilidad de datos nativa&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;alternativas-de-código-abierto-para-cada-necesidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativas-de-código-abierto-para-cada-necesidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativas de código abierto para cada necesidad&lt;/h2&gt;
&lt;p&gt;No se trata solo de CMS. La soberania digital se extiende a toda la pila tecnológica:&lt;/p&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Necesidad&lt;/th&gt;&lt;th&gt;SaaS cerrado&lt;/th&gt;&lt;th&gt;Alternativa de código abierto&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CMS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Wix, Squarespace&lt;/td&gt;&lt;td&gt;WordPress, Ghost&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;E-commerce&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Shopify&lt;/td&gt;&lt;td&gt;WooCommerce, Magento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Email marketing&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Mailchimp&lt;/td&gt;&lt;td&gt;Mautic, Listmonk&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Analytics&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Google Analytics&lt;/td&gt;&lt;td&gt;Matomo, Plausible&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CRM&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Salesforce&lt;/td&gt;&lt;td&gt;SuiteCRM, EspoCRM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Colaboración&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Google Workspace&lt;/td&gt;&lt;td&gt;Nextcloud, Collabora&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Automatizacion&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Zapier&lt;/td&gt;&lt;td&gt;n8n, Huginn&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Chat&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Slack&lt;/td&gt;&lt;td&gt;Mattermost, Rocket.Chat&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Cada una de estas alternativas ofrece control total de datos, costos predecibles y libertad de personalización.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estrategia-de-implementación-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-implementación-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de implementación práctica&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-auditoria-de-dependencias-semana-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-auditoria-de-dependencias-semana-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Auditoria de dependencias (Semana 1-2)&lt;/h3&gt;
&lt;p&gt;Crea un inventario completo de todas las plataformas SaaS que usa tu organización. Para cada una, documenta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que datos almacena&lt;/li&gt;
&lt;li&gt;En que jurisdiccion se procesan&lt;/li&gt;
&lt;li&gt;Que opciones de exportacion existen&lt;/li&gt;
&lt;li&gt;Cual seria el impacto de perder acceso&lt;/li&gt;
&lt;li&gt;Que alternativas de código abierto existen&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-migración-prioritaria-semanas-3-8&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-migración-prioritaria-semanas-3-8&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Migración prioritaria (Semanas 3-8)&lt;/h3&gt;
&lt;p&gt;Comienza con los sistemas de mayor riesgo o mayor impacto:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;CMS y sitio web&lt;/strong&gt;: Migra a WordPress autoalojado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analytics&lt;/strong&gt;: Cambia a Matomo autoalojado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email marketing&lt;/strong&gt;: Implementa Mautic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios y datos de clientes&lt;/strong&gt;: Centraliza en tu propia infraestructura&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-3-consolidacion-y-optimización-semanas-9-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-consolidacion-y-optimización-semanas-9-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Consolidacion y optimización (Semanas 9-12)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configura backups automáticos offsite&lt;/li&gt;
&lt;li&gt;Implementa monitoreo de seguridad&lt;/li&gt;
&lt;li&gt;Establece procesos de actualización regulares&lt;/li&gt;
&lt;li&gt;Documenta toda la arquitectura para el equipo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;el-costo-real-del-código-abierto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-costo-real-del-código-abierto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El costo real del código abierto&lt;/h2&gt;
&lt;p&gt;Un mito comun es que el código abierto es “gratuito”. El software en si es libre, pero hay costos reales:&lt;/p&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Concepto&lt;/th&gt;&lt;th&gt;SaaS cerrado&lt;/th&gt;&lt;th&gt;Código abierto autoalojado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Software&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;$200-2000/mes&lt;/td&gt;&lt;td&gt;$0 (gratis)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Hosting&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Incluido&lt;/td&gt;&lt;td&gt;$50-200/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mantenimiento&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Incluido&lt;/td&gt;&lt;td&gt;$100-500/mes (o equipo interno)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Responsabilidad del proveedor&lt;/td&gt;&lt;td&gt;Tu responsabilidad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Personalización&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Limitada&lt;/td&gt;&lt;td&gt;Ilimitada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Control de datos&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Ninguno&lt;/td&gt;&lt;td&gt;Total&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Costo total 3 años&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;$7,200-72,000&lt;/td&gt;&lt;td&gt;$5,400-25,200&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;En la mayoria de los escenarios empresariales, el código abierto es significativamente más economico a largo plazo, especialmente cuando se consideran los costos de escalamiento de las plataformas SaaS.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;seguridad-en-el-autoalojamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-en-el-autoalojamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad en el autoalojamiento&lt;/h2&gt;
&lt;p&gt;La seguridad es la preocupacion más comun al considerar el autoalojamiento. Sin embargo, con las prácticas adecuadas, WordPress autoalojado puede ser extremadamente seguro:&lt;/p&gt;
&lt;h3 id=&quot;medidas-de-seguridad-esenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medidas-de-seguridad-esenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medidas de seguridad esenciales&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones automáticas&lt;/strong&gt; del core, plugins y temas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firewall a nivel de servidor&lt;/strong&gt; (Cloudflare WAF, Fail2Ban)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups diarios&lt;/strong&gt; automatizados y almacenados offsite&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo 24/7&lt;/strong&gt; de uptime y seguridad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSL/TLS&lt;/strong&gt; con certificados actualizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autenticación de dos factores&lt;/strong&gt; para todos los usuarios administrativos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress-vs-saas-mitos-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-vs-saas-mitos-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress vs SaaS: Mitos de seguridad&lt;/h3&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Mito&lt;/th&gt;&lt;th&gt;Realidad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;”SaaS es más seguro”&lt;/td&gt;&lt;td&gt;SaaS centraliza el riesgo: un breach afecta a todos los clientes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”WordPress es hackeado constantemente”&lt;/td&gt;&lt;td&gt;Los hackeos ocurren por falta de mantenimiento, no por defectos inherentes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”No tengo equipo para mantenerlo”&lt;/td&gt;&lt;td&gt;Servicios de mantenimiento WordPress cuestan $100-500/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”Es demasiado complejo”&lt;/td&gt;&lt;td&gt;Paneles como GridPane simplifican la gestión al nivel de cPanel&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;la-acumulación-regulatoria-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-acumulación-regulatoria-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La acumulación regulatoria de 2026&lt;/h2&gt;
&lt;p&gt;El stack regulatorio de la UE se ha vuelto mucho más pesado entre octubre de 2024 y la segunda mitad de 2026, y la mayor parte cae sobre decisiones de infraestructura, no sobre el contenido que publicas.&lt;/p&gt;
&lt;p&gt;Los plazos de transposición de NIS2 vencieron en octubre de 2024. España la ha transpuesto mediante el Real Decreto-ley 7/2025 bajo supervisión del INCIBE-CERT y CCN-CERT, con coordinación a través del Centro Criptológico Nacional. Si tu sitio entra en el ámbito de entidades “esenciales” o “importantes” (medianas empresas en sectores críticos, más sus proveedores de servicios digitales), debes a la CSIRT nacional un aviso temprano en 24 horas para incidentes significativos y un informe completo en 72 horas. Los órganos de dirección responden personalmente por incumplimientos. Efecto práctico sobre un stack WordPress: necesitas un runbook real de respuesta a incidentes, MFA en cada cuenta de admin y acceso registrado al servidor de base de datos. WP Activity Log, WP 2FA y un destino syslog fuera del host son el mínimo aceptable. Las entidades del sector público y sus proveedores deben además alinearse con el ENS (Esquema Nacional de Seguridad) en categoría media o alta.&lt;/p&gt;
&lt;p&gt;DORA se aplica desde el 17 de enero de 2025 a entidades financieras y a sus proveedores ICT. En España la implementación corre vía Banco de España y CNMV, con supervisión extendida a terceros ICT críticos. Si gestionas WooCommerce para un cliente regulado, tu proveedor de hosting, tu CDN y los proveedores de plugins de pago entran ahora en el ámbito como terceros ICT. Los requisitos contractuales (estrategia de salida, derechos de auditoría, divulgación de subprocesadores) se leen como una checklist de cosas que los builders SaaS de sitios web no pueden ofrecer.&lt;/p&gt;
&lt;p&gt;El AI Act entró en vigor por fases desde el 2 de febrero de 2025 con reglas de prácticas prohibidas, luego obligaciones para IA de uso general desde el 2 de agosto de 2025, con reglas de sistemas de alto riesgo durante 2026. Para operadores WordPress el impacto inmediato es transparencia: el contenido generado por IA debe etiquetarse, y cualquier chatbot que conectes a WooCommerce que gestione reclamaciones o precios cae bajo las reglas de divulgación.&lt;/p&gt;
&lt;p&gt;eIDAS 2.0 entró en vigor en mayo de 2024, con el despliegue de la Cartera de Identidad Digital de la UE entre 2026 y 2027. En España el proceso pasa por la FNMT-RCM y el DNIe digital. Si tu sitio recoge datos de identidad para KYC, sigue los plazos de integración de la cartera en el Estado miembro.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-esto-significa-para-un-stack-wordpress-soberano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-esto-significa-para-un-stack-wordpress-soberano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que esto significa para un stack WordPress soberano&lt;/h3&gt;
&lt;p&gt;Hosting en una jurisdicción UE con un DPA publicado que cubra las responsabilidades del artículo 28 del RGPD. Hetzner, OVH, Scaleway, IONOS y Mittwald publican todos DPAs viables; en el contexto español, Stackscale Madrid y Arsys Logroño ofrecen acuerdos equivalentes con soporte legal en castellano. Cifrado de copias de seguridad con una clave que custodias tú, no el proveedor. Acceso de admin registrado conservado al menos 12 meses como prueba NIS2. Una lista documentada de subprocesadores (tu CDN, tu proveedor de email transaccional, tu servicio de monitorización) revisada trimestralmente. Un procedimiento de restauración probado, porque DORA lo exige expresamente para entidades en el ámbito. Y un registro de actividades de tratamiento bajo el artículo 30 del RGPD, que la AEPD pide de inmediato en cualquier requerimiento.&lt;/p&gt;
&lt;h3 id=&quot;ia-autoalojada-ahora-es-realista&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ia-autoalojada-ahora-es-realista&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IA autoalojada ahora es realista&lt;/h3&gt;
&lt;p&gt;Ejecutar Ollama con Llama 3.1 o Mistral en un servidor GPU dedicado (Hetzner GEX44 con RTX 4000 SFF, OVH AI Endpoints en Gravelines) es la alternativa de 2026 a canalizar contenido a través de OpenAI. Para generación de borradores, resúmenes y traducción contra tu propio contenido, esto ya no es un proyecto de investigación. Es un patrón arquitectónico documentado y elimina los casos límite de transparencia del AI Act que vienen con APIs LLM estadounidenses. Para empresas españolas que deben mantener limpios al mismo tiempo el RGPD y las obligaciones de información a la AEPD sobre tratamiento automatizado, suele ser la única vía defendible.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-dónde-empezar-en-orden&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-dónde-empezar-en-orden&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por dónde empezar, en orden&lt;/h2&gt;
&lt;p&gt;Si has llegado hasta aquí esperando una lista de pasos en lugar de un manifiesto, este es el orden que usamos en auditorías de cliente.&lt;/p&gt;
&lt;p&gt;Inventaria las llamadas de red que tu sitio realmente hace. Abre el sitio en un perfil de navegador limpio, recorre cada página clave y vuelca la pestaña network. Cada dominio de tercero en esa lista es o un flujo de datos documentado o un pasivo Schrems II. La lista suele ser más larga de lo que el operador esperaba.&lt;/p&gt;
&lt;p&gt;Elige los tres proveedores de mayor riesgo y sustitúyelos. Casi siempre Google Fonts (alojar localmente), Google Analytics 4 (Plausible en el hosting europeo de plausible.io o autoalojado en Hetzner, o Matomo) y formularios Mailchimp/HubSpot (Brevo, MailerLite EU o un simple &lt;code&gt;wp_mail&lt;/code&gt; con Postmark región UE). Estos tres cambios resuelven la mayor parte de las quejas RGPD que vemos en trabajo de DPIA relacionado con formularios.&lt;/p&gt;
&lt;p&gt;Mueve el hosting a un proveedor con residencia UE con un DPA viable, si todavía estás en un host con jurisdicción estadounidense. Hetzner Cloud o Dedicated, OVH, Scaleway, IONOS, Mittwald, o Stackscale Madrid y Arsys Logroño para clientes españoles que quieran cercanía física a Madrid y Barcelona y soporte legal en castellano.&lt;/p&gt;
&lt;p&gt;Configura la Cloudflare Data Localization Suite si mantienes Cloudflare, o migra a bunny.net (esloveno, basado en la UE). Desactiva las funciones de Cloudflare que no necesitas; cuantas más funciones actives, más subprocesadores heredas.&lt;/p&gt;
&lt;p&gt;Documenta la exposición residual a EE. UU. que no puedes eliminar (Stripe, el navegador del visitante alcanzando infraestructura estadounidense, las pasarelas Apple/Google Push Notification para cualquier funcionalidad PWA) y redacta la justificación SCC más medidas suplementarias una vez. Inclúyela en tu registro de actividades de tratamiento bajo el artículo 30 del RGPD y deja de relitigarla en cada proyecto.&lt;/p&gt;
&lt;p&gt;Esta es la versión de soberania digital que sobrevive a una auditoría real. No libertad, no control, solo un mapa defendible de a dónde va cada byte de datos personales y un plan para cuando uno de esos proveedores sea comprado, vulnerado o invalidado por la próxima decisión Schrems.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditorias de seguridad&lt;/a&gt; para comenzar tu camino hacia la soberania digital.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category>security</category><category domain="tag">digital-sovereignty</category><category domain="tag">open-source</category><category domain="tag">gdpr</category><category domain="tag">data-privacy</category><category domain="tag">wordpress</category><category domain="tag">saas</category><category domain="tag">vendor-lock-in</category><category domain="tag">guide</category><category domain="tag">2026</category><enclosure url="https://wppoland.com/images/og/modern-office-coding-setup.jpg" type="image/jpeg"/></item><item><title>Auditoria práctica de accesibilidad: herramientas y flujo de trabajo</title><link>https://wppoland.com/es/practical-accessibility-auditing-workflow/</link><guid isPermaLink="true">https://wppoland.com/es/practical-accessibility-auditing-workflow/</guid><description>Una guía práctica para auditar sitios WordPress en cumplimiento WCAG 2.2 usando herramientas automatizadas y pruebas manuales. Flujo de trabajo completo desde la evaluación hasta la remediacion.</description><pubDate>Thu, 29 Jan 2026 19:15:16 GMT</pubDate><content:encoded>&lt;p&gt;El plazo del 28 de junio de 2025 del European Accessibility Act ya pasó. Si construye o mantiene sitios WordPress para clientes que venden a consumidores en la UE (e-commerce, banca, transporte, ticketing, libros electronicos), esos clientes ya cargan con exposicion legal directa si su sitio no cumple WCAG 2.2 AA. La auditoria dejo de ser un “anadido amable de consultoria”; es el documento que el equipo legal del cliente pedira cuando llegue la primera reclamacion.&lt;/p&gt;
&lt;p&gt;En Espana, el marco resulta familiar: el Real Decreto 1112/2018 transpone la Directiva (UE) 2016/2102 y obliga a publicar declaracion de accesibilidad en sitios del sector público, con el Observatorio de Accesibilidad Web (OAW) realizando auditorias periodicas y el Ministerio de Asuntos Economicos y Transformacion Digital coordinando la conformidad. La EAA extiende esta obligacion al sector privado, y el cruce con el RGPD aparece en cuanto el cliente tiene formularios o cuentas.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía describe el flujo de trabajo que aplicamos en proyectos WordPress reales: por que herramientas automatizadas empezar, donde dejan de ser utiles y como tratar las partes de WCAG 2.2 que solo una persona con teclado y NVDA puede verificar.&lt;/p&gt;
&lt;h2 id=&quot;donde-vive-realmente-la-exposicion-legal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-vive-realmente-la-exposicion-legal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde vive realmente la exposicion legal&lt;/h2&gt;
&lt;p&gt;Un encuadre util antes de abrir cualquier herramienta: la EAA no cubre solo “sector público”. Cubre servicios orientados al consumidor. Clientes privados que auditamos en los ultimos doce meses y estaban dentro del ambito: una libreria espanola de libros electronicos, un e-commerce aleman de mobiliario y una pequena plataforma de reservas en WooCommerce. Ninguno se dio cuenta hasta que su responsable de cumplimiento levanto el punto.&lt;/p&gt;
&lt;p&gt;Uno de esos clientes (tienda WooCommerce vendiendo a Alemania y Francia) recibio reclamacion escrita dos meses despues del lanzamiento. El detonante fue un paso de checkout personalizado en el que el control “continuar al pago” se construyo como &lt;code&gt;&amp;#x3C;div onclick=&quot;...&quot;&gt;&lt;/code&gt; en lugar de button. Los usuarios de teclado no podian alcanzarlo y NVDA no anunciaba nada al recibir foco. La correccion fue pequena (sustituir por &lt;code&gt;&amp;#x3C;button type=&quot;button&quot;&gt;&lt;/code&gt;, restaurar el manejo nativo de foco, anunciar la transicion con &lt;code&gt;aria-live=&quot;polite&quot;&lt;/code&gt;), pero el ida y vuelta legal absorbio aproximadamente una semana de tiempo de la agencia. Asi es la forma del riesgo: no una demanda dramatica, sino correspondencia lenta y costosa que se evita auditando antes del lanzamiento y en cada PR que toque el DOM.&lt;/p&gt;
&lt;p&gt;WCAG 2.2 anade tres criterios que se asignan directamente a fallos comunes en WordPress y WooCommerce:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2.4.11 Foco no oscurecido (AA)&lt;/strong&gt; y &lt;strong&gt;2.4.13 Apariencia del foco (AAA)&lt;/strong&gt; - cabeceras sticky, banners de cookies y widgets de chat tapan rutinariamente el elemento enfocado. Conviene revisarlo en cada plantilla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2.5.7 Movimientos de arrastre (AA)&lt;/strong&gt; - cualquier interaccion que solo se resuelva arrastrando (toggles tipo slider, ordenacion kanban en el admin, sliders de comparacion de imagenes) necesita alternativa de puntero unico, como botones mas/menos o entrada por teclado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2.5.8 Tamano de objetivo minimo (AA)&lt;/strong&gt; - los objetivos interactivos deben medir al menos 24×24 pixeles CSS. La mayoria de pies de tema, enlaces de paginacion y tiras de iconos sociales fallan esto en movil por defecto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El nucleo de WordPress tiene accesibilidad decente para el editor de bloques y las primitivas de navegacion del front. Los fallos que encontramos en auditoria viven casi siempre en tres sitios: bloques ACF personalizados (que no heredan el cableado ARIA de Gutenberg), sobrescrituras de componentes del tema y page builders de terceros. Planifique la auditoria alrededor de eso, no del nucleo.&lt;/p&gt;
&lt;h2 id=&quot;fase-1-escaneo-automatizado---lo-que-de-verdad-cazan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-escaneo-automatizado---lo-que-de-verdad-cazan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Escaneo automatizado - lo que de verdad cazan&lt;/h2&gt;
&lt;p&gt;Sea honesto con el cliente sobre esta cifra: las herramientas automaticas de accesibilidad cubren mas o menos del 30 al 40 por ciento de los criterios de exito WCAG. Detectan bien atributos alt ausentes, etiquetas de formulario faltantes, contraste insuficiente en texto estatico, atributos de idioma ausentes, IDs duplicados y ARIA visiblemente roto. No le diran si el alt es significativo, si el orden de foco tiene sentido, si el lector de pantalla anuncia un cambio de estado, o si su carrusel personalizado funciona sin raton. El 60-70% restante exige una persona con teclado, lector de pantalla y paciencia.&lt;/p&gt;
&lt;p&gt;Ejecute las comprobaciones automatizadas primero porque son baratas y limpian los fallos obvios antes de invertir tiempo en pruebas manuales. Empiece por axe DevTools (Deque) como extension de navegador durante el desarrollo: las etiquetas WCAG 2.2 entran directamente al informe y la separacion entre “necesita revision” y violaciones definitivas mantiene los falsos positivos cerca de cero. Escanee cada plantilla distinta (portada, archivo, single, producto, checkout, contacto, login, resultados de busqueda) y no cada URL: la mayoria de sitios WordPress espanoles tiene menos de diez plantillas diferentes aunque sirvan miles de paginas. WebAIM WAVE sirve como segunda opinion, sobre todo para visualizar la estructura de encabezados cuando un redactor escribio h4 “porque queda bien”. Pa11y en GitHub Actions o Bitbucket Pipelines atrapa regresiones en el PR donde son mas baratas de arreglar. Tenon API es excesivo para un solo sitio y vale la pena montarlo cuando se cruzan cinco o seis sitios cliente bajo la misma agencia.&lt;/p&gt;
&lt;h3 id=&quot;axe-devtools&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#axe-devtools&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Axe DevTools&lt;/h3&gt;
&lt;p&gt;Axe es la herramienta de referencia de la industria para pruebas automatizadas de accesibilidad. Funciona como una extensión del navegador y se integra con frameworks de pruebas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como usarlo:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instale la extensión Axe DevTools en Chrome o Firefox&lt;/li&gt;
&lt;li&gt;Navegue a la página que desea auditar&lt;/li&gt;
&lt;li&gt;Abra DevTools (F12) y seleccione la pestana “Axe”&lt;/li&gt;
&lt;li&gt;Haga clic en “Scan all of my page”&lt;/li&gt;
&lt;li&gt;Revise los resultados agrupados por severidad&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Que detecta:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contraste de color insuficiente&lt;/li&gt;
&lt;li&gt;Imágenes sin texto alternativo&lt;/li&gt;
&lt;li&gt;Formularios sin etiquetas&lt;/li&gt;
&lt;li&gt;Problemás de estructura de encabezados&lt;/li&gt;
&lt;li&gt;Atributos ARIA incorrectos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wave-web-accessibility-evaluation-tool&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wave-web-accessibility-evaluation-tool&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WAVE (Web Accessibility Evaluation Tool)&lt;/h3&gt;
&lt;p&gt;WAVE proporciona una capa visual sobre su página, mostrando problemas directamente en el contexto del diseño.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja clave:&lt;/strong&gt; WAVE es excelente para comunicar problemas a disenadores y clientes no técnicos porque muestra visualmente donde estan los errores.&lt;/p&gt;
&lt;h3 id=&quot;lighthouse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lighthouse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lighthouse&lt;/h3&gt;
&lt;p&gt;Integrado en Chrome DevTools, Lighthouse proporciona una puntuacion general de accesibilidad junto con metricas de rendimiento y &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejor práctica:&lt;/strong&gt; Ejecute Lighthouse en las 5-10 páginas más criticas de su sitio, incluyendo la página de inicio, páginas de producto/servicio y formularios de contacto.&lt;/p&gt;
&lt;h2 id=&quot;fase-2-solo-teclado-en-cada-plantilla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-solo-teclado-en-cada-plantilla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Solo teclado, en cada plantilla&lt;/h2&gt;
&lt;p&gt;Esta es la prueba manual mas reveladora y donde viven varios criterios WCAG 2.2 que decidiran cualquier reclamacion. Desconecte el raton. Tab por cada plantilla distinta, desde la cabecera hasta el pie, y luego Shift+Tab de regreso. Active cada elemento interactivo con Enter o Espacio.&lt;/p&gt;
&lt;h3 id=&quot;teclas-esenciales-para-pruebas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#teclas-esenciales-para-pruebas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Teclas esenciales para pruebas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tab&lt;/strong&gt;: Avanzar al siguiente elemento interactivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shift+Tab&lt;/strong&gt;: Retroceder al elemento anterior&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enter&lt;/strong&gt;: Activar enlaces y botones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Espacio&lt;/strong&gt;: Activar casillas de verificación y botones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flechas&lt;/strong&gt;: Navegar dentro de componentes (menús, sliders)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escape&lt;/strong&gt;: Cerrar dialogos y menús desplegables&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;que-comprobar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-comprobar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que comprobar&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Alcance&lt;/strong&gt;: llega a cada elemento interactivo, incluidos los que aparecen al hacer hover (mega menus, tooltips, “ver mas”)?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indicador de foco visible siempre&lt;/strong&gt;: en fondos oscuros el outline por defecto del navegador suele desaparecer; el criterio 2.4.13 pide al menos 2 pixeles CSS de grosor con contraste 3:1 frente a colores adyacentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foco no tapado&lt;/strong&gt;: cabeceras sticky, banners de cookies y widgets de chat tapan el elemento enfocado. Es el criterio 2.4.11 y el fallo WCAG 2.2 mas habitual en sitios construidos antes de 2024.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin trampas de teclado&lt;/strong&gt; y &lt;strong&gt;sin interacciones solo con drag&lt;/strong&gt; (criterio 2.5.7): comparadores de imagenes, range estilizados como handle y reordenacion en backoffice necesitan alternativa de puntero unico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tamano de objetivo 24×24 CSS pixeles&lt;/strong&gt; (criterio 2.5.8): paginacion, iconos sociales del pie e iconos “x” inline son los sospechosos habituales.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;problemás-comunes-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-comunes-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás comunes en WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Menús de navegación&lt;/strong&gt;: Muchos temas no implementan correctamente la navegación por teclado en submenus desplegables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modales y popups&lt;/strong&gt;: Los lightboxes y popups de cookies frecuentemente no capturan ni gestionan el foco correctamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sliders y carruseles&lt;/strong&gt;: Los controles de navegación a menudo son inaccesibles por teclado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios de búsqueda&lt;/strong&gt;: El formulario de búsqueda expandible puede no recibir el foco al activarse.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;fase-3-pruebas-con-lector-de-pantalla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-pruebas-con-lector-de-pantalla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Pruebas con lector de pantalla&lt;/h2&gt;
&lt;p&gt;Esta fase revela como experimentan su sitio los usuarios con discapacidad visual. Es la prueba más compleja pero también la más reveladora.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-recomendadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-recomendadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas recomendadas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NVDA&lt;/strong&gt; (Windows, gratuito): El lector de pantalla de código abierto más popular&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VoiceOver&lt;/strong&gt; (macOS/iOS, integrado): Viene preinstalado en todos los dispositivos Apple&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JAWS&lt;/strong&gt; (Windows, comercial): El estándar empresarial&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;que-verificar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-verificar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que verificar&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Texto alternativo de imágenes&lt;/strong&gt;: Las imágenes decorativas deben tener &lt;code&gt;alt=&quot;&quot;&lt;/code&gt; (vacio). Las imágenes informativas deben tener descripciones utiles y concisas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estructura de encabezados&lt;/strong&gt;: Los encabezados deben seguir una jerarquía lógica (H1 -&gt; H2 -&gt; H3) sin saltarse niveles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etiquetas de formularios&lt;/strong&gt;: Cada campo de formulario debe anunciarse con su propósito (nombre, correo electronico, etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tablas de datos&lt;/strong&gt;: Las tablas deben tener encabezados de fila y columna correctamente marcados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido dinámico&lt;/strong&gt;: Los cambios en la página (mensajes de error, actualizaciones AJAX) deben anunciarse mediante regiones ARIA live.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;fase-4-revision-manual-de-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-revision-manual-de-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Revision manual de código&lt;/h2&gt;
&lt;p&gt;Despues de las pruebas automatizadas y manuales, inspeccione el código fuente de los componentes críticos.&lt;/p&gt;
&lt;h3 id=&quot;lista-de-verificación-de-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-de-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación de código&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTML semántico&lt;/strong&gt;: Use elementos nativos (&lt;code&gt;&amp;#x3C;nav&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;main&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;aside&gt;&lt;/code&gt;) en lugar de &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; genericos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atributos ARIA&lt;/strong&gt;: Verifique que los roles ARIA sean correctos y no entren en conflicto con la semántica HTML nativa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Idioma del documento&lt;/strong&gt;: El atributo &lt;code&gt;lang&lt;/code&gt; en &lt;code&gt;&amp;#x3C;html&gt;&lt;/code&gt; debe ser correcto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skip links&lt;/strong&gt;: Debe existir un enlace “Saltar al contenido principal” como primer elemento interactivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manejo de errores&lt;/strong&gt;: Los mensajes de error de formularios deben estar asociados programaticamente a los campos correspondientes.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Ejemplo de formulario accesible --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Correo electronico&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;           aria-describedby&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email-error&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;           aria-invalid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email-error&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alert&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      Por favor ingrese una direccion de correo valida.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;fase-5-documentación-y-priorizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-5-documentación-y-priorizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 5: Documentación y priorizacion&lt;/h2&gt;
&lt;p&gt;Una auditoria sin documentación adecuada no tiene valor. Cree un informe estructurado que fácilite la remediacion.&lt;/p&gt;
&lt;h3 id=&quot;estructura-del-informe&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-del-informe&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura del informe&lt;/h3&gt;
&lt;p&gt;Para cada problema identificado, documente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Descripción&lt;/strong&gt;: Que es el problema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ubicacion&lt;/strong&gt;: Página y componente afectados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Criterio WCAG&lt;/strong&gt;: Cual criterio de WCAG 2.2 se viola&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Severidad&lt;/strong&gt;: Crítica, Alta, Media o Baja&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Captura de pantalla&lt;/strong&gt;: Evidencia visual del problema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solución propuesta&lt;/strong&gt;: Como corregir el problema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Esfuerzo estimado&lt;/strong&gt;: Tiempo necesario para la correccion&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;priorizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#priorizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Priorizacion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Crítica&lt;/strong&gt;: Bloquea completamente el acceso a funcionalidad esencial (trampas de teclado, formularios inaccesibles). Corregir inmediatamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alta&lt;/strong&gt;: Dificulta significativamente el uso (contraste insuficiente, falta de texto alternativo en imágenes informativas). Corregir en 2 semanas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Media&lt;/strong&gt;: Reduce la calidad de la experiencia (orden de tabulacion suboptimo, nombres de enlace genericos). Corregir en 1 mes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Baja&lt;/strong&gt;: Mejoras de experiencia (mensajes de estado más descriptivos, mejores instrucciones). Planificar para el proximo ciclo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;herramientas-específicas-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-específicas-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas específicas para WordPress&lt;/h2&gt;
&lt;h3 id=&quot;plugins-de-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-de-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins de accesibilidad&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP Accessibility&lt;/strong&gt;: Anade funciones de accesibilidad que faltan en muchos temas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Starter theme con accesibilidad&lt;/strong&gt;: Underscores (_s) incluye fundamentos de accesibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Equalize Digital Accessibility Checker&lt;/strong&gt;: Escaneo automatizado integrado en el editor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;temás-accesibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#temás-accesibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Temás accesibles&lt;/h3&gt;
&lt;p&gt;WordPress.org tiene una etiqueta “accessibility-ready” para temas que cumplen con estándares básicos. Sin embargo, “accessibility-ready” no significa “totalmente accesible” - es solo el punto de partida.&lt;/p&gt;
&lt;h3 id=&quot;bloques-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloques-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloques Gutenberg&lt;/h3&gt;
&lt;p&gt;Los bloques nativos de Gutenberg generalmente tienen buena accesibilidad, pero los bloques personalizados y los de plugins de terceros frecuentemente fallan. Audite especialmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bloques de acordeon/pestanas&lt;/li&gt;
&lt;li&gt;Bloques de galeria de imágenes&lt;/li&gt;
&lt;li&gt;Bloques de formulario&lt;/li&gt;
&lt;li&gt;Bloques de video&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;automatizacion-de-auditorias-continuas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-de-auditorias-continuas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion de auditorias continuas&lt;/h2&gt;
&lt;p&gt;Una sola auditoria no es suficiente. Implemente monitoreo continuo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Integre Axe en CI/CD&lt;/strong&gt;: Ejecute pruebas de accesibilidad automatizadas en cada despliegue&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lighthouse CI&lt;/strong&gt;: Configure umbrales minimos de accesibilidad que bloqueen despliegues que no cumplan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo periodico&lt;/strong&gt;: Programe escaneos automatizados mensuales de las páginas más importantes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capacitacion del equipo&lt;/strong&gt;: Forme a desarrolladores y creadores de contenido en principios de accesibilidad&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;resumen-el-flujo-de-trabajo-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-el-flujo-de-trabajo-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen: El flujo de trabajo completo&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Escaneo automatizado&lt;/strong&gt; con Axe y WAVE (detecta ~30% de problemas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas de teclado&lt;/strong&gt; navegando todo el sitio sin raton (detecta trampas y falta de enfoque)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas con lector de pantalla&lt;/strong&gt; usando NVDA o VoiceOver (detecta problemas de anuncio y estructura)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision de código&lt;/strong&gt; inspeccionando HTML semántico y ARIA (detecta problemas técnicos profundos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentación&lt;/strong&gt; con priorizacion y plan de remediacion&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La accesibilidad no es un proyecto con fecha de finalizacion. Es un compromiso continuo que beneficia a todos los usuarios, mejora el &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO&lt;/a&gt;, reduce riesgos legales y demuestra valores corporativos autenticos.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;servicios de mantenimiento WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">auditoria-accesibilidad-práctica</category><category domain="tag">guía</category><category domain="tag">2026</category><category domain="tag">wcag-2-2</category><category domain="tag">accesibilidad</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/it-professionals-meeting-discussion.jpg" type="image/jpeg"/></item><item><title>WordPress como backend para aplicaciones móviles: Guia de React Native</title><link>https://wppoland.com/es/wordpress-backend-mobile-apps-react-native/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-backend-mobile-apps-react-native/</guid><description>Guia técnica sobre como usar WordPress como CMS Headless para aplicaciones móviles con React Native y Expo.</description><pubDate>Thu, 29 Jan 2026 19:15:16 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;La convergencia de los sistemas de gestión de contenido y el desarrollo de aplicaciones móviles ha creado oportunidades sin precedentes para empresas que buscan soluciones eficientes y escalables. WordPress, impulsando más del 43% de la web, emerge como un backend sorprendentemente capaz para aplicaciones móviles cuando se aprovecha a través de la arquitectura headless moderna. Esta guía completa explora como aprovechar WordPress como CMS Headless para aplicaciones React Native y Expo, permitiendo un desarrollo rápido sin sacrificar rendimiento ni flexibilidad.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;introduccion-por-que-wordpress-como-backend-móvil-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-por-que-wordpress-como-backend-móvil-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: Por que WordPress como backend móvil en 2026&lt;/h2&gt;
&lt;p&gt;El panorama de aplicaciones móviles ha evolucionado dramaticamente, con usuarios esperando experiencias fluidas entre plataformas mientras las empresas demandan flujos de trabajo eficientes de gestión de contenido. El desarrollo tradicional de backend móvil a menudo requiere una inversión significativa en APIs personalizadas, gestión de bases de datos e interfaces de administración de contenido. WordPress, cuando se despliega como CMS Headless, elimina estas barreras proporcionando capacidades de gestión de contenido de nivel empresarial.&lt;/p&gt;
&lt;p&gt;La arquitectura headless desacopla el backend de gestión de contenido de la capa de presentacion, permitiendo que WordPress sirva como una API de contenido pura mientras React Native maneja la interfaz de usuario móvil. Esta separacion ofrece ventajas convincentes: los editores de contenido trabajan dentro de la interfaz familiar de WordPress, los desarrolladores construyen experiencias móviles nativas, y ambos sistemas evolucionan de forma independiente sin cambios destructivos.&lt;/p&gt;
&lt;p&gt;El caso de negocio se extiende más alla de la eficiencia técnica. Las organizaciónes que ya invirtieron en infraestructura WordPress pueden extender su contenido existente a plataformas móviles sin reconstruir sistemas de backend. Los equipos de marketing mantienen la publicación de contenido desde una única fuente, reduciendo la duplicacion y asegurando consistencia entre canales web y móvil. Los equipos de desarrollo aprovechan las capacidades multiplataforma de React Native, entregando aplicaciones iOS y Android desde una única base de código mientras WordPress gestiona las actualizaciones de contenido en tiempo real.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;vision-general-de-la-arquitectura-como-wordpress-headless-impulsa-aplicaciones-móviles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#vision-general-de-la-arquitectura-como-wordpress-headless-impulsa-aplicaciones-móviles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Vision general de la arquitectura: Como WordPress Headless impulsa aplicaciones móviles&lt;/h2&gt;
&lt;p&gt;Comprender la base arquitectonica permite tomar decisiones informadas sobre los enfoques de implementación y la seleccion de tecnología.&lt;/p&gt;
&lt;h3 id=&quot;el-paradigma-cms-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-paradigma-cms-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El paradigma CMS Headless&lt;/h3&gt;
&lt;p&gt;WordPress tradicional combina gestión de contenido con presentacion basada en temas. WordPress Headless elimina la capa de tema por completo, exponiendo contenido a través de APIs que cualquier frontend - web, móvil, IoT u otro - puede consumir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Componentes arquitectonicos clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress Core&lt;/strong&gt;: Creación de contenido, gestión de usuarios, manejo de medios y ecosistema de plugins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capa API&lt;/strong&gt;: REST API (integrada) o GraphQL (via plugin WPGraphQL) para entrega de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autenticación&lt;/strong&gt;: JWT (JSON Web Tokens) para autenticación segura de aplicaciones móviles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React Native/Expo&lt;/strong&gt;: Framework móvil multiplataforma consumiendo APIs de WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capa de cache&lt;/strong&gt;: Redis o similar para optimización de respuestas API&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;opciones-de-api-rest-vs-graphql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opciones-de-api-rest-vs-graphql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opciones de API: REST vs GraphQL&lt;/h3&gt;
&lt;p&gt;WordPress ofrece dos enfoques principales de API para integración móvil:&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Caracteristica&lt;/th&gt;&lt;th&gt;REST API&lt;/th&gt;&lt;th&gt;GraphQL (WPGraphQL)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Integrada&lt;/td&gt;&lt;td&gt;Si (WordPress 4.7+)&lt;/td&gt;&lt;td&gt;No (requiere plugin)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Eficiencia de solicitudes&lt;/td&gt;&lt;td&gt;Multiples endpoints&lt;/td&gt;&lt;td&gt;Endpoint único&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sobre-carga de datos&lt;/td&gt;&lt;td&gt;Comun&lt;/td&gt;&lt;td&gt;Eliminada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Curva de aprendizaje&lt;/td&gt;&lt;td&gt;Menor&lt;/td&gt;&lt;td&gt;Moderada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Capacidades en tiempo real&lt;/td&gt;&lt;td&gt;Polling&lt;/td&gt;&lt;td&gt;Suscripciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Optimización móvil&lt;/td&gt;&lt;td&gt;Buena&lt;/td&gt;&lt;td&gt;Excelente&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para aplicaciones móviles, GraphQL tipicamente ofrece rendimiento superior a través de la obtencion precisa de datos, reduciendo tamaños de carga y mejorando la respuesta percibida en conexiónes de red variables.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;guia-de-implementación-construyendo-tu-backend-de-aplicación-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-implementación-construyendo-tu-backend-de-aplicación-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de implementación: Construyendo tu backend de aplicación móvil&lt;/h2&gt;
&lt;p&gt;Esta sección proporciona orientacion de implementación completa y lista para producción para conectar aplicaciones React Native a WordPress.&lt;/p&gt;
&lt;h3 id=&quot;fase-1-configuración-del-backend-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-configuración-del-backend-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Configuración del backend WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Instalar y configurar WPGraphQL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WPGraphQL transforma WordPress en un servidor GraphQL, proporcionando obtencion optima de datos para aplicaciones móviles.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar WPGraphQL via WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-graphql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar autenticación JWT para WPGraphQL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-graphql-jwt-authentication&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configurar autenticación JWT en &lt;code&gt;wp-config.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Configuración de autenticación JWT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;GRAPHQL_JWT_AUTH_SECRET_KEY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tu-clave-secreta-aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;GRAPHQL_JWT_AUTH_CORS_ENABLE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;GRAPHQL_JWT_AUTH_COOKIE_NAME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;graphqlJwtAuth&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Habilitar CORS para acceso de aplicación móvil&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;GRAPHQL_API_CORS_ALLOW_ORIGIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;*&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;GRAPHQL_API_CORS_ALLOW_METHODS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST, GET, OPTIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Modelado de contenido para móvil&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Estructura los tipos de contenido de WordPress optimizados para consumo móvil:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar tipo de publicación personalizado para contenido móvil&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; registrar_tipo_contenido_móvil&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mobile_article&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;labels&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Articulos Moviles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;singular_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Artículo Movil&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;show_in_graphql&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;graphql_single_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;mobileArticle&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;graphql_plural_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;mobileArticles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;supports&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;thumbnail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;excerpt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom-fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;menu_icon&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;dashicons-smartphone&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;registrar_tipo_contenido_móvil&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Optimizar medios para móvil&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Configura WordPress para generar tamaños de imagen optimizados para móvil:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Añadir tamaños de imagen optimizados para móvil&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mobile_thumbnail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mobile_featured&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mobile_hero&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fase-2-configuración-de-la-aplicación-react-native&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-configuración-de-la-aplicación-react-native&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Configuración de la aplicación React Native&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Inicializar proyecto Expo&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crear nuevo proyecto Expo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create-expo-app&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; WordPressMobileApp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; WordPressMobileApp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar dependencias necesarias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; @apollo/clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; graphql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; @react-navigation/native&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; @react-navigation/stack&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; react-native-screens&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; react-native-safe-area-context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; @react-native-async-storage/async-storage&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; jwt-decode&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Configurar Apollo Client&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Crear &lt;code&gt;src/apollo/clientes.js&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ApolloClient, InMemoryCache, createHttpLink } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@apollo/clientes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { setContext } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@apollo/clientes/link/context&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; AsyncStorage &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@react-native-async-storage/async-storage&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; httpLink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; createHttpLink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  uri: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://tu-sitio-wordpress.com/graphql&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; authLink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; setContext&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; token&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; AsyncStorage.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;authToken&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    headers: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      ...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;headers,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      authorization: token &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; `Bearer ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;token&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; apolloClient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ApolloClient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  link: authLink.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;concat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(httpLink),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  cache: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; InMemoryCache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    typePolicies: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      Query: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        fields: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          mobileArticles: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            keyArgs: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;first&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;where&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            merge&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;existing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;incoming&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;              return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;existing, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;incoming.nodes];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  defaultOptions: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    watchQuery: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      fetchPolicy: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cache-and-network&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Implementación de autenticación&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { gql } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@apollo/clientes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; AsyncStorage &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@react-native-async-storage/async-storage&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; jwtDecode &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;jwt-decode&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; AUTH_TOKEN_MUTATION&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; gql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  mutation LoginUser($username: String!, $password: String!) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    login(input: { username: $username, password: $password }) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      authToken&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      refreshToken&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      user {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        email&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; AuthService&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;username&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;password&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; apolloClient.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mutate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        mutation: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;AUTH_TOKEN_MUTATION&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        variables: { username, password },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;authToken&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;refreshToken&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; data.login;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; AsyncStorage.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;authToken&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, authToken);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; AsyncStorage.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;refreshToken&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, refreshToken);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { success: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, user };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (error) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { success: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, error: error.message };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; isTokenValid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; token&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; AsyncStorage.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;authToken&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;token) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; decoded&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; jwtDecode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(token);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; decoded.exp &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Date.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; authService&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; AuthService&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fase-3-obtencion-y-visualización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-obtencion-y-visualización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Obtencion y visualización de contenido&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Consultas GraphQL para contenido móvil:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { gql } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@apollo/clientes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; GET_MOBILE_ARTICLES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; gql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  query GetMobileArticles($first: Int = 10, $after: String) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    mobileArticles(first: $first, after: $after) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      nodes {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        excerpt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        featuredImage {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          node {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            sourceUrl(size: MOBILE_FEATURED)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            altText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        author {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          node {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            avatar { url }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        categories {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          nodes { name slug }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      pageInfo {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        hasNextPage&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        endCursor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estrategias-de-optimización-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-optimización-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de optimización de rendimiento&lt;/h2&gt;
&lt;p&gt;Las aplicaciones móviles exigen un rendimiento excepcional, particularmente cuando consumen APIs remotas. Estas estrategias garantizan una experiencia de usuario optima.&lt;/p&gt;
&lt;h3 id=&quot;estrategias-de-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de cache&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Configuración de cache de Apollo Client&lt;/strong&gt; con politicas de tipo para páginación eficiente y fusion de datos. Implementa cache persistente usando &lt;code&gt;apollo3-cache-persist&lt;/code&gt; con AsyncStorage para acceso offline.&lt;/p&gt;
&lt;h3 id=&quot;optimización-de-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de red&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Agrupacion de solicitudes&lt;/strong&gt; con &lt;code&gt;BatchHttpLink&lt;/code&gt; reduce la sobrecarga de red agrupando multiples consultas GraphQL en una única solicitud HTTP. Configura &lt;code&gt;batchMax: 5&lt;/code&gt; y &lt;code&gt;batchInterval: 20&lt;/code&gt; para un equilibrio optimo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soporte offline&lt;/strong&gt; con cache persistente permite a la aplicación funcionar sin conexión a internet, mostrando el último contenido disponible.&lt;/p&gt;
&lt;h3 id=&quot;optimización-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de imágenes&lt;/h3&gt;
&lt;p&gt;Implementa carga progresiva de imágenes mostrando primero una miniatura borrosa y luego reemplazandola con la imagen completa cuando termina de cargar. Esto mejora dramaticamente la experiencia percibida en conexiónes lentas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad&lt;/h2&gt;
&lt;p&gt;Las aplicaciones móviles requieren medidas de seguridad robustas, particularmente al manejar autenticación y datos de usuario.&lt;/p&gt;
&lt;h3 id=&quot;mejores-prácticas-jwt&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-jwt&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas JWT&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Almacenamiento de tokens&lt;/strong&gt;: Siempre usa almacenamiento seguro de la plataforma. En Expo, usa &lt;code&gt;expo-secure-store&lt;/code&gt; en lugar de AsyncStorage para tokens de autenticación:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; SecureStore &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;expo-secure-store&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; SecureStore.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setItemAsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;authToken&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, token, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  keychainAccessible: SecureStore.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WHEN_UNLOCKED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de renovacion de tokens&lt;/strong&gt;: Implementa renovacion automática de tokens antes de la expiracion usando el &lt;code&gt;onError&lt;/code&gt; link de Apollo Client para interceptar errores JWT y renovar transparentemente.&lt;/p&gt;
&lt;h3 id=&quot;encabezados-de-seguridad-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encabezados-de-seguridad-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encabezados de seguridad API&lt;/h3&gt;
&lt;p&gt;Configura WordPress para enviar encabezados de seguridad apropiados para solicitudes API:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_api_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_pre_serve_request&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($value) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;X-Content-Type-Options: nosniff&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;X-Frame-Options: DENY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;X-XSS-Protection: 1; mode=block&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Referrer-Policy: strict-origin-when-cross-origin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pruebas-y-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-y-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas y despliegue&lt;/h2&gt;
&lt;h3 id=&quot;pruebas-de-integración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-integración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de integración&lt;/h3&gt;
&lt;p&gt;Verifica la conectividad entre React Native y WordPress en multiples escenarios: red lenta, modo offline, tokens expirados, contenido faltante. Usa Jest y React Native Testing Library para pruebas unitarias de componentes.&lt;/p&gt;
&lt;h3 id=&quot;despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despliegue&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Backend WordPress&lt;/strong&gt;: Asegura el servidor con firewall, limita acceso al admin, habilita HTTPS obligatorio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicación móvil&lt;/strong&gt;: Pública en App Store y Google Play siguiendo sus guías de revision&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo&lt;/strong&gt;: Implementa Sentry o similar para rastreo de errores en producción&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;WordPress como backend para aplicaciones móviles con React Native es una combinación poderosa que aprovecha lo mejor de ambos mundos: la madurez de gestión de contenido de WordPress y la experiencia de usuario nativa de React Native. Con la configuración adecuada de GraphQL, autenticación JWT y estrategias de cache, puedes construir aplicaciones móviles de alto rendimiento que se integran perfectamente con tu infraestructura WordPress existente.&lt;/p&gt;
&lt;p&gt;Necesitas ayuda con &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; o &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt;? &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt; para una consulta gratuita.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">wordpress-as-backend-for-mobile-apps</category><category domain="tag">guide</category><category domain="tag">2026</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-data-management.jpg" type="image/jpeg"/></item><item><title>WordPress Playground: El futuro de las pruebas y demos</title><link>https://wppoland.com/es/wordpress-playground-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-playground-guide-2026/</guid><description>Aprende a usar WordPress Playground para ejecutar WP en el navegador via WebAssembly. Guia completa para pruebas y demos en 2026.</description><pubDate>Thu, 29 Jan 2026 19:15:16 GMT</pubDate><content:encoded>&lt;p&gt;WordPress Playground representa un cambio de paradigma en como los desarrolladores, disenadores y creadores de contenido interactuan con el sistema de gestión de contenido más popular del mundo. Al aprovechar la tecnología WebAssembly, esta innovadora plataforma permite a los usuarios ejecutar una instancia WordPress completamente funcional directamente en su navegador: sin servidor requerido, sin configuración de base de datos necesaria y absolutamente cero dolores de cabeza de configuración.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;introduccion-por-que-wordpress-playground-importa-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-por-que-wordpress-playground-importa-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: Por que WordPress Playground importa en 2026&lt;/h2&gt;
&lt;p&gt;El panorama del desarrollo web ha evolucionado dramaticamente en la última decada. Al navegar por 2026, la demanda de prototipado rápido, entornos de pruebas sin fricciones y herramientas educativas accesibles nunca ha sido mayor. WordPress Playground emerge como una solución revolucionaria que aborda estas necesidades mientras democratiza el acceso a la experimentacion con WordPress.&lt;/p&gt;
&lt;p&gt;El desarrollo WordPress tradicional tipicamente requiere un entorno de servidor local como XAMPP, MAMP o Docker, junto con configuración de base de datos e instalación de PHP. Esta barrera de configuración ha excluido historicamente a usuarios no técnicos de explorar el potencial completo de WordPress. WordPress Playground elimina estos obstaculos por completo, haciendo WordPress accesible para cualquier persona con un navegador web moderno.&lt;/p&gt;
&lt;p&gt;Las implicaciones para el ecosistema WordPress son profundas. Los desarrolladores de plugins ahora pueden crear demos interactivas que los usuarios pueden experimentar instantaneamente. Los educadores pueden ensenar conceptos de WordPress sin preocuparse por la configuración del entorno local de los estudiantes. Los equipos de soporte pueden reproducir problemas en entornos aislados en segundos. Los equipos de marketing pueden mostrar características de productos a través de demostraciones en vivo e interactivas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;como-funciona-wordpress-playground&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-wordpress-playground&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona WordPress Playground&lt;/h2&gt;
&lt;p&gt;En su nucleo, WordPress Playground es una maravilla tecnológica que combina varias tecnologías web de vanguardia para crear una experiencia WordPress fluida en el navegador. Entender estos mecanismos subyacentes ayuda a los desarrolladores y usuarios avanzados a maximizar el potencial de la plataforma.&lt;/p&gt;
&lt;h3 id=&quot;la-base-webassembly&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-base-webassembly&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La base WebAssembly&lt;/h3&gt;
&lt;p&gt;WebAssembly (WASM) sirve como la columna vertebral de WordPress Playground. Este formato de instrucciones binarias permite rendimiento casí nativo para aplicaciones web, permitiendo que software complejo como PHP y MySQL se ejecute eficientemente dentro del entorno del navegador. El equipo de WordPress Playground ha compilado PHP a WebAssembly, creando un entorno de servidor virtualizado que opera completamente del lado del clientes.&lt;/p&gt;
&lt;p&gt;La implementación de base de datos SQLite mejora aun más esta arquitectura. En lugar de requerir un servidor MySQL tradicional, WordPress Playground utiliza SQLite, un sistema de base de datos ligero basado en archivos que funciona excepcionalmente bien dentro de las restricciones del navegador. Esta eleccion elimina la necesidad de procesos de base de datos separados mientras mantiene compatibilidad completa con WordPress.&lt;/p&gt;
&lt;h3 id=&quot;componentes-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#componentes-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Componentes clave&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PHP-WASM&lt;/strong&gt;: El interprete PHP compilado a WebAssembly, habilitando la ejecucion de PHP del lado del servidor dentro del navegador&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración SQLite&lt;/strong&gt;: Un sistema de base de datos basado en archivos que reemplaza MySQL para instancias WordPress ligeras y portables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema de archivos virtual&lt;/strong&gt;: Un sistema de archivos en el navegador que persiste archivos WordPress, subidas y configuraciónes durante la sesion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service Worker API&lt;/strong&gt;: Habilita funcionalidad offline y cache de recursos sin problemas para rendimiento mejorado&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;guia-de-implementación-primeros-pasos-con-wordpress-playground&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-implementación-primeros-pasos-con-wordpress-playground&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de implementación: Primeros pasos con WordPress Playground&lt;/h2&gt;
&lt;p&gt;Ya seas un desarrollador experimentado o un recien llegado a WordPress, implementar WordPress Playground en tu flujo de trabajo es sencillo. Esta guía completa cubre multiples enfoques para adaptarse a diferentes casos de uso y requisitos técnicos.&lt;/p&gt;
&lt;h3 id=&quot;método-1-usando-el-sitio-web-oficial-de-playground&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-usando-el-sitio-web-oficial-de-playground&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Usando el sitio web oficial de Playground&lt;/h3&gt;
&lt;p&gt;La forma mas simple de experimentar WordPress Playground es a través del sitio web oficial en &lt;a href=&quot;https://playground.wordpress.net&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;playground.wordpress.net&lt;/a&gt;. Este enfoque no requiere conocimiento técnico y proporciona acceso inmediato a una instalación WordPress fresca.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Navega al Playground&lt;/strong&gt;: Abre tu navegador y visita la URL oficial de WordPress Playground&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selecciona tu configuración&lt;/strong&gt;: Elige entre entornos preconfigurados incluyendo temas clásicos, temas de bloques o configuraciónes WooCommerce&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lanza la instancia&lt;/strong&gt;: Haz clic en el boton de lanzamiento para inicializar tu entorno WordPress basado en navegador&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comienza a experimentar&lt;/strong&gt;: Accede al panel de administración, instala plugins, crea contenido y explora funcionalidades&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;método-2-embebiendo-playground-en-tu-sitio-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-embebiendo-playground-en-tu-sitio-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Embebiendo Playground en tu sitio web&lt;/h3&gt;
&lt;p&gt;Para desarrolladores y creadores de productos, embeber WordPress Playground directamente en tu sitio web crea demostraciones interactivas poderosas. Este enfoque es particularmente valioso para desarrolladores de plugins, creadores de temas y plataformas educativas.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;iframe&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://playground.wordpress.net/?theme=twentytwentyfour&amp;#x26;plugin=gutenberg&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;100%&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;800px&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  frameborder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  allow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;clipboard-write&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;iframe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La implementación iframe soporta númerosos parametros de consulta para personalización:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Parametro&lt;/th&gt;&lt;th&gt;Descripción&lt;/th&gt;&lt;th&gt;Valores de Ejemplo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;theme&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Pre-instala un tema específico&lt;/td&gt;&lt;td&gt;&lt;code&gt;twentytwentyfour&lt;/code&gt;, &lt;code&gt;astra&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;plugin&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Activa plugins específicados&lt;/td&gt;&lt;td&gt;&lt;code&gt;woocommerce&lt;/code&gt;, &lt;code&gt;yoast-seo&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;url&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Abre una página admin específica&lt;/td&gt;&lt;td&gt;&lt;code&gt;/wp-admin/plugins.php&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;mode&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Establece el modo de operación&lt;/td&gt;&lt;td&gt;&lt;code&gt;tight&lt;/code&gt;, &lt;code&gt;browser&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;método-3-usando-la-api-de-playground-para-integración-avanzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-usando-la-api-de-playground-para-integración-avanzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Usando la API de Playground para integración avanzada&lt;/h3&gt;
&lt;p&gt;Los desarrolladores que buscan integración más profunda pueden aprovechar la API JavaScript de WordPress Playground. Este enfoque permite control programatico sobre la instancia WordPress, haciendolo ideal para pruebas automatizadas, pipelines CI/CD y desarrollo de aplicaciones personalizadas.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { startPlaygroundWeb } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@wp-playground/clientes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; initializePlayground&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; startPlaygroundWeb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    iframe: document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-playground&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    remoteUrl: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://playground.wordpress.net/remote.html&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    blueprint: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      landingPage: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-admin/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      preferredVersions: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        php: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;8.2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        wp: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;latest&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      steps: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          step: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;installPlugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          pluginZipFile: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            resource: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wordpress.org/plugins&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            slug: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;gutenberg&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; clientes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;método-4-configuración-blueprint-para-entornos-reproducibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-4-configuración-blueprint-para-entornos-reproducibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 4: Configuración Blueprint para entornos reproducibles&lt;/h3&gt;
&lt;p&gt;Los Blueprints son archivos de configuración JSON que definen el estado exacto de una instancia WordPress Playground. Permiten entornos reproducibles y versiónados, perfectos para colaboración en equipo, reproducción de tickets de soporte y documentación.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://playground.wordpress.net/blueprint-schema.json&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;landingPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/wp-admin/plugins.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;preferredVersions&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;8.2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;wp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;6.5&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;steps&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;step&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;login&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;username&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;admin&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;password&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;step&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;installPlugin&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;pluginZipFile&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;resource&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wordpress.org/plugins&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;query-monitor&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;aplicaciones-prácticas-y-casos-de-uso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aplicaciones-prácticas-y-casos-de-uso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aplicaciones prácticas y casos de uso&lt;/h2&gt;
&lt;p&gt;La versatilidad de WordPress Playground se extiende a través de númerosos escenarios profesionales. Entender estas aplicaciones ayuda a organizaciónes e individuos a maximizar su inversión en esta tecnología.&lt;/p&gt;
&lt;h3 id=&quot;desarrollo-de-plugins-y-temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desarrollo-de-plugins-y-temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desarrollo de plugins y temas&lt;/h3&gt;
&lt;p&gt;Los desarrolladores pueden probar sus creaciónes a través de multiples versiones de WordPress y configuraciónes de PHP sin mantener entornos locales complejos. La capacidad de levantar instancias limpias instantaneamente acelera la depuracion y asegura que las pruebas de compatibilidad sean exhaustivas y eficientes.&lt;/p&gt;
&lt;h3 id=&quot;aplicaciones-educativas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aplicaciones-educativas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aplicaciones educativas&lt;/h3&gt;
&lt;p&gt;Los educadores de WordPress han adoptado Playground como una herramienta de enseñanza revolucionaria. Los estudiantes pueden seguir tutoriales en tiempo real, experimentando con conceptos sin arriesgar sus propios sitios web ni lidiar con complicaciones de configuración local.&lt;/p&gt;
&lt;h3 id=&quot;soporte-al-clientes-y-reporte-de-errores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soporte-al-clientes-y-reporte-de-errores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soporte al clientes y reporte de errores&lt;/h3&gt;
&lt;p&gt;Los equipos de soporte aprovechan WordPress Playground para reproducir problemas de clientes en entornos controlados. Cuando un usuario reporta un error, el personal de soporte puede crear un entorno identico en segundos, llevando a tiempos de resolución más rápidos.&lt;/p&gt;
&lt;h3 id=&quot;demostraciones-de-ventas-y-marketing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#demostraciones-de-ventas-y-marketing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Demostraciones de ventas y marketing&lt;/h3&gt;
&lt;p&gt;Las empresas de productos usan instancias Playground embebidas para crear demos interactivas que convierten visitantes en clientes. A diferencia de demostraciones en video o capturas de pantalla, los embeds Playground en vivo permiten a los prospectos experimentar productos de primera mano.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;consideraciones-de-rendimiento-y-limitaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-rendimiento-y-limitaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de rendimiento y limitaciones&lt;/h2&gt;
&lt;p&gt;Aunque WordPress Playground es notablemente capaz, entender sus restricciones asegura un uso apropiado y expectativas realistas.&lt;/p&gt;
&lt;h3 id=&quot;limites-de-almacenamiento-del-navegador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limites-de-almacenamiento-del-navegador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limites de almacenamiento del navegador&lt;/h3&gt;
&lt;p&gt;WordPress Playground almacena datos usando el sistema IndexedDB del navegador, que tipicamente permite 50-250MB por dominio dependiendo del navegador y dispositivo. Bibliotecas de medios grandes o colecciones extensas de plugins pueden acercarse a estos limites.&lt;/p&gt;
&lt;h3 id=&quot;rendimiento-computacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-computacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento computacional&lt;/h3&gt;
&lt;p&gt;WebAssembly proporciona rendimiento impresionante, pero la ejecucion de PHP basada en navegador sigue siendo más lenta que los entornos de servidor nativos. Las operaciones intensivas en CPU como procesamiento de imágenes o consultas de base de datos complejas pueden experimentar retrasos notables.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;seguridad-y-privacidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-y-privacidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad y privacidad&lt;/h2&gt;
&lt;h3 id=&quot;persistencia-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#persistencia-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Persistencia de datos&lt;/h3&gt;
&lt;p&gt;Por defecto, las instancias de WordPress Playground son efimeras: cerrar la pestana del navegador destruye todos los datos. Sin embargo, la función “Guardar” habilita persistencia, almacenando el estado completo de WordPress en el almacenamiento del navegador.&lt;/p&gt;
&lt;h3 id=&quot;redes-y-comunicación-externa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#redes-y-comunicación-externa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Redes y comunicación externa&lt;/h3&gt;
&lt;p&gt;Cuando las redes estan habilitadas, WordPress Playground puede comunicarse con APIs y servicios externos. Esta capacidad requiere consideracion cuidadosa de politicas CORS y seguridad de transmision de datos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;desarrollos-futuros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desarrollos-futuros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desarrollos futuros&lt;/h2&gt;
&lt;p&gt;El proyecto WordPress Playground continua evolucionando rápidamente. El equipo de desarrollo ha anunciado mejoras emocionantes para 2026, incluyendo soporte multi-sitio, redes mejoradas, integración CLI, edicion colaborativa y optimización móvil.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración NextJS/Astro&lt;/a&gt; y &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño WordPress&lt;/a&gt; para llevar tu proyecto al siguiente nivel.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">wordpress-playground</category><category domain="tag">guide</category><category domain="tag">2026</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Construyendo búsqueda por voz nativa para WordPress en 2026: Caso de estudio técnico</title><link>https://wppoland.com/es/building-native-voice-search-wordpress-2026/</link><guid isPermaLink="true">https://wppoland.com/es/building-native-voice-search-wordpress-2026/</guid><description>Como implementamos una búsqueda por voz nativa, con privacidad prioritaria y sin dependencias para wppoland.com usando la Web Speech API. Guia práctica sobre interfaces de IA Ambiental.</description><pubDate>Mon, 26 Jan 2026 16:39:00 GMT</pubDate><content:encoded>&lt;p&gt;La era de escribir esta terminando. El comportamiento del usuario ha cambiado fundamentalmente en 2026. El diseño “teclado primero” se esta convirtiendo en un concepto heredado. Con el auge de la “IA Ambiental”, donde las computadoras son auditores omnipresentes en lugar de simples pantallas, la expectativa de &lt;strong&gt;Interacción Multimodal&lt;/strong&gt; (Voz, Gesto, Mirada) es el estándar.&lt;/p&gt;
&lt;p&gt;Los usuarios no quieren escribir “Desarrollador WordPress Madrid”; quieren preguntar, “Encuentrame un experto en WordPress cerca”. Esta transicion representa una oportunidad enorme para los sitios WordPress que se preparen adecuadamente, y un riesgo significativo para los que ignoren esta tendencia.&lt;/p&gt;
&lt;p&gt;Mientras herramientas como &lt;strong&gt;TalkMe AI&lt;/strong&gt; estan pionerizando impresionantes avatares conversacionales en 3D, creemos que el primer paso crítico para la mayoria de los sitios WordPress de alto rendimiento es una interfaz de búsqueda por voz robusta, performante y &lt;strong&gt;nativa&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Este caso de estudio documenta exactamente como construimos la función de “Búsqueda por Voz” que ves en wppoland.com hoy: cero plugins, cero bloat, JavaScript puro. Exploraremos la implementación técnica, las implicaciones de privacidad y por que elegimos esta ruta sobre los pesados widgets de terceros.&lt;/p&gt;
&lt;h2 id=&quot;1-el-desafio-widgets-pesados-vs-rendimiento-nativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-desafio-widgets-pesados-vs-rendimiento-nativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El desafio: Widgets pesados vs. rendimiento nativo&lt;/h2&gt;
&lt;p&gt;Recientemente realizamos una revision arquitectonica profunda de la plataforma &lt;strong&gt;TalkMe AI&lt;/strong&gt; y widgets similares de “Avatar IA”. Los resultados revelaron un conflicto fundamental entre funcionalidad visual impresionante y rendimiento del sitio.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-del-widget-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-del-widget-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El “problema del widget” en 2026&lt;/h3&gt;
&lt;p&gt;Los avatares conversacionales son visualmente impactantes. Usan WebGL para renderizar rostros realistas que sincronizan labios con audio generado por IA. Sin embargo, para un sitio corporativo o portfolio de alto rendimiento, introducen una “Deuda de Rendimiento” significativa que puede destruir tus metricas Core Web Vitals.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LCP (Largest Contentful Paint)&lt;/strong&gt;: Cargar un motor 3D (como Three.js) y assets de personaje a menudo bloquea el hilo principal, retrasando el LCP entre 2-4 segundos en móvil. Esto solo ya puede llevar tu sitio de la zona “buena” a la zona “necesita mejora” en Core Web Vitals.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;INP (Interaction to Next Paint)&lt;/strong&gt;: Los bucles de animacion constantes y los event listeners pueden causar micro-stutters al hacer scroll o clic. Estos stutters degradan la experiencia del usuario y penalizan directamente tu puntuacion INP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Overhead de privacidad&lt;/strong&gt;: Enviar flujos de audio continuos a un servidor de terceros plantea obstaculos de cumplimiento GDPR que complican significativamente la implementación para sitios que operan en la Union Europea o atienden a usuarios europeos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nuestro objetivo&lt;/strong&gt;: Habilitar interacción “IA Ambiental”, permitiendo a los usuarios hablar con el sitio de forma natural, sin sacrificar nuestra puntuacion PageSpeed perfecta ni la privacidad del usuario.&lt;/p&gt;
&lt;h2 id=&quot;2-la-solución-web-speech-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-la-solución-web-speech-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. La solución: Web Speech API&lt;/h2&gt;
&lt;p&gt;Los navegadores modernos (Chrome, Edge, Safari) tienen un poderoso secreto que muchos desarrolladores pasan por alto: la &lt;strong&gt;Web Speech API&lt;/strong&gt;. Esta API permite a las aplicaciones web interactuar directamente con el microfono del dispositivo y el motor de Speech-to-Text del sistema operativo.&lt;/p&gt;
&lt;h3 id=&quot;ventajas-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas clave&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sin bibliotecas externas&lt;/strong&gt;: Esta integrada en el navegador, sin descargas adicionales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aceleracion por hardware&lt;/strong&gt;: Usa la NPU (Neural Processing Unit) del dispositivo cuando es posible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latencia cero&lt;/strong&gt;: O casí cero, comparado con enviar audio a una API en la nube.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;análisis-comparativo-nativo-vs-ia-externa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-comparativo-nativo-vs-ia-externa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis comparativo: Nativo vs. IA externa&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Web Speech API Nativa&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Widget IA Externo (ej. TalkMe)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tamaño del Bundle&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;0kb&lt;/strong&gt; (Nativo del Navegador)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1.5MB+&lt;/strong&gt; (JS + Assets)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Privacidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Local / Nivel OS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Procesamiento en la Nube&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Instantaneo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto Uso de CPU&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Integración&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Código Personalizado (&amp;#x3C;50 lineas)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Script Drop-in&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Suscripcion Mensual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Visuales&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Invisible (Dirigido por UI)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Avatar 3D&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para wppoland.com, la eleccion fue clara: el rendimiento es nuestra marca. Elegimos la solución nativa sin dudarlo.&lt;/p&gt;
&lt;h2 id=&quot;3-implementación-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-implementación-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Implementación técnica&lt;/h2&gt;
&lt;p&gt;Agregamos esta funcionalidad a nuestro componente &lt;code&gt;SearchInput.astro&lt;/code&gt;. Esto asegura que la barra de búsqueda sea la única fuente de verdad tanto para consultas de texto como de voz.&lt;/p&gt;
&lt;h3 id=&quot;paso-1-deteccion-de-funcionalidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-deteccion-de-funcionalidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Deteccion de funcionalidades&lt;/h3&gt;
&lt;p&gt;Primero, debemos respetar las capacidades del navegador del usuario. Nunca asumimos que una API existe.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificar si el navegador soporta SpeechRecognition&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;webkitSpeechRecognition&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; window &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;SpeechRecognition&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; window) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; voiceBtn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;voice-search-btn&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    voiceBtn.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hidden&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Solo mostrar boton si hay soporte&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-2-la-lógica-central&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-la-lógica-central&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: La lógica central&lt;/h3&gt;
&lt;p&gt;Aqui esta el código listo para producción que usamos. Nota el manejo del prefijo &lt;code&gt;webkit&lt;/code&gt;, que aun es necesario para compatibilidad amplia (especialmente en navegadores basados en Chromium).&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 1. Inicializar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; SpeechRecognition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; window.SpeechRecognition &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; window.webkitSpeechRecognition;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; recognition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SpeechRecognition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 2. Configuración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;recognition.continuous &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Detener despues de una oracion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;recognition.interimResults &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Solo devolver resultados finales&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;recognition.lang &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.documentElement.lang &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;es-ES&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Soporte de idioma dinamico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 3. Event Handlers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;recognition.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;onstart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // El feedback visual es crucial para UI de voz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    voiceBtn.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text-red-500&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;animate-pulse&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    searchInput.placeholder &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Escuchando...&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;recognition.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;onend&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Limpiar estado de UI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    voiceBtn.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text-red-500&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;animate-pulse&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    searchInput.placeholder &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Buscar...&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;recognition.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;onresult&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 4. Capturar Transcripcion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; transcript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; event.results[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;].transcript;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    searchInput.value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; transcript;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 5. UX: Auto-enviar despues de una pausa natural&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    setTimeout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; searchInput.form.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;submit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 6. Disparador&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;voiceBtn.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; recognition.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-3-manejo-de-errores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-manejo-de-errores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Manejo de errores&lt;/h3&gt;
&lt;p&gt;El uso en el mundo real es desordenado. Los usuarios deniegan permisos de microfono o los fondos son ruidosos. Agregamos manejo robusto de errores para volver al input de texto si el microfono esta bloqueado.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;recognition.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;onerror&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Error de voz:&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, event.error);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Volver elegantemente al input de texto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    searchInput.placeholder &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Buscar...&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    voiceBtn.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text-red-500&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;animate-pulse&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-micro-interacciones-ux-disenando-para-lo-invisible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-micro-interacciones-ux-disenando-para-lo-invisible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Micro-interacciones UX: Disenando para lo invisible&lt;/h2&gt;
&lt;p&gt;La voz es invisible. Sin una pantalla, el usuario no tiene “cursor” para saber donde esta. Por lo tanto, el feedback de UI es crítico para cerrar la brecha entre la intencion humana y la ejecucion de la maquina.&lt;/p&gt;
&lt;h3 id=&quot;el-estado-escuchando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-estado-escuchando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El estado “Escuchando”&lt;/h3&gt;
&lt;p&gt;Cuando el usuario hace clic en el microfono, la interfaz debe responder &lt;em&gt;inmediatamente&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Animacion de Pulso&lt;/strong&gt;: Aplicamos una clase CSS &lt;code&gt;animate-pulse&lt;/code&gt; al icono del microfono. Un indicador rojo o pulsante es un significante universal para “Grabando”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback en Placeholder&lt;/strong&gt;: El texto del input cambia a “Escuchando…”. Esto confirma que el sistema esta listo para recibir entrada, evitando que el usuario hable demasiado pronto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-bucle-de-confirmacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-bucle-de-confirmacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El bucle de “Confirmacion”&lt;/h3&gt;
&lt;p&gt;Implementamos un retraso de 500ms entre capturar el texto y enviar el formulario. Esto le da al usuario una fraccion de segundo para ver &lt;em&gt;que&lt;/em&gt; escucho la IA. Si la IA entendio mal “WordPress” como “Word Press”, ver el texto permite al usuario confiar en que el sistema esta funcionando, incluso si el resultado es ligeramente incorrecto.&lt;/p&gt;
&lt;h3 id=&quot;accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Accesibilidad&lt;/h3&gt;
&lt;p&gt;La búsqueda por voz debe complementar, no reemplazar, la búsqueda por texto. Los usuarios con discapacidades auditivas o en entornos ruidosos deben poder usar la búsqueda tradicional sin friccion. El boton de voz solo aparece cuando el navegador soporta la API, y la funcionalidad de búsqueda por texto permanece intacta en todos los casos.&lt;/p&gt;
&lt;h2 id=&quot;5-la-conexión-seo-speakable-schema-e-indexacion-por-voz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-la-conexión-seo-speakable-schema-e-indexacion-por-voz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. La conexión SEO: Speakable Schema e indexacion por voz&lt;/h2&gt;
&lt;p&gt;Construir esta funcionalidad no se trata solo de la experiencia del usuario (UX); es una señal poderosa para los motores de búsqueda que demuestra capacidades técnicas avanzadas.&lt;/p&gt;
&lt;h3 id=&quot;demostrando-e-e-a-t&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#demostrando-e-e-a-t&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Demostrando E-E-A-T&lt;/h3&gt;
&lt;p&gt;Al implementar APIs de navegador de vanguardia, demostramos &lt;strong&gt;Expertise&lt;/strong&gt; técnico (la ‘E’ en E-E-A-T). Los algoritmos de clasificación de Google favorecen sitios que ofrecen interfaces modernas y accesibles.&lt;/p&gt;
&lt;h3 id=&quot;speakable-schema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#speakable-schema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Speakable Schema&lt;/h3&gt;
&lt;p&gt;Combinamos esta función de entrada con schema &lt;code&gt;speakable&lt;/code&gt; en nuestro contenido. Esto crea un bucle cerrado: &lt;strong&gt;Voz Entra, Voz Sale&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entrada&lt;/strong&gt;: La búsqueda por voz permite a los usuarios &lt;em&gt;hacer&lt;/em&gt; preguntas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Salida&lt;/strong&gt;: El schema &lt;code&gt;speakable&lt;/code&gt; permite a los agentes IA (como Gemini o Siri) &lt;em&gt;leer&lt;/em&gt; las respuestas de vuelta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este bucle cerrado es el santo grial de la estrategia de contenido SEO para 2026, posicionando tu sitio como la interfaz preferida tanto para búsquedas textuales como por voz.&lt;/p&gt;
&lt;h2 id=&quot;6-pruebas-a-futuro-de-búsqueda-a-conversacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-pruebas-a-futuro-de-búsqueda-a-conversacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Pruebas a futuro: De búsqueda a conversacion&lt;/h2&gt;
&lt;p&gt;Esta implementación representa la &lt;strong&gt;Etapa Uno&lt;/strong&gt; de la interacción IA moderna.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Etapa Uno (Actual)&lt;/strong&gt;: Comando Voz-a-Texto. El usuario habla, el sitio ejecuta una búsqueda basada en texto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa Dos (Finales de 2026)&lt;/strong&gt;: Interfaces Conversacionales. El sitio usa un LLM para entender la intencion y “dibujar” una UI personalizada en respuesta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ejemplo, en lugar de buscar “Precios”, un usuario podria decir: &lt;em&gt;“Muéstrame planes para una agencia pequeña.”&lt;/em&gt; El sitio entonces renderizaria dinamicamente una tabla comparativa filtrada a esa necesidad específica.&lt;/p&gt;
&lt;p&gt;Para llegar a la Etapa Dos, debes dominar la Etapa Uno. La &lt;strong&gt;Búsqueda por Voz Nativa&lt;/strong&gt; que construimos hoy es la base para la Web Multimodal del manana.&lt;/p&gt;
&lt;p&gt;Es rápida, amigable con la privacidad y demuestra que tu sitio WordPress esta construido para el futuro, no para el pasado.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; para llevar tu proyecto más lejos. Consulta también nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; para implementar funcionalidades avanzadas en tu sitio.&lt;/p&gt;</content:encoded><category>development</category><category domain="tag">voice-search</category><category domain="tag">web-speech-api</category><category domain="tag">javascript</category><category domain="tag">ambient-ai</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-coding.jpg" type="image/jpeg"/></item><item><title>Optimización para búsqueda por voz: Schema para mantenerte a la vanguardia en 2026</title><link>https://wppoland.com/es/voice-search-seo-wordpress-guide-2026-en/</link><guid isPermaLink="true">https://wppoland.com/es/voice-search-seo-wordpress-guide-2026-en/</guid><description>En 2026, muchos usuarios nunca miran una pantalla. Aprende a optimizar tu sitio WordPress para Búsqueda por Voz usando Schema Speakable y SEO conversacional impulsado por IA.</description><pubDate>Thu, 22 Jan 2026 17:14:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;&quot;Oye Siri, como optimizo mi base de datos?&quot; - esto no es una novedad, es como un tercio de tu tráfico te encuentra. La **Optimización para Búsqueda por Voz** ya no es un &quot;estaria bien tenerlo&quot;; es un requisito de supervivencia para los editores WordPress modernos. Aqui te explicamos como preparar tu sitio para los oidos de internet.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-el-panorama-de-voz-en-2026-de-asistente-a-agente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-panorama-de-voz-en-2026-de-asistente-a-agente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El panorama de voz en 2026: De asistente a agente&lt;/h2&gt;
&lt;p&gt;En 2026, los asistentes han evolucionado a &lt;strong&gt;Agentes de IA&lt;/strong&gt;. No solo buscan; sintetizan información, toman decisiones y ejecutan acciones en nombre del usuario.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Citas de audio&lt;/strong&gt;: Cuando un agente de IA lee tu contenido, proporciona una cita de audio. Este “share auditivo” es el equivalente en 2026 a ser el primer resultado en la búsqueda. Cuando un usuario pregunta “Cual es el mejor plugin SEO para WordPress?”, el agente lee la respuesta directamente de tu sitio y dice “Segun WPPoland…”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;IA ambiental&lt;/strong&gt;: Los usuarios interactuan con la IA en todo momento - mientras conducen, cocinan, hacen ejercicio. Tu contenido debe estar optimizado para ser consumido sin pantalla, solo a través del audio.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ecosistema de dispositivos&lt;/strong&gt;: Altavoces inteligentes (Amazon Echo, Apple HomePod, Google Nest), wearables con IA (pins de IA, gafas inteligentes), asistentes de coche, y electrodomesticos conectados. Cada uno de estos es un punto de entrada para la búsqueda por voz.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estadísticas-clave-de-búsqueda-por-voz-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estadísticas-clave-de-búsqueda-por-voz-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estadísticas clave de búsqueda por voz 2026&lt;/h3&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Valor 2026&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Usuarios de búsqueda por voz global&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;8.4 mil millones de asistentes activos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Búsquedas locales por voz&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;58% de todas las búsquedas locales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Longitud promedio de consulta&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;8-15 palabras&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Compras iniciadas por voz&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$164 mil millones anuales&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-seo-técnico-implementando-schema-speakable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-seo-técnico-implementando-schema-speakable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. SEO técnico: Implementando schema &lt;code&gt;speakable&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Google y otros motores necesitan una pista sobre &lt;em&gt;que&lt;/em&gt; leer de tu contenido. Sin señales explicitas, el algoritmo debe adivinar cual es la sección más relevante - y a menudo se equivoca.&lt;/p&gt;
&lt;h3 id=&quot;la-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La implementación&lt;/h3&gt;
&lt;p&gt;Envuelve tus resumenes más concisos en la propiedad JSON-LD &lt;code&gt;speakable&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WebPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Guia de Búsqueda por Voz WordPress 2026&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;speakable&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;SpeakableSpecification&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;cssSelector&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &quot;#introduccion&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &quot;.resumen-ejecutivo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &quot;.respuesta-principal&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;contenido-objetivo-para-speakable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-objetivo-para-speakable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido objetivo para Speakable&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Primer parrafo&lt;/strong&gt; de cada sección principal - debe contener la respuesta directa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloques TL;DR&lt;/strong&gt; (Demasiado Largo; No Lei) - resumenes ejecutivos de 40-60 palabras&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respuestas FAQ&lt;/strong&gt; - las preguntas frecuentes son el formato perfecto para búsqueda por voz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Definiciones&lt;/strong&gt; - “Que es X?” seguido de una respuesta concisa de una oracion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;errores-comunes-al-implementar-speakable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-al-implementar-speakable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes al implementar Speakable&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Marcar demasiado contenido&lt;/strong&gt;: Speakable debe señalar las secciones más concisas, no toda la página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido demasiado largo&lt;/strong&gt;: Las secciones marcadas como speakable deben tener 2-3 oraciones maximo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de respuesta directa&lt;/strong&gt;: La primera oracion debe responder la pregunta sin rodeos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ignorar el contexto móvil&lt;/strong&gt;: El contenido speakable debe funcionar sin apoyo visual&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-el-giro-conversacional-consultas-de-cola-larga&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-el-giro-conversacional-consultas-de-cola-larga&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. El giro conversacional: Consultas de cola larga&lt;/h2&gt;
&lt;p&gt;Las consultas de voz son humanos hablando. Son desordenadas, largas y llenas de contexto. Mientras que la búsqueda por texto usa “seguridad WordPress”, la búsqueda por voz pregunta “Cual es la mejor manera de proteger mi sitio WordPress de hackers en 2026?”&lt;/p&gt;
&lt;h3 id=&quot;la-estrategia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-estrategia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La estrategia&lt;/h3&gt;
&lt;p&gt;Olvida las palabras clave de dos palabras. Construye tu contenido WordPress alrededor de &lt;strong&gt;Preguntas completas&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patron de contenido optimizado para voz:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Usa un H2 o H3 para la pregunta exacta&lt;/li&gt;
&lt;li&gt;Responde directamente en las primeras 40-50 palabras&lt;/li&gt;
&lt;li&gt;Expande con detalles, ejemplos y matices&lt;/li&gt;
&lt;li&gt;Cierra con una llamada a la accion&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo optimizado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold&quot;&gt;## Como protejo mi sitio WordPress de hackers en 2026?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;La forma más efectiva de proteger un sitio WordPress en 2026 es&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;implementar una estrategia de defensa en capas: firewall WAF,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;autenticación 2FA, actualizaciones automáticas y monitoreo de&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;integridad de archivos. El 95% de los hackeos se previenen con&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;estas cuatro medidas.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[Contenido detallado expandido...]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;investigacion-de-palabras-clave-conversacionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#investigacion-de-palabras-clave-conversacionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Investigacion de palabras clave conversacionales&lt;/h3&gt;
&lt;p&gt;Herramientas para encontrar consultas de voz reales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AnswerThePublic&lt;/strong&gt;: Genera preguntas basadas en tu palabra clave semilla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google People Also Ask&lt;/strong&gt;: Preguntas reales que los usuarios estan haciendo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AlsoAsked.com&lt;/strong&gt;: Arbol de preguntas relacionadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Búsquedas de Google Suggest&lt;/strong&gt;: Escribe “como…” en Google y observa las sugerencias&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-velocidad-es-sonido-el-factor-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-velocidad-es-sonido-el-factor-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Velocidad es sonido: El factor de rendimiento&lt;/h2&gt;
&lt;p&gt;Si tu sitio tarda 3 segundos en responder, un Asistente de Voz pasara a la siguiente fuente. Los agentes de IA tienen presupuestos de tiempo estrictos - necesitan entregar una respuesta en menos de 2 segundos desde que el usuario termina de hablar.&lt;/p&gt;
&lt;h3 id=&quot;el-estándar-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-estándar-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El estándar 2026&lt;/h3&gt;
&lt;p&gt;Para ganar el fragmento de voz, tu &lt;strong&gt;Time to First Byte (TTFB)&lt;/strong&gt; debe ser inferior a 200ms. Esto significa que cuando un agente de IA “pregunta” a tu sitio por datos, debe obtenerlos casí instantaneamente.&lt;/p&gt;
&lt;h3 id=&quot;soluciónes-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soluciónes-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soluciónes WordPress&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Edge Caching&lt;/strong&gt;: Usa Cloudflare APO o un CDN con cache HTML para servir contenido desde el servidor más cercano al usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura headless&lt;/strong&gt;: &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migra a Astro o Next.js&lt;/a&gt; para generar HTML estatico ultra-rápido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis Object Cache&lt;/strong&gt;: Elimina consultas repetitivas a la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compresion Brotli&lt;/strong&gt;: Reduce el tamaño de la respuesta HTML en un 20-30% respecto a Gzip&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP/3&lt;/strong&gt;: Reduce la latencia de conexión, especialmente en redes móviles&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;checklist-de-rendimiento-para-voz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-de-rendimiento-para-voz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist de rendimiento para voz&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; TTFB &amp;#x3C; 200ms en servidor edge más cercano&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; LCP &amp;#x3C; 1.5s (aunque la voz no usa visual, Google correlaciona metricas)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Respuesta HTML comprimida &amp;#x3C; 50KB para páginas de contenido&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Sin JavaScript bloqueante en la ruta crítica&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Cache de página completa habilitado para contenido estatico&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-comparación-de-búsqueda-voz-vs-texto-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-comparación-de-búsqueda-voz-vs-texto-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Comparación de búsqueda: Voz vs. Texto 2026&lt;/h2&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Búsqueda de texto tradicional&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Búsqueda por voz / Agente IA&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Longitud de consulta&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2 - 4 palabras&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;8 - 15 palabras&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Intencion del usuario&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Descubrimiento&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Respuesta inmediata&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Formato principal&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Snippet visual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Fragmento Speakable&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Citaciones&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Enlace azul&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Mencion de marca en audio&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Dispositivo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Escritorio / Movil&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Todos (incluyendo IoT)&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Contexto&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Minimo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Alto (ubicacion, historial, hora)&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-seo-local-por-voz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-seo-local-por-voz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. SEO local por voz&lt;/h2&gt;
&lt;p&gt;La mayoria de las búsquedas por voz en móvil son locales: &lt;em&gt;“Donde esta el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; más cercano?”&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;optimización-de-schema-localbusiness&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-schema-localbusiness&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de schema LocalBusiness&lt;/h3&gt;
&lt;p&gt;Asegura que tu Schema &lt;code&gt;LocalBusiness&lt;/code&gt; sea perfecto:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ProfessionalService&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WPPoland - Desarrollo WordPress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;address&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;PostalAddress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;addressLocality&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Viena&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;addressCountry&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;AT&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;geo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;GeoCoordinates&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;latitude&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;48.2082&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;longitude&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16.3738&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;openingHours&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Mo-Fr 09:00-18:00&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;telephone&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;+43...&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;priceRange&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;$$-$$$&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;google-business-profile&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-business-profile&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Business Profile&lt;/h3&gt;
&lt;p&gt;Mantén tu perfil de Google Business actualizado con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Horarios correctos y actualizados&lt;/li&gt;
&lt;li&gt;Fotos recientes del equipo y oficina&lt;/li&gt;
&lt;li&gt;Respuestas a todas las reseñas&lt;/li&gt;
&lt;li&gt;Publicaciones semanales con novedades&lt;/li&gt;
&lt;li&gt;Categorías precisas de servicio&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-contenido-multilingue-para-búsqueda-por-voz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-contenido-multilingue-para-búsqueda-por-voz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Contenido multilingue para búsqueda por voz&lt;/h2&gt;
&lt;p&gt;En 2026, los asistentes de voz son cada vez más competentes en multiples idiomas. Para sitios multilingues como wppoland.com, esto presenta una oportunidad única.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-multilingue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-multilingue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia multilingue&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hreflang correcto&lt;/strong&gt;: Asegura que las etiquetas hreflang apunten a las versiones correctas en cada idioma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema por idioma&lt;/strong&gt;: Cada versión linguistica debe tener su propio schema Speakable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido nativo&lt;/strong&gt;: No traduzcas literalmente - adapta las consultas de voz al patron conversacional de cada idioma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entidades localizadas&lt;/strong&gt;: Usa referencias locales relevantes para cada mercado&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-metricas-y-medicion-de-éxito-en-búsqueda-por-voz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-metricas-y-medicion-de-éxito-en-búsqueda-por-voz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Metricas y medicion de éxito en búsqueda por voz&lt;/h2&gt;
&lt;h3 id=&quot;como-saber-si-tu-optimización-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-saber-si-tu-optimización-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como saber si tu optimización funciona&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Featured Snippets&lt;/strong&gt;: Si apareces en snippets de Google, es probable que los asistentes de voz usen tu contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consultas de pregunta&lt;/strong&gt;: En Google Search Console, filtra por consultas que empiezan con “como”, “que”, “por que”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico móvil local&lt;/strong&gt;: Aumentos en tráfico móvil desde búsquedas locales pueden indicar tráfico de voz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menciones de marca&lt;/strong&gt;: Monitorea si los asistentes de IA citan tu marca&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;consejo-pro-crea-una-página-de-faq-dedicada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consejo-pro-crea-una-página-de-faq-dedicada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consejo PRO: Crea una página de FAQ dedicada&lt;/h2&gt;
&lt;p&gt;Una página de Preguntas Frecuentes bien estructurada es oro puro para la búsqueda por voz. Cada par pregunta-respuesta es un candidato perfecto para que un asistente de voz lo lea directamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estructura optima:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pregunta como H2 (exactamente como la haria un usuario hablando)&lt;/li&gt;
&lt;li&gt;Respuesta directa en las primeras 50 palabras&lt;/li&gt;
&lt;li&gt;Schema FAQPage implementado correctamente&lt;/li&gt;
&lt;li&gt;Speakable marcado en cada respuesta&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La búsqueda por voz en 2026 se trata de ser la voz más útil en la habitacion. Al optimizar tu sitio WordPress con &lt;strong&gt;Schema Speakable&lt;/strong&gt;, enfocarte en &lt;strong&gt;claridad conversacional&lt;/strong&gt; y garantizar un &lt;strong&gt;rendimiento excepcional&lt;/strong&gt;, conviertes tus palabras escritas en autoridad hablada.&lt;/p&gt;
&lt;p&gt;Las empresas que dominan la búsqueda por voz hoy seran las marcas que los consumidores “escuchen” mañana - literalmente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tu sitio esta listo para ser escuchado?&lt;/strong&gt; Descubre nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; o &lt;a href=&quot;/es/contacto/&quot;&gt;contactanos&lt;/a&gt; para una evaluación gratuita de visibilidad en IA.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">voice-search</category><category domain="tag">speakable-schema</category><category domain="tag">conversational-ai</category><category domain="tag">seo-strategy</category><category domain="tag">smarthome</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>Speculation Rules API para WordPress y WooCommerce</title><link>https://wppoland.com/es/speculation-rules-api-wordpress-woocommerce-performance-2026/</link><guid isPermaLink="true">https://wppoland.com/es/speculation-rules-api-wordpress-woocommerce-performance-2026/</guid><description>Guia práctica de Speculation Rules API, prefetch, prerender y técnicas modernas de optimización. Código que funciona en 2026.</description><pubDate>Thu, 22 Jan 2026 12:08:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, los usuarios esperan navegación en menos de 2 segundos. Cada segundo adicional de tiempo de carga cuesta un &lt;strong&gt;7% en conversiones perdidas&lt;/strong&gt;. Google lo sabe y recompensa a los sitios rápidos con mejores posiciones en los resultados de búsqueda.&lt;/p&gt;
&lt;p&gt;Esta guía no es teoria. Es &lt;strong&gt;código funcional&lt;/strong&gt; y una lista de verificación que puedes implementar hoy en tu sitio WordPress o &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tienda WooCommerce&lt;/a&gt;. Cada técnica ha sido probada en producción y los resultados son medibles y verificables.&lt;/p&gt;
&lt;h2 id=&quot;1-por-que-el-rendimiento-sigue-importando-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-por-que-el-rendimiento-sigue-importando-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Por que el rendimiento sigue importando en 2026&lt;/h2&gt;
&lt;h3 id=&quot;expectativas-del-usuario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#expectativas-del-usuario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Expectativas del usuario&lt;/h3&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tiempo de Carga&lt;/th&gt;&lt;th&gt;Tasa de Rebote&lt;/th&gt;&lt;th&gt;Conversión&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;#x3C; 2s&lt;/td&gt;&lt;td&gt;9%&lt;/td&gt;&lt;td&gt;Base&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3s&lt;/td&gt;&lt;td&gt;32%&lt;/td&gt;&lt;td&gt;-7%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5s&lt;/td&gt;&lt;td&gt;90%&lt;/td&gt;&lt;td&gt;-22%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Google confirmo: &lt;strong&gt;Core Web Vitals son un factor de clasificación&lt;/strong&gt;. En 2024, FID fue reemplazado por &lt;strong&gt;INP (Interaction to Next Paint)&lt;/strong&gt;, una metrica que mide la responsividad de la página ante las interacciones del usuario. En 2026, el umbral de INP se ha endurecido aun mas, y los sitios que no cumplen experimentan caidas significativas en tráfico organico.&lt;/p&gt;
&lt;h3 id=&quot;velocidad-real-vs-percibida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-real-vs-percibida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad real vs. percibida&lt;/h3&gt;
&lt;p&gt;Puedes tener un servidor lento (TTFB 800ms), pero si el usuario &lt;strong&gt;ve contenido instantaneamente&lt;/strong&gt; y &lt;strong&gt;la navegación se siente instantanea&lt;/strong&gt;, el rendimiento percibido es excelente. Esta distincion es crucial para la estrategia de optimización: a veces es más efectivo mejorar la percepcion que reducir milisegundos del servidor.&lt;/p&gt;
&lt;p&gt;Eso es exactamente lo que hace la &lt;strong&gt;Speculation Rules API&lt;/strong&gt;: precarga las siguientes páginas en segundo plano antes de que el usuario haga clic. El resultado es una experiencia de navegación que se siente instantanea, incluso en conexiónes lentas.&lt;/p&gt;
&lt;h2 id=&quot;2-optimizaciónes-base-haz-esto-primero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-optimizaciónes-base-haz-esto-primero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Optimizaciónes base (haz esto primero)&lt;/h2&gt;
&lt;p&gt;Antes de implementar técnicas avanzadas, asegurate de que los fundamentos esten solidos. Sin una base optimizada, las técnicas avanzadas tendran un impacto minimo.&lt;/p&gt;
&lt;h3 id=&quot;css-crítico-y-diferir-javascript&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-crítico-y-diferir-javascript&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS crítico y diferir JavaScript&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// functions.php - Diferir JS no critico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script_loader_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tag, $handle) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $defer_scripts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-embed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;comment-reply&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($handle, $defer_scripts)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; defer src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $tag);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tag;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;imágenes-avif--webp--jpeg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-avif--webp--jpeg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes: AVIF &gt; WEBP &gt; JPEG&lt;/h3&gt;
&lt;p&gt;WordPress 6.5+ soporta &lt;strong&gt;AVIF nativamente&lt;/strong&gt;. AVIF ofrece un 20-30% de mejor compresion que WebP, lo que se traduce en páginas más ligeras y tiempos de carga más rápidos sin sacrificar calidad visual.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;producto.avif&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;producto-400.avif 400w, producto-800.avif 800w&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  sizes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;(max-width: 600px) 400px, 800px&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  decoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;async&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Producto&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ttfb-primer-byte-bajo-200ms&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ttfb-primer-byte-bajo-200ms&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TTFB: Primer byte bajo 200ms&lt;/h3&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Optimización&lt;/th&gt;&lt;th&gt;Impacto en TTFB&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;PHP 8.3+ con OPcache&lt;/td&gt;&lt;td&gt;-30%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Redis Object Cache&lt;/td&gt;&lt;td&gt;-50%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CDN Edge Caching&lt;/td&gt;&lt;td&gt;-70%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WP-Cron en crontab del sistema&lt;/td&gt;&lt;td&gt;-10%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;3-javascript-runtime-e-hilo-principal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-javascript-runtime-e-hilo-principal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. JavaScript runtime e hilo principal&lt;/h2&gt;
&lt;h3 id=&quot;corrigiendo-inp-interaction-to-next-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#corrigiendo-inp-interaction-to-next-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Corrigiendo INP (Interaction to Next Paint)&lt;/h3&gt;
&lt;p&gt;INP sufre cuando el hilo principal esta bloqueado. Los culpables tipicos son los constructores de páginas pesados (Elementor, Divi), scripts de chat (Intercom, Zendesk) y pixeles de seguimiento (Facebook, Google Ads).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución: Dividir Tareas Largas&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Dividir tareas largas en fragmentos menores &amp;#x3C; 50ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; longTask&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; items) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; processItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(item);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Ceder al hilo principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Promise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;resolve&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; setTimeout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(resolve, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;previniendo-cls-desplazamiento-de-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#previniendo-cls-desplazamiento-de-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Previniendo CLS (desplazamiento de diseño)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Reservar espacio para imagenes */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    aspect-ratio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Reservar espacio para anuncios */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.ad-slot&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    min-height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;250&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-speculation-rules-api-la-magia-del-prefetch-y-prerender&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-speculation-rules-api-la-magia-del-prefetch-y-prerender&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Speculation Rules API: La magia del prefetch y prerender&lt;/h2&gt;
&lt;p&gt;Este es el corazon de esta guía. &lt;strong&gt;Speculation Rules API&lt;/strong&gt; es una función nativa del navegador que permite precargar páginas en segundo plano, haciendo que la navegación se sienta instantanea para el usuario.&lt;/p&gt;
&lt;h3 id=&quot;prefetch-básico-inicio-seguro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prefetch-básico-inicio-seguro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prefetch básico (inicio seguro)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;speculationrules&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &quot;prefetch&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;source&quot;: &quot;document&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;where&quot;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        &quot;and&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          { &quot;href_matches&quot;: &quot;/*&quot; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          { &quot;not&quot;: { &quot;href_matches&quot;: &quot;/wp-admin/*&quot; } },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          { &quot;not&quot;: { &quot;href_matches&quot;: &quot;*.pdf&quot; } }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;eagerness&quot;: &quot;moderate&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;prerender-avanzado-para-enlaces-de-alta-intencion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prerender-avanzado-para-enlaces-de-alta-intencion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prerender avanzado (para enlaces de alta intencion)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;speculationrules&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &quot;prerender&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;source&quot;: &quot;list&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;urls&quot;: [&quot;/cart/&quot;, &quot;/checkout/&quot;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;eagerness&quot;: &quot;immediate&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;source&quot;: &quot;document&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;where&quot;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        &quot;or&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          { &quot;href_matches&quot;: &quot;/product/*&quot; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          { &quot;selector_matches&quot;: &quot;.important-link&quot; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;eagerness&quot;: &quot;moderate&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;diferencias-prefetch-vs-prerender&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diferencias-prefetch-vs-prerender&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diferencias: Prefetch vs Prerender&lt;/h3&gt;























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Técnica&lt;/th&gt;&lt;th&gt;Que Hace&lt;/th&gt;&lt;th&gt;Cuando Usar&lt;/th&gt;&lt;th&gt;Costo de Recursos&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Prefetch&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Descarga HTML/CSS/JS&lt;/td&gt;&lt;td&gt;Siempre seguro&lt;/td&gt;&lt;td&gt;Bajo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Prerender&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Renderizado completo DOM + JS&lt;/td&gt;&lt;td&gt;Alta probabilidad de clic&lt;/td&gt;&lt;td&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;niveles-de-eagerness&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#niveles-de-eagerness&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Niveles de eagerness&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;conservative&lt;/code&gt;&lt;/strong&gt;: Solo cuando el usuario hace clic y mantiene&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;moderate&lt;/code&gt;&lt;/strong&gt;: Hover/pointer down (mejor para la mayoria de casos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;immediate&lt;/code&gt;&lt;/strong&gt;: Inmediatamente despues de cargar la página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;eager&lt;/code&gt;&lt;/strong&gt;: Inmediatamente, agresivamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Implementación en WordPress&lt;/h2&gt;
&lt;h3 id=&quot;método-1-plugin-rápido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-plugin-rápido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Plugin (rápido)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Plugin Name: Speculation Rules API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;speculationrules&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &quot;prefetch&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          &quot;source&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;document&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          &quot;where&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &quot;and&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;href_matches&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;not&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;href_matches&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/wp-*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          &quot;eagerness&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;moderate&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;método-2-reglas-dinámicas-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-reglas-dinámicas-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Reglas dinámicas (avanzado)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $prerender_urls &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Prerenderizar productos del carrito&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;function_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WC&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; WC&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;cart) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;WC&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;cart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_cart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $item) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $prerender_urls[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($item[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Prerenderizar siguiente página del archivo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_archive&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_home&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $next_link &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_next_posts_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($next_link) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;href=&quot;([^&quot;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $next_link, $matches);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($matches[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $prerender_urls[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $matches[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($prerender_urls)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $rules &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;prerender&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;source&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;list&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;urls&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_unique&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($prerender_urls),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;eagerness&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;moderate&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;script type=&quot;speculationrules&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($rules) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/script&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-casos-de-estudio-antes-y-despues&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-casos-de-estudio-antes-y-despues&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Casos de estudio: Antes y despues&lt;/h2&gt;
&lt;h3 id=&quot;caso-1-tienda-woocommerce-500-productos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-1-tienda-woocommerce-500-productos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso 1: Tienda WooCommerce (500 productos)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: La navegación de Categoría a Producto tomaba 3.2s&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Prefetch para enlaces en el viewport, prerender para “Agregar al Carrito” y “Checkout”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: De 3.2s a 0.4s (percepcion instantanea). Tasa de rebote: -28%.&lt;/p&gt;
&lt;h3 id=&quot;caso-2-blog-wordpress-1000-artículos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-2-blog-wordpress-1000-artículos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso 2: Blog WordPress (1000+ artículos)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: INP 450ms, los usuarios sentian “lag”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Diferir todos los scripts, prerender para “Leer mas”, Object Cache (Redis)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: INP de 450ms a 85ms. LCP de 2.8s a 1.2s. Tráfico organico: +35%.&lt;/p&gt;
&lt;h2 id=&quot;7-errores-comunes-y-advertencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-errores-comunes-y-advertencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Errores comunes y advertencias&lt;/h2&gt;
&lt;h3 id=&quot;no-prerenderizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#no-prerenderizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;No prerenderizar:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Páginas con autenticación (login, panel de usuario)&lt;/li&gt;
&lt;li&gt;Páginas con efectos secundarios (suscripciones, pagos)&lt;/li&gt;
&lt;li&gt;URLs externas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;limitaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mobile Data Saver&lt;/strong&gt; desactiva la especulacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navegadores no compatibles&lt;/strong&gt; (Firefox, Safari &amp;#x3C; 17) ignoran las reglas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limite de prerender&lt;/strong&gt;: Chrome permite maximo 10 simultaneamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fallback-para-navegadores-no-compatibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fallback-para-navegadores-no-compatibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fallback para navegadores no compatibles&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;HTMLScriptElement.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;supports&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;?.(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;speculationrules&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Fallback: prefetch clasico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a[href^=&quot;/&quot;]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        link.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mouseenter&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; prefetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            prefetch.rel &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;prefetch&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            prefetch.href &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; link.href;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            document.head.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(prefetch);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }, { once: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;8-soporte-de-navegadores-enero-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-soporte-de-navegadores-enero-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Soporte de navegadores (enero 2026)&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Navegador&lt;/th&gt;&lt;th&gt;Prefetch&lt;/th&gt;&lt;th&gt;Prerender&lt;/th&gt;&lt;th&gt;Notas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Chrome 121+&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Soporte completo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edge 121+&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Soporte completo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Safari 17.4+&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Parcial&lt;/td&gt;&lt;td&gt;Soporte parcial&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Firefox&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Planificado&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;9-lista-de-verificación-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-lista-de-verificación-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Lista de verificación de implementación&lt;/h2&gt;
&lt;h3 id=&quot;antes-de-implementar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#antes-de-implementar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Antes de implementar&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Medir puntuacion Lighthouse base&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar TTFB &amp;#x3C; 200ms&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Asegurar que Object Cache este activo&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Imágenes servidas como AVIF&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implementación-de-speculation-rules&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-de-speculation-rules&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación de Speculation Rules&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Agregar prefetch básico (moderate)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Analizar mapas de calor (Hotjar, Clarity)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Identificar top 3 rutas de navegación&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Agregar prerender para enlaces de alta intencion&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Probar en 10% del tráfico (A/B)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Monitorear prefetches “desperdiciados”&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Speculation Rules API&lt;/strong&gt; es un cambio de juego para 2026. Al precargar páginas en segundo plano, la navegación se vuelve &lt;strong&gt;instantanea&lt;/strong&gt; sin cambios de infraestructura.&lt;/p&gt;
&lt;p&gt;Puntos clave:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Comienza con &lt;strong&gt;prefetch con eagerness moderate&lt;/strong&gt;, es seguro&lt;/li&gt;
&lt;li&gt;Agrega &lt;strong&gt;prerender para el flujo de checkout&lt;/strong&gt; en e-commerce&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorea metricas&lt;/strong&gt;, no adivines, mide&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Necesitas &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización profesional&lt;/a&gt;? Como &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt;, ayudo a acelerar sitios WordPress y WooCommerce. Consulta también la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>performance</category><category>development</category><category>woocommerce</category><category domain="tag">speculation-rules-api</category><category domain="tag">core-web-vitals</category><category domain="tag">prefetch</category><category domain="tag">prerender</category><category domain="tag">wordpress-optimization</category><enclosure url="https://wppoland.com/images/og/speculation-rules-api-performance.jpg" type="image/jpeg"/></item><item><title>WordUp Gdynia #24 Encuentro Społeczności Wordpress 2026</title><link>https://wppoland.com/es/wordup-gdynia-24-meetup/</link><guid isPermaLink="true">https://wppoland.com/es/wordup-gdynia-24-meetup/</guid><description>Resumen del encuentro WordUp Gdynia #24 de la comunidad WordPress en 2026. Presentaciones, talleres prácticos y networking local.</description><pubDate>Sat, 17 Jan 2026 23:44:00 GMT</pubDate><content:encoded>&lt;p&gt;Este artículo en español resume el tema “WordUp Gdynia #24 Encuentro Społeczności Wordpress 2026” con un enfoque práctico y actual. La idea no es repetir un titular sin contexto, sino explicar por qué este asunto sigue siendo relevante, qué decisiones conviene tomar y dónde suelen aparecer los errores más comunes en proyectos WordPress reales.&lt;/p&gt;
&lt;h2 id=&quot;contexto-y-relevancia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-relevancia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y relevancia&lt;/h2&gt;
&lt;p&gt;Las publicaciónes sobre comunidad y eventos WordPress no solo documentan una fecha en el calendario. También ayudan a entender hacia dónde se mueve el ecosistema, qué debates ganan peso y cómo cambian las prioridades técnicas y de negocio entre equipos, agencias y colaboradores del proyecto.&lt;/p&gt;
&lt;h2 id=&quot;qué-conviene-tener-en-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-conviene-tener-en-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué conviene tener en cuenta&lt;/h2&gt;
&lt;p&gt;En encuentros como WordCamp, WordUp o hackathons, el valor no está únicamente en las charlas. Muchas veces lo más útil sale de conversaciones informales, revisión de casos reales y contraste de experiencias sobre rendimiento, producto, gobernanza o trabajo con clientes.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión práctica&lt;/h2&gt;
&lt;p&gt;Por eso este tipo de contenido también merece una versión en español. Aporta contexto, conserva aprendizajes del ecosistema y deja trazabilidad sobre temas que luego acaban influyendo en decisiones técnicas más amplias.&lt;/p&gt;
&lt;p&gt;Fuente base revisada: wordup-gdynia-24-meetup.pl.md. El contenido se ha adaptado a una versión española útil, evitando dejar una entrada mínima o vacía dentro del repositorio multilingüe.&lt;/p&gt;</content:encoded><category>events</category><category>wordpress</category><category>networking</category><category domain="tag">wordup</category><category domain="tag">gdynia</category><category domain="tag">wordpress</category><category domain="tag">spotkanie</category><category domain="tag">warsztaty</category><enclosure url="https://wppoland.com/images/og/wordpress-meetup-gdynia-networking.jpg" type="image/jpeg"/></item><item><title>Mejor CMS para SaaS en 2026: Las 10 mejores plataformas comparadas</title><link>https://wppoland.com/es/top-10-cms-platforms-for-saas-2026-comprehensive-guide/</link><guid isPermaLink="true">https://wppoland.com/es/top-10-cms-platforms-for-saas-2026-comprehensive-guide/</guid><description>Busca el mejor CMS para SaaS en 2026? Compare las 10 mejores plataformas en marketing, escalabilidad, propiedad, flexibilidad API y crecimiento a largo plazo.</description><pubDate>Fri, 16 Jan 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Elegir el CMS correcto para su empresa SaaS en 2026 es una decision estrategica que afecta al SEO, la velocidad de desarrollo, la escalabilidad y el coste total de propiedad durante años. El mercado de CMS ha evolucionado drasticamente: ya no se trata solo de gestionar contenido, sino de construir una pila tecnológica de marketing completa que impulse el crecimiento.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía compara las 10 mejores plataformas CMS para SaaS en 2026, analizando fortalezas, debilidades, costes y casos de uso ideales para cada una.&lt;/p&gt;
&lt;h2 id=&quot;1-wordpress-el-lider-versatil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-wordpress-el-lider-versatil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. WordPress: El lider versatil&lt;/h2&gt;
&lt;p&gt;WordPress sigue siendo la opción CMS más completa para sitios web de marketing SaaS en 2026. Su ecosistema de 60.000+ plugins, su comunidad masiva y su flexibilidad tanto como CMS tradicional como headless lo convierten en la apuesta más segura para la mayoria de las empresas SaaS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas para SaaS:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Control total sobre SEO, rendimiento y personalización&lt;/li&gt;
&lt;li&gt;Funciona como CMS tradicional o headless (REST API + WPGraphQL)&lt;/li&gt;
&lt;li&gt;Ecosistema maduro con integraciones para cualquier herramienta de marketing&lt;/li&gt;
&lt;li&gt;Sin costes de licencia (código abierto)&lt;/li&gt;
&lt;li&gt;Comunidad global masiva para soporte y contratacion de talento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requiere mantenimiento y actualizaciones de seguridad&lt;/li&gt;
&lt;li&gt;La curva de aprendizaje inicial es mayor que los constructores SaaS&lt;/li&gt;
&lt;li&gt;Necesita hosting gestionado para rendimiento optimo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 2.000 - 50.000 EUR dependiendo del hosting y las extensiónes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; SaaS de cualquier tamaño que prioriza SEO, flexibilidad y propiedad de datos. Especialmente fuerte para sitios con mucho contenido (blog, documentación, base de conocimiento).&lt;/p&gt;
&lt;h2 id=&quot;2-contentful-el-headless-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-contentful-el-headless-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Contentful: El headless empresarial&lt;/h2&gt;
&lt;p&gt;Contentful es un CMS headless puro que separa completamente la gestión de contenido de la presentacion. Es la opción preferida por grandes empresas SaaS que necesitan servir contenido a multiples canales (web, app móvil, IoT).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API REST y GraphQL nativas de alta calidad&lt;/li&gt;
&lt;li&gt;Modelo de contenido extremadamente flexible y estructurado&lt;/li&gt;
&lt;li&gt;Escalabilidad probada a millones de elementos de contenido&lt;/li&gt;
&lt;li&gt;CDN global integrado con alta disponibilidade&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coste elevado para equipos medianos/grandes (a partir de 489 USD/mes)&lt;/li&gt;
&lt;li&gt;Sin frontend integrado (requiere desarrollo separado)&lt;/li&gt;
&lt;li&gt;Curva de aprendizaje significativa para editores no técnicos&lt;/li&gt;
&lt;li&gt;Vendor lock-in considerable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 6.000 - 120.000+ EUR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; SaaS empresarial con equipos de desarrollo dedicados y necesidades multicanal.&lt;/p&gt;
&lt;h2 id=&quot;3-sanity-flexibilidad-estructurada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-sanity-flexibilidad-estructurada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Sanity: Flexibilidad estructurada&lt;/h2&gt;
&lt;p&gt;Sanity ofrece un enfoque único con su “Structured Content” y un editor en tiempo real colaborativo. Su modelo de datos personalizable permite modelar cualquier tipo de contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Esquema de contenido 100% personalizable con GROQ (lenguaje de consulta propio)&lt;/li&gt;
&lt;li&gt;Colaboración en tiempo real entre editores&lt;/li&gt;
&lt;li&gt;Plan gratuito generoso para proyectos pequeños&lt;/li&gt;
&lt;li&gt;Portable Text para contenido rico sin vendor lock-in&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requiere conocimientos de desarrollo para configurar&lt;/li&gt;
&lt;li&gt;Ecosistema de plugins más pequeño que WordPress o Contentful&lt;/li&gt;
&lt;li&gt;GROQ requiere aprendizaje (no es REST estándar ni GraphQL)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 0 - 100.000+ EUR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; Startups tecnológicas con desarrolladores internos que quieren maximo control sobre el modelo de datos.&lt;/p&gt;
&lt;h2 id=&quot;4-webflow-diseño-sin-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-webflow-diseño-sin-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Webflow: Diseño sin código&lt;/h2&gt;
&lt;p&gt;Webflow combina un constructor visual potente con capacidades CMS y hosting integrado. Es la opción preferida por equipos de marketing que quieren iterar rápidamente sin depender de desarrolladores.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Constructor visual profesional con control CSS completo&lt;/li&gt;
&lt;li&gt;CMS integrado con colecciones de datos estructuradas&lt;/li&gt;
&lt;li&gt;Hosting y CDN incluidos con rendimiento solido&lt;/li&gt;
&lt;li&gt;Animaciones e interacciones avanzadas sin código&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vendor lock-in significativo (no puede exportar su sitio)&lt;/li&gt;
&lt;li&gt;Limitaciones en lógica de negocio compleja&lt;/li&gt;
&lt;li&gt;Coste elevado para sitios grandes con muchos editores&lt;/li&gt;
&lt;li&gt;SEO limitado comparado con WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 2.000 - 30.000 EUR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; Startups en fase temprana con equipos de diseño fuertes que necesitan iterar rápidamente en landing pages y sitios de marketing.&lt;/p&gt;
&lt;h2 id=&quot;5-framer-prototipado-a-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-framer-prototipado-a-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Framer: Prototipado a producción&lt;/h2&gt;
&lt;p&gt;Framer ha evolucionado de una herramienta de prototipado a un constructor de sitios web completo. Su enfoque en la velocidad de desarrollo y el diseño lo hace ideal para MVPs y sitios de marketing de alta conversión.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Velocidad de desarrollo extremadamente alta&lt;/li&gt;
&lt;li&gt;Integración nativa con Figma&lt;/li&gt;
&lt;li&gt;Rendimiento excelente con generación estatica&lt;/li&gt;
&lt;li&gt;CMS básico integrado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CMS limitado para contenido complejo&lt;/li&gt;
&lt;li&gt;Vendor lock-in total&lt;/li&gt;
&lt;li&gt;Ecosistema de integraciones pequeño&lt;/li&gt;
&lt;li&gt;No adecuado para sitios con mucho contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 600 - 6.000 EUR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; Startups pre-product-market-fit que necesitan landing pages de alta conversión rápidamente.&lt;/p&gt;
&lt;h2 id=&quot;6-strapi-headless-de-código-abierto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-strapi-headless-de-código-abierto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Strapi: Headless de código abierto&lt;/h2&gt;
&lt;p&gt;Strapi es el CMS headless de código abierto más popular, ofreciendo la flexibilidad de Contentful sin el coste de licencia. En 2026, Strapi 5 ha madurado significativamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Código abierto (sin costes de licencia)&lt;/li&gt;
&lt;li&gt;Auto-alojado (control total sobre datos)&lt;/li&gt;
&lt;li&gt;API REST y GraphQL automáticas&lt;/li&gt;
&lt;li&gt;Panel de administración personalizable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requiere DevOps para despliegue y mantenimiento&lt;/li&gt;
&lt;li&gt;Ecosistema más pequeño que WordPress&lt;/li&gt;
&lt;li&gt;La versión cloud (Strapi Cloud) es relativamente nueva&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 1.000 - 20.000 EUR (hosting + mantenimiento).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; Startups tecnológicas que quieren un CMS headless sin vendor lock-in y con control total.&lt;/p&gt;
&lt;h2 id=&quot;7-ghost-publicación-profesional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-ghost-publicación-profesional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Ghost: Publicación profesional&lt;/h2&gt;
&lt;p&gt;Ghost es un CMS especializado en publicación y newsletters. Es la opción ideal para SaaS que priorizan el contenido editorial como motor de crecimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rendimiento excepcional (Node.js nativo)&lt;/li&gt;
&lt;li&gt;Newsletters y membresias integradas&lt;/li&gt;
&lt;li&gt;Editor de contenido elegante y enfocado&lt;/li&gt;
&lt;li&gt;SEO optimizado por defecto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limitado a publicación y membresias&lt;/li&gt;
&lt;li&gt;Ecosistema de temas y extensiónes pequeño&lt;/li&gt;
&lt;li&gt;No adecuado como CMS general para sitios de marketing complejos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 1.000 - 6.000 EUR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; SaaS que utilizan content marketing y newsletters como canal principal de adquisicion.&lt;/p&gt;
&lt;h2 id=&quot;8-astro-con-cms-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-astro-con-cms-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Astro con CMS de archivos&lt;/h2&gt;
&lt;p&gt;Astro no es un CMS en si mismo, pero su sistema de colecciones de contenido basado en archivos Markdown/MDX es sorprendentemente potente para sitios de documentación y blogs técnicos de SaaS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rendimiento imbatible (cero JavaScript por defecto)&lt;/li&gt;
&lt;li&gt;Content Collections con validación de esquema&lt;/li&gt;
&lt;li&gt;Compatible con cualquier CMS headless como backend&lt;/li&gt;
&lt;li&gt;Ideal para documentación técnica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requiere conocimientos de desarrollo&lt;/li&gt;
&lt;li&gt;Sin panel de administración visual (edicion en archivos)&lt;/li&gt;
&lt;li&gt;No adecuado para editores no técnicos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 500 - 5.000 EUR (hosting).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; SaaS tecnológicos con documentación extensa y blogs técnicos gestionados por desarrolladores.&lt;/p&gt;
&lt;h2 id=&quot;9-directus-cms-headless-con-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-directus-cms-headless-con-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Directus: CMS headless con base de datos&lt;/h2&gt;
&lt;p&gt;Directus convierte cualquier base de datos SQL en un CMS headless con API automática. Es ideal para SaaS que ya tienen datos estructurados en bases de datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se conecta directamente a bases de datos existentes&lt;/li&gt;
&lt;li&gt;Panel de administración generado automáticamente&lt;/li&gt;
&lt;li&gt;API REST y GraphQL automáticas&lt;/li&gt;
&lt;li&gt;Código abierto y auto-alojado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requiere conocimientos de bases de datos&lt;/li&gt;
&lt;li&gt;Menos intuitivo para editores de contenido puro&lt;/li&gt;
&lt;li&gt;Comunidad más pequeña&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 1.000 - 15.000 EUR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; SaaS con datos existentes en bases de datos SQL que necesitan un panel de administración rápido.&lt;/p&gt;
&lt;h2 id=&quot;10-payload-cms-el-nuevo-contendiente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-payload-cms-el-nuevo-contendiente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Payload CMS: El nuevo contendiente&lt;/h2&gt;
&lt;p&gt;Payload es un CMS headless TypeScript-first que ha ganado traccion rápida en 2026. Ofrece un enfoque moderno con tipado fuerte y control total del código.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TypeScript nativo con tipos generados automáticamente&lt;/li&gt;
&lt;li&gt;Control total del código (sin magia oculta)&lt;/li&gt;
&lt;li&gt;Panel de administración personalizable por componentes React&lt;/li&gt;
&lt;li&gt;Excelente experiencia de desarrollo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ecosistema joven y en desarrollo&lt;/li&gt;
&lt;li&gt;Requiere desarrolladores TypeScript&lt;/li&gt;
&lt;li&gt;Documentación aun en crecimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coste total (anual):&lt;/strong&gt; 1.000 - 10.000 EUR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideal para:&lt;/strong&gt; Startups tecnológicas con equipos TypeScript que quieren un CMS moderno y totalmente personalizable.&lt;/p&gt;
&lt;h2 id=&quot;tabla-comparativa-completa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-comparativa-completa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla comparativa completa&lt;/h2&gt;








































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;CMS&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Tipo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Coste anual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;SEO&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Escalabilidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Vendor Lock-in&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ideal para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;WordPress&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Hibrido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-50K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Todo tipo de SaaS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Contentful&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Headless&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;6-120K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Enterprise&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Sanity&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Headless&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-100K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dev-first&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Webflow&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Visual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-30K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Design-first&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Framer&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Visual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.6-6K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;MVPs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Strapi&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Headless OSS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-20K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dev-first&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Ghost&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Publicación&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-6K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy bueno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Content-first&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Astro&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Archivos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5-5K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Docs/Blog tech&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Directus&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;DB-first&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-15K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Data-first&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Payload&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Headless TS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-10K EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;TS-first&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;cual-es-el-mejor-cms-para-sitios-web-saas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cual-es-el-mejor-cms-para-sitios-web-saas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cual es el mejor CMS para sitios web SaaS&lt;/h2&gt;
&lt;p&gt;La respuesta depende de tu etapa, equipo y trayectoria de crecimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pre-seed a Serie A&lt;/strong&gt; (la velocidad importa mas): Framer o Webflow. Lanza rápido, itera semanalmente, preocupate del SEO después.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Serie A a B&lt;/strong&gt; (SEO y escala de contenido): WordPress. Propiedad total, control profundo de SEO, menor TCO a medida que crece el volumen de contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Serie C+ enterprise&lt;/strong&gt; (contenido estructurado, omnicanal): Contentful o Sanity. Arquitectura API-first para servir contenido en web, móvil, documentación y portales de partners.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SaaS enfocado en desarrolladores&lt;/strong&gt; (DevTools, código abierto): Statamic o Ghost. Overhead minimo, flujos de trabajo nativos con Git, credibilidad ante desarrolladores.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ningun CMS es “el mejor” de forma aislada. El mejor CMS es el que se ajusta a la capacidad técnica de tu equipo, tu volumen de contenido y tu plan de crecimiento a 24 meses.&lt;/p&gt;
&lt;h2 id=&quot;mejor-cms-para-gestión-de-contenido-saas-y-publicación-omnicanal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejor-cms-para-gestión-de-contenido-saas-y-publicación-omnicanal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejor CMS para gestión de contenido SaaS y publicación omnicanal&lt;/h2&gt;
&lt;p&gt;Si tu SaaS necesita servir contenido a través de multiples canales (sitio de marketing, centro de ayuda in-app, aplicación móvil, documentación para partners), el CMS debe soportar contenido estructurado que separe la presentación de los datos.&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;CMS&lt;/th&gt;&lt;th&gt;Contenido estructurado&lt;/th&gt;&lt;th&gt;Entrega omnicanal&lt;/th&gt;&lt;th&gt;Tipo de API&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Contentful&lt;/td&gt;&lt;td&gt;Excelente (tipos de contenido, referencias, locales)&lt;/td&gt;&lt;td&gt;Multicanal nativo&lt;/td&gt;&lt;td&gt;GraphQL + REST&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sanity&lt;/td&gt;&lt;td&gt;Excelente (Portable Text, esquemás personalizados)&lt;/td&gt;&lt;td&gt;Multicanal nativo&lt;/td&gt;&lt;td&gt;GROQ + GraphQL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WordPress (headless)&lt;/td&gt;&lt;td&gt;Bueno (ACF, custom post types, WPGraphQL)&lt;/td&gt;&lt;td&gt;Via consumidores de API&lt;/td&gt;&lt;td&gt;GraphQL + REST&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Strapi&lt;/td&gt;&lt;td&gt;Bueno (tipos de contenido personalizados, componentes)&lt;/td&gt;&lt;td&gt;Via consumidores de API&lt;/td&gt;&lt;td&gt;GraphQL + REST&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HubSpot CMS&lt;/td&gt;&lt;td&gt;Limitado (estructura enfocada en marketing)&lt;/td&gt;&lt;td&gt;Solo ecosistema HubSpot&lt;/td&gt;&lt;td&gt;REST&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para una publicación omnicanal real, Contentful y Sanity lideran porque fueron diseñados API-first. WordPress puede lograr el mismo resultado en modo headless pero requiere más trabajo arquitectonico.&lt;/p&gt;
&lt;h2 id=&quot;mejor-cms-para-empresas-con-250-a-1000-empleados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejor-cms-para-empresas-con-250-a-1000-empleados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejor CMS para empresas con 250 a 1000 empleados&lt;/h2&gt;
&lt;p&gt;Las empresas del mercado medio tienen requisitos específicos que eliminan tanto los constructores “de inicio” como las plataformas con precios enterprise:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gobernanza&lt;/strong&gt;: Multiples equipos publicando simultáneamente necesitan permisos basados en roles, flujos de aprobación y registros de auditoría. WordPress, Contentful y Sanity soportan esto. Framer y Webflow no.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte multi-region&lt;/strong&gt;: Empresas que operan en varios paises necesitan localización, hreflang y contenido específico por region. WordPress (con WPML o Polylang) y Contentful (locales nativos) lo manejan bien. Squarespace no soporta hreflang en absoluto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento IT&lt;/strong&gt;: SOC 2, RGPD y politicas de seguridad internas requieren opciones de auto-alojamiento o SLAs enterprise. WordPress (auto-alojado) y Strapi (auto-alojado) dan control total. Las plataformas SaaS requieren revision de seguridad del proveedor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presupuesto&lt;/strong&gt;: En este tamaño de empresa, el presupuesto de CMS típicamente cae entre 5.000 y 50.000 EUR al año. WordPress está en el extremo bajo, Contentful en el medio, y Sitecore/Adobe en lo más alto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;cms-para-gestionar-multiples-sitios-web-regionales-o-por-pais&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cms-para-gestionar-multiples-sitios-web-regionales-o-por-pais&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CMS para gestionar multiples sitios web regionales o por pais&lt;/h2&gt;
&lt;p&gt;Ejecutar más de 5 sitios web de pais desde un único CMS es un requisito comun en SaaS. Los diferenciadores técnicos clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress Multisite&lt;/strong&gt;: Una instalación, multiples sitios. Cada region obtiene su propio contenido mientras comparte temas y plugins. Probado a escala por empresas que ejecutan más de 50 sitios regionales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contentful spaces&lt;/strong&gt;: Espacios de contenido separados por region con modelos de contenido compartidos. Fuerte para sitios regionales basados en API pero costoso a escala.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sanity datasets&lt;/strong&gt;: Similar a los spaces de Contentful pero con consultas más flexibles entre datasets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webflow&lt;/strong&gt;: Sin capacidad multi-sitio nativa. Cada region requiere un proyecto separado, haciendo la gestión complicada más alla de 3-4 sitios.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;caracteristicas-de-seguridad-esenciales-para-cms-enterprise-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caracteristicas-de-seguridad-esenciales-para-cms-enterprise-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caracteristicas de seguridad esenciales para CMS enterprise en 2026&lt;/h2&gt;
&lt;p&gt;La selección de CMS enterprise en 2026 debe tener en cuenta un panorama de amenazas ampliado. Estas capacidades de seguridad son innegociables:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Caracteristica de seguridad&lt;/th&gt;&lt;th&gt;Por que importa&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;SSO / SAML integration&lt;/td&gt;&lt;td&gt;Gestión de identidad centralizada, sin contraseñas CMS separadas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Role-based access control (RBAC)&lt;/td&gt;&lt;td&gt;Prevenir cambios de contenido no autorizados entre equipos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Audit logging&lt;/td&gt;&lt;td&gt;Requisito de cumplimiento para SOC 2, ISO 27001&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Content versióning and rollback&lt;/td&gt;&lt;td&gt;Recuperarse de cambios de contenido accidentales o maliciosos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WAF and DDoS protection&lt;/td&gt;&lt;td&gt;Proteger contra tráfico bot y ataques a nivel de aplicación&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;API rate limiting&lt;/td&gt;&lt;td&gt;Prevenir abuso de endpoints de CMS headless&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Data encryption at rest and in transit&lt;/td&gt;&lt;td&gt;Requisito RGPD y estándar de la industria&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vulnerability disclosure program&lt;/td&gt;&lt;td&gt;Manejo responsable de reportes de seguridad&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;WordPress cumple con todos estos cuando se configura correctamente con hosting enterprise (WP Engine, Automattic VIP, Pantheon). Las plataformas SaaS (Contentful, Sanity) manejan la mayoria de forma nativa pero limitan tu capacidad de personalizar los controles de seguridad.&lt;/p&gt;
&lt;h2 id=&quot;recomendacion-final&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recomendacion-final&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recomendacion final&lt;/h2&gt;
&lt;p&gt;Para la mayoria de las empresas SaaS en 2026, &lt;strong&gt;WordPress&lt;/strong&gt; sigue siendo la mejor opción por su versatilidad, ecosistema maduro, SEO superior y ausencia de vendor lock-in. Cuando se combina con un frontend moderno como Astro para maxima velocidad, la combinación es practicamente imbatible.&lt;/p&gt;
&lt;p&gt;Si esta evaluando opciones de CMS para su SaaS, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede ayudarle a tomar la decision correcta y a implementar la solución elegida. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración entre frameworks&lt;/a&gt; y &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de rendimiento&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación a medida para SaaS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro o Next.js&lt;/a&gt; - Frontends modernos&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Core Web Vitals perfectos&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; - Visibilidad en búsqueda y búsqueda por IA&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">saas-cms-2026</category><category domain="tag">best-cms-for-startups</category><category domain="tag">headless-cms-saas</category><category domain="tag">marketing-tech-stack</category><category domain="tag">performance-seo</category><enclosure url="https://wppoland.com/images/og/software-engineering-workshop-group.jpg" type="image/jpeg"/></item><item><title>Cómo rescaté una empresa estafada por una agencia: reconstrucción sobre arquitectura moderna</title><link>https://wppoland.com/es/case-study-astro-migration-agency-rescue-2026/</link><guid isPermaLink="true">https://wppoland.com/es/case-study-astro-migration-agency-rescue-2026/</guid><description>Estudio de caso de un clientes que pagó a una agencia por una plataforma profesional y recibió espagueti en PHP 5.6, jQuery y MySQL sin índices. La historia de la reconstrucción sobre React, Django, PostgreSQL, Redis y Rust.</description><pubDate>Thu, 15 Jan 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Me llamó un viernes por la noche. La voz tranquila, pero en ella podía escuchar el cansancio de alguien que lleva semanas luchando con un problema sobre el que no tiene control. Dirige una empresa de servicios que atiende a clientes en cuatro países europeos. Pagó a una agencia por una plataforma web profesional. Recibió algo que parecía una plataforma profesional. Bajo la superficie se escondía una catástrofe.&lt;/p&gt;
&lt;p&gt;Por un acuerdo de confidencialidad no puedo revelar el nombre de la empresa ni el sector. En cambio, puedo contar exactamente lo que encontré, lo que hice y por qué elegí unas tecnologías y no otras. Esta historia es un aviso para cualquiera que encargue la construcción de una plataforma a una agencia externa.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lo-que-encontré-tras-auditar-la-plataforma-de-la-agencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-encontré-tras-auditar-la-plataforma-de-la-agencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que encontré tras auditar la plataforma de la agencia&lt;/h2&gt;
&lt;p&gt;El primer paso es siempre la auditoría. No evalúo, no crítico: recojo hechos. Tras tres días de análisis tenía un panorama completo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Código espagueti en PHP 5.6:&lt;/strong&gt; la agencia no usó ningún framework. Toda la plataforma es código procedural monolítico en PHP 5.6 (fin de soporte en 2018) con consultas SQL pegadas directamente en las plantillas HTML. Sin ORM, sin capa de abstracción, sin enrutador. Archivos de 3000 líneas mezclando lógica de negocio con presentación.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Código encontrado -- consulta SQL directamente en la plantilla (anonimizado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mysql_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; services &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; category &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_GET[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&apos; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    ORDER BY id DESC&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// SQL injection -- sin ninguna validación de datos de entrada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($row &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mysql_fetch_assoc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($result)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;div class=&apos;service&apos;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;h2&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $row[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;/h2&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// XSS -- sin escapado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;p&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $row[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;/p&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;/div&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;MySQL 5.5 sin índices:&lt;/strong&gt; base de datos con 47 tablas, ninguna con índices salvo las claves primarias. Una consulta que listaba servicios con filtros ejecutaba un full table scan sobre 200 000 registros, con un tiempo medio de respuesta de 4.7 segundos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;jQuery 1.x + Bootstrap 3:&lt;/strong&gt; frontend del año 2014. Doce archivos jQuery cargados en cada página, incluyendo tres versiones distintas de la librería. Sin minificación, sin bundler, sin tree-shaking. Peso total de los scripts: 2.8 MB.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FTP como “despliegue”:&lt;/strong&gt; sin repositorio Git, sin CI/CD, sin entorno de staging. La agencia subía los archivos directamente por FTP al servidor de producción. Sin sistema de control de versiones. Sin tests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cero seguridad:&lt;/strong&gt; contraseñas de usuarios almacenadas en MD5 sin sal. Sesiones en archivos en un servidor compartido. SQL injection en 23 puntos. XSS en formularios. Sin tokens CSRF. Sin HTTPS en el panel de inicio de sesión.&lt;/p&gt;
&lt;h3 id=&quot;métricas-encontradas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métricas-encontradas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métricas encontradas&lt;/h3&gt;























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Valor&lt;/th&gt;&lt;th&gt;Evaluación&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;PageSpeed (móvil)&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LCP&lt;/td&gt;&lt;td&gt;12.4s&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;INP&lt;/td&gt;&lt;td&gt;1100ms&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CLS&lt;/td&gt;&lt;td&gt;0.52&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTFB&lt;/td&gt;&lt;td&gt;4.7s&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso de la página&lt;/td&gt;&lt;td&gt;11.2 MB&lt;/td&gt;&lt;td&gt;Excesivo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo de respuesta API&lt;/td&gt;&lt;td&gt;4.7s (promedio)&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tráfico orgánico&lt;/td&gt;&lt;td&gt;Caída del 72% interanual&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vulnerabilidades detectadas&lt;/td&gt;&lt;td&gt;23 SQL injection, 14 XSS&lt;/td&gt;&lt;td&gt;Crítico&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Lo peor era que el clientes no sabía nada de ninguno de estos problemas. La agencia le enviaba durante un año informes de “optimizaciones” que no tenían ningún reflejo en la realidad.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-qué-elegí-esta-arquitectura-tecnológica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-elegí-esta-arquitectura-tecnológica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué elegí esta arquitectura tecnológica&lt;/h2&gt;
&lt;p&gt;La decisión sobre la arquitectura objetivo es el momento más importante del proyecto. El clientes tenía dudas razonables: la agencia anterior prometió “una solución moderna” y entregó código del año 2014. Tenía que elegir tecnologías que resolvieran problemas concretos, no las que estaban de moda.&lt;/p&gt;
&lt;p&gt;Analicé los requisitos y ajusté las herramientas a las tareas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Python + Django (API backend):&lt;/strong&gt; el clientes necesitaba un backend sólido con panel de administración, autenticación, validación de datos y REST API. Django ofrece todo eso de serie. Django REST Framework es un ecosistema maduro y estable con documentación excelente. El clientes atiende a 4 mercados europeos, y Django tiene internacionalización integrada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL (base de datos):&lt;/strong&gt; migrar de MySQL 5.5 a PostgreSQL no es un capricho. PostgreSQL ofrece mejores índices (GIN, GiST para búsqueda de texto completo), mejores tipos de datos (JSONB, arrays), particionamiento de tablas maduro y transacciones ACID fiables. Para 200 000 registros con búsqueda de texto completo multilingüe es la elección natural.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Redis (caché y colas):&lt;/strong&gt; el tiempo de respuesta de la API desde 4.7 segundos tenía que bajar por debajo de 100 milisegundos. Redis cachea los resultados de las consultas, almacena las sesiones de usuario y gestiona las colas de tareas asíncronas (Celery). Una herramienta, tres funciones críticas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;React + TypeScript (frontend interactivo):&lt;/strong&gt; el dashboard del clientes, el buscador con filtros, los formularios multietapa, todo eso requiere una UI reactiva. React con TypeScript ofrece componentes tipados, excelentes herramientas de desarrollo y un ecosistema de librerías enorme.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rust (microservicio de alto rendimiento):&lt;/strong&gt; indexar la búsqueda de 200 000 registros en 4 idiomas, procesar archivos CSV/Excel de los clientes, transformar datos. Estas tareas requerían rendimiento puro. Rust procesa el índice de búsqueda en &lt;strong&gt;1.8 segundos&lt;/strong&gt; en lugar de los 47 segundos de la antigua implementación PHP. No es una diferencia porcentual, sino una diferencia de un orden de magnitud.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Astro (sitio de marketing):&lt;/strong&gt; la página principal, el blog, la oferta, las páginas de servicios son contenidos estáticos que no necesitan JavaScript. Astro genera HTML limpio con coste de ejecución cero. Los elementos interactivos (buscador, formulario de contacto) funcionan como islas React aisladas. Como &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;especialista en desarrollo Astro&lt;/a&gt;, este framework fue la eleccion natural para el sitio público.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Arquitectura objetivo:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────────────────────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                  Cloudflare CDN                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├──────────────┬───────────────┬────────────────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  Astro SSG   │  React SPA    │  Django REST API       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  (marketing) │  (dashboard)  │  (backend)             │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  HTML/CSS    │  TypeScript   │  Python 3.12           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├──────────────┴───────────────┴────────────────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                                                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ┌─────────────┐  ┌──────────┐  ┌──────────────────┐ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │ PostgreSQL   │  │  Redis   │  │  Rust service    │ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │ (primary DB) │  │  (cache) │  │  (search index,  │ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │              │  │  (queue) │  │   data processing│ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  └─────────────┘  └──────────┘  └──────────────────┘ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│                                                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ┌─────────────────────────────────────────────────┐ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  │  Python AI pipeline (content processing, NLP)    │ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  └─────────────────────────────────────────────────┘ │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────────────────────────────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;api-backend-en-django-rest-framework&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#api-backend-en-django-rest-framework&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;API backend en Django REST Framework&lt;/h2&gt;
&lt;p&gt;El núcleo de la nueva plataforma es Django con Django REST Framework. Construí una API que gestiona el catálogo multilingüe de servicios, el sistema de consultas de clientes, la autenticación JWT y el panel de administración.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# services/models.py -- modelo de servicio con multilingüismo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; django.db &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; django.contrib.postgres.indexes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; GinIndex&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; django.contrib.postgres.search &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; SearchVectorField&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Service&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;models&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Model&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    slug &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.SlugField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;max_length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;unique&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    category &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.ForeignKey(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;on_delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;models.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;PROTECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;related_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;services&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    is_active &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.BooleanField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    created_at &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.DateTimeField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;auto_now_add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    updated_at &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.DateTimeField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;auto_now&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ordering &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;-created_at&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ServiceTranslation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;models&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Model&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    service &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.ForeignKey(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        Service, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;on_delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;models.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;CASCADE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;related_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;translations&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    language &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.CharField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;max_length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;choices&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Polski&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;en&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;English&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;de&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Deutsch&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fr&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Français&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    title &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.CharField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;max_length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    description &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.TextField()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    meta_title &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.CharField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;max_length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;70&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    meta_description &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; models.CharField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;max_length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;160&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    search_vector &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; SearchVectorField(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        unique_together &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;service&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;language&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        indexes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            GinIndex(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;fields&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;search_vector&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            models.Index(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;fields&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;language&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;service&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# services/serializers.py -- serializador con validación&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; rest_framework &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; serializers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ServiceSerializer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;serializers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ModelSerializer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    translations &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ServiceTranslationSerializer(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;many&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;read_only&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    category_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; serializers.CharField(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category.name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;read_only&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        model &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Service&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        fields &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;is_active&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;translations&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;created_at&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# services/views.py -- vistas API con caché Redis&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; django.utils.decorators &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; method_decorator&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; django.views.decorators.cache &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cache_page&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; rest_framework &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; viewsets, filters&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; django_filters.rest_framework &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DjangoFilterBackend&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ServiceViewSet&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;viewsets&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ReadOnlyModelViewSet&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    queryset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Service.objects.filter(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        is_active&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ).select_related(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;category&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ).prefetch_related(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;translations&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    serializer_class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ServiceSerializer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    filter_backends &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [DjangoFilterBackend, filters.SearchFilter]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    filterset_fields &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category__slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    search_fields &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;translations__title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;translations__description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    @method_decorator&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(cache_page(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;))  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Cache 15 minut&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    def&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(self, request, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;args, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;kwargs):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; super&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;().list(request, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;args, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;**&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;kwargs)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configuración de Redis como backend de caché y broker de colas Celery:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# settings.py -- konfiguracja Redis&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;CACHES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;default&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;BACKEND&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;django_redis.cache.RedisCache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;LOCATION&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;redis://127.0.0.1:6379/0&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;OPTIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;CLIENT_CLASS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;django_redis.clientes.DefaultClient&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;SERIALIZER&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;django_redis.serializers.json.JSONSerializer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;CONNECTION_POOL_KWARGS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;max_connections&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;KEY_PREFIX&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;platform&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;TIMEOUT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;900&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 15 minut domyślnie&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Sesje w Redis (szybsze niż baza danych)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;SESSION_ENGINE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;django.contrib.sessions.backends.cache&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;SESSION_CACHE_ALIAS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;default&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Celery z Redis jako broker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;CELERY_BROKER_URL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;redis://127.0.0.1:6379/1&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;CELERY_RESULT_BACKEND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;redis://127.0.0.1:6379/2&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;CELERY_TASK_SERIALIZER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;json&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impacto tras el despliegue de Django + PostgreSQL + Redis: el tiempo medio de respuesta de la API cayó de &lt;strong&gt;4.7 segundos a 45 milisegundos&lt;/strong&gt;. Las consultas servidas desde la caché de Redis se resuelven en 3-5 milisegundos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;microservicio-rust-para-indexación-de-búsqueda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#microservicio-rust-para-indexación-de-búsqueda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Microservicio Rust para indexación de búsqueda&lt;/h2&gt;
&lt;p&gt;El reto técnico más interesante fue el buscador. El clientes tiene un catálogo de 200 000 registros en 4 idiomas. La antigua implementación PHP ejecutaba &lt;code&gt;LIKE &apos;%term%&apos;&lt;/code&gt; sobre MySQL sin índices: 47 segundos por consulta. Inutilizable.&lt;/p&gt;
&lt;p&gt;PostgreSQL con índices GIN y &lt;code&gt;tsvector&lt;/code&gt; resolvió el problema para las consultas estándar. Pero el clientes también necesitaba:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;búsqueda con tolerancia a errores tipográficos (fuzzy matching),&lt;/li&gt;
&lt;li&gt;filtrado por múltiples atributos a la vez con resultados instantáneos,&lt;/li&gt;
&lt;li&gt;reconstrucción del índice tras la importación de datos desde archivos CSV/Excel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para estas tareas construí un microservicio en Rust con la librería Tantivy (equivalente a Apache Lucene para Rust):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;rust&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// search-service/src/indexer.rs -- indeksowanie wyszukiwania w Rust&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tantivy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, doc, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IndexWriter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    tokenizer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;NgramTokenizer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; serde&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Deserialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Instant&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;#[derive(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Deserialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; struct&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ServiceRecord&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; i64&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; description&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; language&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; attributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Vec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; struct&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SearchIndexer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;impl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SearchIndexer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; fn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(index_path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Result&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;dyn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; mut&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; schema_builder &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_i64_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;STORED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; INDEXED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;STORED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;TEXT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; STORED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;description&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;TEXT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; STORED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;category&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; STORED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;language&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; STORED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;attributes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;TEXT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; STORED&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // N-gram field for fuzzy/partial matching&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;title_ngram&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;TEXT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; schema_builder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;build&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; index &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;create_in_dir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(index_path, schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;())&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Register n-gram tokenizer for typo tolerance&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ngram_tokenizer &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; NgramTokenizer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;expect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Failed to create ngram tokenizer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        index&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tokenizers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;register&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ngram&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, ngram_tokenizer);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        Ok&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { index, schema })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    pub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; fn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; build_index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        records&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Vec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ServiceRecord&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Result&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;usize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;dyn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; start &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Instant&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; mut&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; writer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; IndexWriter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;writer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;128_000_000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 128MB buffer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; title_field &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; description_field &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;description&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; title_ngram_field &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;title_ngram&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; records&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; records {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            writer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_document&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;doc!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                title_field &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                description_field &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;description,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;category&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;category,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;language&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;language,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                self&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;attributes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                title_ngram_field &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;title,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ))&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        writer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;commit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; duration &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;elapsed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        println!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &quot;Indexed {} records in {:.2}s&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            count,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            duration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;as_secs_f64&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        Ok&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(count)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;API HTTP en Rust con el framework Actix-web:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;rust&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// search-service/src/main.rs -- API wyszukiwania&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; actix_web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{web, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;App&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;HttpServer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;HttpResponse&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; serde&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Deserialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Serialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;#[derive(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Deserialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SearchQuery&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    q&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    lang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;usize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;#[derive(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Serialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SearchResult&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; i64&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    score&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; f32&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; fn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;SearchQuery&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    indexer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;SearchIndexer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; HttpResponse&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; limit &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap_or&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; lang &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;lang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;as_deref&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unwrap_or&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;pl&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; indexer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;q, lang, query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;as_deref&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), limit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    HttpResponse&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Ok&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(results)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;#[actix_web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;main]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; fn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;io&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Result&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;()&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; indexer &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SearchIndexer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;./search_index&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;expect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Failed to create indexer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; indexer_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(indexer);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    HttpServer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;move&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        App&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;app_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(indexer_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;route&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/search&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(search))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;route&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/health&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;                HttpResponse&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Ok&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ok&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;127.0.0.1:8081&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    .await&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Resultados del benchmark del microservicio Rust:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Operación&lt;/th&gt;&lt;th&gt;PHP antiguo&lt;/th&gt;&lt;th&gt;Rust nuevo&lt;/th&gt;&lt;th&gt;Mejora&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Construcción del índice (200k registros)&lt;/td&gt;&lt;td&gt;47s&lt;/td&gt;&lt;td&gt;1.8s&lt;/td&gt;&lt;td&gt;26x más rápido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Búsqueda simple&lt;/td&gt;&lt;td&gt;4.7s&lt;/td&gt;&lt;td&gt;2ms&lt;/td&gt;&lt;td&gt;2350x más rápido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Búsqueda con filtros&lt;/td&gt;&lt;td&gt;8.3s&lt;/td&gt;&lt;td&gt;5ms&lt;/td&gt;&lt;td&gt;1660x más rápido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fuzzy matching (errores tipográficos)&lt;/td&gt;&lt;td&gt;No disponible&lt;/td&gt;&lt;td&gt;8ms&lt;/td&gt;&lt;td&gt;Nueva función&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Uso de memoria&lt;/td&gt;&lt;td&gt;512 MB&lt;/td&gt;&lt;td&gt;84 MB&lt;/td&gt;&lt;td&gt;6x menos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Rust no fue una elección “porque está de moda”. Fue una elección porque para esta tarea concreta, procesar 200 000 registros con indexación n-gram y fuzzy matching, ofrece un rendimiento inalcanzable para los intérpretes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;frontend-react-con-dashboard-interactivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#frontend-react-con-dashboard-interactivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Frontend React con dashboard interactivo&lt;/h2&gt;
&lt;p&gt;El dashboard del clientes requería una UI reactiva: tablas con ordenación, filtros multinivel, formularios multietapa, gráficos con datos en tiempo real. React con TypeScript es la elección natural.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;tsx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// src/components/ServiceSearch.tsx -- wyszukiwarka z filtrami&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { useState, useCallback, useMemo } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;react&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { useQuery } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@tanstack/react-query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { useDebounce } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@/hooks/useDebounce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;interface&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SearchResult&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  score&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;interface&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; SearchFilters&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  language&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ServiceSearch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;locale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;locale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;setQuery&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; useState&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;filters&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;setFilters&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; useState&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;SearchFilters&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    category: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    language: locale,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; debouncedQuery&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; useDebounce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(query, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isLoading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; useQuery&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;SearchResult&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[]&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    queryKey: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;search&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, debouncedQuery, filters],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    queryFn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; params&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; URLSearchParams&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        q: debouncedQuery,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        lang: filters.language,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        ...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(filters.category &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { category: filters.category }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; res&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`/api/search?${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;params&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; res.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    enabled: debouncedQuery.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    staleTime: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 60&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 5 minut cache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; handleCategoryChange&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; useCallback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    setFilters&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;prev&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;prev, category }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }, []);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;search-container&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;relative&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;input&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;search&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          value&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{query}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          onChange&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; setQuery&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(e.target.value)}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          placeholder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{locale &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;pl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Szukaj usług...&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Search services...&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;w-full px-4 py-3 rounded-lg border border-gray-200&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                     dark:border-gray-700 bg-white dark:bg-gray-800&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                     focus:ring-2 focus:ring-emerald-500 focus:outline-none&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        {isLoading &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;absolute right-3 top-1/2 -translate-y-1/2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;animate-spin h-5 w-5 border-2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                           border-emerald-500 border-t-transparent rounded-full&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                           inline-block&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        )}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      {results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; results.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;mt-4 grid gap-4 md:grid-cols-2 lg:grid-cols-3&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          {results.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;result&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;              key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{result.id}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;              href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;locale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;result&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}/`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;              className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;block p-4 rounded-lg border border-gray-100&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                         dark:border-gray-700 hover:border-emerald-500&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                         transition-colors&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            &gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text-xs font-medium text-emerald-600&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                              dark:text-emerald-400&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                {result.category}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;mt-1 font-semibold text-gray-900&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                            dark:text-white&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                {result.title}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;mt-2 text-sm text-gray-600 dark:text-gray-400&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                           line-clamp-2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                {result.excerpt}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          ))}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      )}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El componente React se incrusta en la página Astro como una isla interactiva:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// src/pages/[lang]/services.astro -- strona usług&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ServiceSearch } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;../../components/ServiceSearch&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Layout &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;../../layouts/Layout.astro&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Layout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Usługi&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;services-hero&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Nasze usługi&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  &amp;#x3C;!-- Wyspa React -- ładuje się przy scrollu, nie blokuje reszty strony --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ServiceSearch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; clientes:visible&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; locale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;={Astro.params.lang} /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Layout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gracias a la arquitectura Islands, el sitio de marketing carga &lt;strong&gt;0 KB de JavaScript&lt;/strong&gt; por defecto. El componente del buscador (38 KB gzipped) se carga solo cuando el usuario hace scroll hasta esa sección.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pipeline-de-ia-para-procesamiento-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pipeline-de-ia-para-procesamiento-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pipeline de IA para procesamiento de contenido&lt;/h2&gt;
&lt;p&gt;Migrar 1200 páginas de contenido desde HTML sucio a Markdown limpio requería automatización. Muchas páginas tenían metadatos SEO incompletos, descripciones ausentes, encabezados no optimizados. En lugar de corregirlos a mano, construí un pipeline en Python que aprovecha un modelo de lenguaje personalizado.&lt;/p&gt;
&lt;p&gt;El pipeline funcionaba en tres fases:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# ai_content_pipeline.py -- przetwarzanie treści z AI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; re&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; dataclasses &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; dataclass, field&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; pathlib &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Path&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; concurrent.futures &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ThreadPoolExecutor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; markdownify&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;@dataclass&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ContentAnalysis&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    entities: list[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dict&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; field(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;default_factory&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    meta_description: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    heading_issues: list[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; field(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;default_factory&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    word_count: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    is_thin: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; False&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    suggested_internal_links: list[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; field(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;default_factory&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; clean_legacy_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(raw_html: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) -&gt; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;&quot;&quot;Faza 1: Czyszczenie brudnego HTML z legacy platformy.&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Usuwanie inline styles, komentarzy warunkowych IE, pustych tagów&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    cleaned &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; re.sub(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;style=&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, raw_html)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    cleaned &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; re.sub(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;--&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, cleaned,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;                     flags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;re.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;DOTALL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    cleaned &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; re.sub(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;\1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, cleaned)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    cleaned &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; re.sub(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x26;nbsp;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, cleaned)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cleaned&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; convert_to_markdown&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(html: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) -&gt; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;&quot;&quot;Faza 2: Konwersja HTML na Markdown.&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; markdownify.markdownify(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        html,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        heading_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ATX&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        strip&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;style&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;iframe&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;object&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;embed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        convert&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;h1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;h2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;h3&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;h4&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;p&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;img&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                 &apos;ul&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ol&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;li&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;strong&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;em&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;table&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; analyze_with_ai&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(content: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, model_client) -&gt; ContentAnalysis:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;&quot;&quot;Faza 3: Analiza treści za pomocą niestandardowego modelu AI.&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    prompt &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&quot;&quot;Przeanalizuj poniższą treść strony internetowej.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Zwróć JSON z polami:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;- entities: lista obiektów &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;{{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;name, type, relevance_score&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;}}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;- meta_description: optymalny opis meta (max 155 znaków, po polsku)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;- heading_issues: lista problemów ze strukturą nagłówków&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;- word_count: liczba słów&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;- suggested_internal_links: sugerowane frazy do linkowania wewnętrznego&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Treść:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;content[:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; model_client.generate(prompt, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;max_tokens&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1024&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; json.loads(response.text)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ContentAnalysis(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        entities&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;data.get(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;entities&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        meta_description&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;data.get(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;meta_description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        heading_issues&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;data.get(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;heading_issues&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        word_count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;data.get(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;word_count&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        is_thin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;data.get(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;word_count&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        suggested_internal_links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;data.get(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;suggested_internal_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; process_batch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    content_dir: Path, model_client, max_workers: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) -&gt; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dict&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;&quot;&quot;Przetwarzanie wsadowe z wielowątkowością.&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    stats &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;processed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;thin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;entities&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    def&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; process_file&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(md_file: Path) -&gt; ContentAnalysis:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; md_file.read_text(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;encoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;utf-8&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; analyze_with_ai(content, model_client)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    files &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(content_dir.glob(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;*.md&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ThreadPoolExecutor(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;max_workers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;max_workers) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; executor:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; executor.map(process_file, files)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; analysis &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; results:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            stats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;processed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; analysis.is_thin:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                stats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;thin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            stats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;entities&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; len&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(analysis.entities)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; stats&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El pipeline procesó 1247 páginas en 4 horas sobre infraestructura propia, no en la nube ni a través de ninguna API externa. Encontró &lt;strong&gt;3400 entidades únicas&lt;/strong&gt;, generó las meta descripciones faltantes para 680 páginas e identificó 89 páginas con thin content que necesitaban ampliación.&lt;/p&gt;
&lt;p&gt;El modelo de IA funcionaba en un servidor dedicado con GPU, sin usar AWS, Azure ni ninguna solución cloud gestionada. Control total sobre los datos del clientes, cero transmisión de contenido a APIs externas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;migración-de-datos-de-mysql-a-postgresql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-de-datos-de-mysql-a-postgresql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración de datos de MySQL a PostgreSQL&lt;/h2&gt;
&lt;p&gt;La migración de la base de datos de MySQL 5.5 a PostgreSQL requería no solo trasladar los datos, sino una reconstrucción fundamental del esquema. El esquema antiguo no tenía relaciones, índices ni restricciones de integridad.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Migracja schematu: od chaosu do porządku&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Stary MySQL (brak relacji, brak indeksów)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- CREATE TABLE services (id INT AUTO_INCREMENT, title VARCHAR(255), ...);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- CREATE TABLE categories (id INT AUTO_INCREMENT, name VARCHAR(100), ...);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Brak FOREIGN KEY, brak INDEX poza PK&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Nowy PostgreSQL z prawidłową strukturą&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; categories&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SERIAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; PRIMARY KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    slug &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;VARCHAR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;UNIQUE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    parent_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;INTEGER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; REFERENCES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; categories(id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    created_at &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TIMESTAMPTZ&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; DEFAULT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SERIAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; PRIMARY KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    slug &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;VARCHAR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;UNIQUE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    category_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;INTEGER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; REFERENCES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; categories(id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    is_active &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;BOOLEAN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; DEFAULT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    created_at &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TIMESTAMPTZ&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; DEFAULT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    updated_at &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TIMESTAMPTZ&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; DEFAULT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; service_translations&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SERIAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; PRIMARY KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    service_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;INTEGER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; REFERENCES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; services(id) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ON DELETE CASCADE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    language&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; VARCHAR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    title &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;VARCHAR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    description&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TEXT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    meta_title &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;VARCHAR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;70&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    meta_description &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;VARCHAR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;160&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;NOT NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    search_vector TSVECTOR,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    UNIQUE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(service_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;language&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Indeksy dla wydajnego wyszukiwania&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; idx_translations_search&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; service_translations&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    USING&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; GIN(search_vector);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; idx_translations_lang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; service_translations(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;language&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; idx_services_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; services(category_id)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; is_active &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; true;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Trigger automatycznej aktualizacji search_vector&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE OR REPLACE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FUNCTION&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; update_search_vector&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RETURNS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; TRIGGER &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $$&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;BEGIN&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    NEW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;search_vector&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        setweight(to_tsvector(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;simple&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;COALESCE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;NEW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        setweight(to_tsvector(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;simple&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;COALESCE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;NEW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;B&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    RETURN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; NEW;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;END&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$$ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LANGUAGE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; plpgsql;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TRIGGER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; trg_search_vector&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    BEFORE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INSERT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; OR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; UPDATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; service_translations&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    FOR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; EACH &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ROW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; EXECUTE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FUNCTION&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; update_search_vector();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;migración-seo-redirecciones-y-datos-estructurados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-seo-redirecciones-y-datos-estructurados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración SEO: redirecciones y datos estructurados&lt;/h2&gt;
&lt;p&gt;El elemento más crítico de la migración es preservar las posiciones en Google. A pesar de que la plataforma antigua estaba perdiendo tráfico, seguía teniendo cientos de URL indexadas y decenas de backlinks.&lt;/p&gt;
&lt;p&gt;Mapeé cada URL antigua a la nueva y desplegué redirecciones 301 a nivel de Cloudflare Workers:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// redirects.ts -- mapa przekierowań ze starej platformy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; redirectMap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Record&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;/uslugi.php?id=1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/pl/uslugi/konsulting/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;/services.php?id=1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/en/services/consulting/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;/index.php?page=about&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/pl/o-nas/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;/kontakt.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/pl/kontakt/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;/leistungen.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/de/dienstleistungen/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // ... 963 przekierowania wygenerowane automatycznie&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; handleRedirects&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; URL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Sprawdź dokładne dopasowanie&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; exactMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; redirectMap[url.pathname &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; url.search];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (exactMatch) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      status: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      headers: { Location: exactMatch },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Sprawdź dopasowanie bez query string&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; pathMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; redirectMap[url.pathname];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (pathMatch) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      status: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      headers: { Location: pathMatch },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Implementé datos estructurados Schema.org completos con hreflang para cada versión lingüística. La plataforma antigua no tenía ningún dato estructurado, por lo que Google no entendía de qué trataba la página.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resultados-a-los-4-meses&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resultados-a-los-4-meses&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resultados a los 4 meses&lt;/h2&gt;













































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Antes&lt;/th&gt;&lt;th&gt;Después&lt;/th&gt;&lt;th&gt;Cambio&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;PageSpeed (móvil)&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;99&lt;/td&gt;&lt;td&gt;+450%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LCP&lt;/td&gt;&lt;td&gt;12.4s&lt;/td&gt;&lt;td&gt;0.3s&lt;/td&gt;&lt;td&gt;-98%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;INP&lt;/td&gt;&lt;td&gt;1100ms&lt;/td&gt;&lt;td&gt;22ms&lt;/td&gt;&lt;td&gt;-98%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CLS&lt;/td&gt;&lt;td&gt;0.52&lt;/td&gt;&lt;td&gt;0.01&lt;/td&gt;&lt;td&gt;-98%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTFB&lt;/td&gt;&lt;td&gt;4.7s&lt;/td&gt;&lt;td&gt;0.03s&lt;/td&gt;&lt;td&gt;-99%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso de la página&lt;/td&gt;&lt;td&gt;11.2 MB&lt;/td&gt;&lt;td&gt;0.28 MB&lt;/td&gt;&lt;td&gt;-97%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo de respuesta API&lt;/td&gt;&lt;td&gt;4700ms&lt;/td&gt;&lt;td&gt;45ms&lt;/td&gt;&lt;td&gt;-99%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Búsqueda (200k registros)&lt;/td&gt;&lt;td&gt;47s&lt;/td&gt;&lt;td&gt;2ms&lt;/td&gt;&lt;td&gt;23500x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tráfico orgánico&lt;/td&gt;&lt;td&gt;Base&lt;/td&gt;&lt;td&gt;+340%&lt;/td&gt;&lt;td&gt;Crecimiento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Consultas de clientes&lt;/td&gt;&lt;td&gt;~2/semana&lt;/td&gt;&lt;td&gt;~14/semana&lt;/td&gt;&lt;td&gt;+600%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vulnerabilidades de seguridad&lt;/td&gt;&lt;td&gt;37&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;Eliminadas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Arquitectura tecnológica completa del proyecto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API backend&lt;/strong&gt;: Python 3.12, Django 5, Django REST Framework, Celery&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base de datos&lt;/strong&gt;: PostgreSQL 16 con índices GIN y búsqueda de texto completo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caché y colas&lt;/strong&gt;: Redis 7 (caché, sesiones, broker Celery)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microservicio de búsqueda&lt;/strong&gt;: Rust, Actix-web, Tantivy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frontend interactivo&lt;/strong&gt;: React 19, TypeScript, TanStack Query, Tailwind CSS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitio de marketing&lt;/strong&gt;: Astro 5 con islas React&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipeline de IA&lt;/strong&gt;: Python, modelo de lenguaje personalizado en GPU dedicada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue&lt;/strong&gt;: Cloudflare Pages + Workers, GitHub Actions CI/CD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo&lt;/strong&gt;: Sentry, Prometheus, Grafana&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lo-que-me-enseñó-este-proyecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-me-enseñó-este-proyecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que me enseñó este proyecto&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;No juzgues, diagnostica.&lt;/strong&gt; El clientes llegó herido por una mala experiencia con una agencia. Lo último que necesitaba era otro “experto” diciéndole lo mal que estaban las cosas. En su lugar, presenté los hechos en forma de informe, expliqué los riesgos y propuse un plan de acción con un calendario claro.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige la herramienta para la tarea, no la tarea para la herramienta.&lt;/strong&gt; Django para la API, React para la UI interactiva, Rust para el procesamiento de datos, Astro para las páginas estáticas. Cada tecnología resuelve un problema concreto. Un framework monolítico para todo es una receta para compromisos continuos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La IA es una herramienta, no magia.&lt;/strong&gt; El pipeline de IA procesó 1247 páginas en 4 horas, un trabajo que a mano habría llevado semanas. Pero cada resultado requería verificación humana. La IA generaba sugerencias, la persona tomaba decisiones. Un modelo personalizado en servidor propio da control total sobre los datos del clientes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rust se justifica en casos concretos.&lt;/strong&gt; No escribí toda la plataforma en Rust. Escribí en Rust un único microservicio que procesa 200 000 registros, y ahí la diferencia de rendimiento es de un orden de magnitud. El resto del sistema funciona perfectamente en Python y TypeScript.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La migración SEO no es opcional, es obligatoria.&lt;/strong&gt; Sin mapeo de URL y redirecciones 301, el clientes habría perdido los últimos restos de tráfico orgánico. Gracias a la migración correcta, el tráfico creció un 340% en 4 meses.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;necesitas-un-rescate-tras-una-mala-experiencia-con-una-agencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#necesitas-un-rescate-tras-una-mala-experiencia-con-una-agencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Necesitas un rescate tras una mala experiencia con una agencia?&lt;/h2&gt;
&lt;p&gt;Si tu plataforma fue construida con tecnologías obsoletas, es lenta, insegura o simplemente no funciona como debería, &lt;a href=&quot;https://wppoland.com/es/contacto/&quot;&gt;contacta con WPPoland&lt;/a&gt;. Realizaré una auditoría inicial gratuita y presentaré un plan de acción con un calendario claro y un alcance de trabajo definido.&lt;/p&gt;
&lt;p&gt;Cada proyecto de rescate empieza con una llamada. Este clientes llamó un viernes por la noche. El lunes por la mañana tenía el informe. Ocho semanas después tenía una plataforma de la que está orgulloso.&lt;/p&gt;</content:encoded><category>astro</category><category>case-study</category><category>development</category><category domain="tag">migración-plataforma</category><category domain="tag">react</category><category domain="tag">django</category><category domain="tag">postgresql</category><category domain="tag">redis</category><category domain="tag">rust</category><category domain="tag">python-ia</category><category domain="tag">proyecto-de-rescate</category><category domain="tag">typescript</category><category domain="tag">migración-seo</category><enclosure url="https://wppoland.com/images/og/web-developer-writing-code.jpg" type="image/jpeg"/></item><item><title>Astro DB con WordPress - Guia de arquitectura hibrida</title><link>https://wppoland.com/es/astro-db-wordpress-hybrid-architecture/</link><guid isPermaLink="true">https://wppoland.com/es/astro-db-wordpress-hybrid-architecture/</guid><description>Aprende cuando Astro DB y WordPress tienen sentido juntos, como funciona la arquitectura hibrida y que compromisos importan para el rendimiento y los flujos de trabajo editoriales.</description><pubDate>Wed, 14 Jan 2026 13:46:00 GMT</pubDate><content:encoded>&lt;p&gt;Si llegaste aquí buscando documentación de la integración &lt;code&gt;@astrojs/db&lt;/code&gt;, en 2026 lo primero que hay que saber es esto: Astro DB se publicó como integración oficial en marzo de 2024, corrió unos dieciocho meses sobre Astro Studio (un fork de libSQL/Turso) y quedó deprecada cuando Astro Studio cerró en primavera de 2025. El paquete &lt;code&gt;@astrojs/db&lt;/code&gt; aún se instala, pero el backend Studio alojado ya no existe. Astro 6 ya no lo entrega como add-on por defecto. El patrón híbrido descrito en esta guía sigue siendo válido; la capa de base de datos es ahora cualquier servicio SQL externo que conectes por tu cuenta.&lt;/p&gt;
&lt;p&gt;Esta guía recorre el patrón WordPress + edge SQL con los runtime stores que los equipos españoles realmente despliegan en 2026: Turso (el fork libSQL que sobrevivió a Studio), Cloudflare D1, Neon Postgres y Supabase. WordPress sigue como backend editorial; una base de datos externa guarda los datos de runtime que el frontend necesita en el edge.&lt;/p&gt;
&lt;p&gt;Si solo necesitas un frontend de WordPress más rápido, esta es la guía equivocada. Object cache más CDN lleva un sitio típico a TTFB inferior a 200 ms sin segunda base de datos. El patrón híbrido se gana su complejidad cuando el contenido editorial y los datos de runtime tienen formas genuinamente distintas, o cuando el lag de invalidación de caché del WP REST se convierte en una queja medible de la redacción.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;rgpd-y-schrems-ii-por-qué-la-aepd-entra-antes-que-el-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rgpd-y-schrems-ii-por-qué-la-aepd-entra-antes-que-el-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;RGPD y Schrems II: por qué la AEPD entra antes que el código&lt;/h2&gt;
&lt;p&gt;En el contexto español, la elección técnica entre Turso, D1, Neon y Supabase queda muchas veces en segundo plano frente a la evaluación de protección de datos. Datos personales en Astro DB o en cualquiera de sus sucesores significa: contrato de encargado de tratamiento al amparo del artículo 28 RGPD, evaluación Schrems II, medidas técnicas y organizativas documentadas y, en caso de duda, una Transfer Impact Assessment.&lt;/p&gt;
&lt;p&gt;La AEPD ha publicado en taller propio criterios sobre transferencias internacionales que se alinean con la práctica europea tras Schrems II. Usar Cloudflare (Workers, D1, Pages) es viable, pero requiere DPA Cloudflare firmado, elección de región UE, y EIPD activa si los datos de runtime incluyen comentarios con nombre real, envíos de formularios de usuarios autenticados o estado de membresía. La exposición a la CLOUD Act de los proveedores estadounidenses es real y debe documentarse, no escamotearse.&lt;/p&gt;
&lt;p&gt;Camino práctico que las agencias españolas siguen en 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress alojado en España (Raiola Networks, SiteGround Madrid, OVH Estrasburgo en región UE). Los datos editoriales se quedan en territorio UE.&lt;/li&gt;
&lt;li&gt;Datos de runtime sin identificación personal (inventario, contadores, cachés): Cloudflare D1 o Turso, región UE, DPA firmado.&lt;/li&gt;
&lt;li&gt;Datos de runtime con identificación personal (comentarios, formularios, área de socios): Neon región UE, Supabase región UE, o Postgres en un proveedor español, porque la EIPD exige entonces bastante menos documentación de riesgo residual.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La migración de Astro DB a un store externo es, en clave Schrems II, también una oportunidad: el cambio obliga a inventariar qué datos están dónde. Es el momento adecuado para reescribir la EIPD desde cero en lugar de copiar la anterior.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;qué-fue-astro-db-realmente-y-qué-lo-sustituyó&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-fue-astro-db-realmente-y-qué-lo-sustituyó&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué fue Astro DB realmente y qué lo sustituyó&lt;/h2&gt;
&lt;p&gt;Astro DB era una capa fina de TypeScript sobre libSQL, con definición de schema al estilo Drizzle (&lt;code&gt;db/config.ts&lt;/code&gt; con &lt;code&gt;defineDb&lt;/code&gt;, &lt;code&gt;defineTable&lt;/code&gt;, &lt;code&gt;column&lt;/code&gt;). El backend Studio ofrecía una instancia libSQL gestionada con plan gratuito de 1 GB de almacenamiento y alrededor de mil millones de lecturas de filas al mes. El desarrollo local corría contra un fichero SQLite, producción contra Studio.&lt;/p&gt;
&lt;p&gt;Cuando Studio cerró, la migración oficial fue: mantener el schema &lt;code&gt;db/config.ts&lt;/code&gt;, cambiar la connection string Studio por una URL libSQL o Turso autoalojada, actualizar el adapter. En Astro 6 el módulo virtual &lt;code&gt;astro:db&lt;/code&gt; ya no aparece documentado como funcionalidad de primera clase. Las cuatro sustituciones realistas para 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Turso&lt;/strong&gt; (libSQL, SQLite distribuido). Lo más cercano a la ergonomía original de Astro DB. El plan gratuito cubre sitios pequeños, lecturas replicadas en el edge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare D1&lt;/strong&gt;. SQLite sobre Workers. Límite de 1 MB por fila, 10 GB por base de datos en el plan de pago. Natural si ya despliegas en Cloudflare Pages o Workers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neon&lt;/strong&gt;. Postgres serverless con branch por PR. El compute del plan gratuito hace auto-pause, lo que se traduce en 2 a 4 segundos de cold start en la primera petición tras inactividad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Supabase&lt;/strong&gt;. Postgres con Row Level Security y capa REST/GraphQL alojada. Más pesado que D1 o Turso, pero incluye auth de fábrica.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los ejemplos de código mantienen la forma original &lt;code&gt;astro:db&lt;/code&gt; porque sigue siendo el modelo mental más limpio. Donde la diferencia de runtime importa, la elección se nombra de forma explícita.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cuándo-el-patrón-híbrido-se-gana-su-complejidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-el-patrón-híbrido-se-gana-su-complejidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo el patrón híbrido se gana su complejidad&lt;/h2&gt;
&lt;p&gt;La mayoría de los sitios WordPress no deberían adoptarlo. Una instalación WP monolítica con object cache, capa de caché estática y CDN aguanta hasta unas 500 000 páginas vistas al mes antes de que el edge rendering cambie de forma medible la experiencia de usuario. Por debajo de ese umbral, el coste operativo de una segunda base de datos, una capa de sincronización y dos pipelines de despliegue supera la ganancia de latencia.&lt;/p&gt;
&lt;p&gt;El patrón se gana cuando se cumple al menos una de estas condiciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El frontend necesita datos estructurados que no encajan naturalmente en &lt;code&gt;wp_posts&lt;/code&gt; o &lt;code&gt;wp_postmeta&lt;/code&gt;: estado por usuario, inventario en tiempo real, leaderboards calculados, contadores de votación, envíos de formulario que no deberían volver a la base de datos WP.&lt;/li&gt;
&lt;li&gt;Los objetivos de LCP o TTFB exigen edge rendering, y la redacción no abandona el panel WordPress.&lt;/li&gt;
&lt;li&gt;El lag de invalidación de caché WP REST (TTL de object cache de 300 a 600 segundos es el predeterminado en la mayor parte del hosting gestionado) es una queja recurrente de la redacción, y hace falta un segundo store que controles de extremo a extremo.&lt;/li&gt;
&lt;li&gt;El sitio ha cruzado el umbral de dolor del tiempo de build: 5000+ posts traídos del WP REST en build pueden llevar la build SSG de Astro a 20 o 30 minutos sin estrategia incremental.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;vision-general-de-la-arquitectura-como-funciona-astro-db--wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#vision-general-de-la-arquitectura-como-funciona-astro-db--wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Vision general de la arquitectura: Como funciona Astro DB + WordPress&lt;/h2&gt;
&lt;p&gt;Comprender la base arquitectonica permite tomar decisiones informadas sobre enfoques de implementación y estrategias de optimización.&lt;/p&gt;
&lt;h3 id=&quot;el-paradigma-cms-hibrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-paradigma-cms-hibrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El paradigma CMS hibrido&lt;/h3&gt;
&lt;p&gt;WordPress monolitico tradicional acopla la gestión de contenido con la presentacion. WordPress headless separa estas preocupaciones, exponiendo contenido via APIs. La arquitectura hibrida Astro DB agrega una tercera capa: bases de datos residentes en el edge que cachean y mejoran el contenido de WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Componentes arquitectonicos clave&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Componente&lt;/th&gt;&lt;th&gt;Propósito&lt;/th&gt;&lt;th&gt;Tecnologia&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Backend WordPress&lt;/td&gt;&lt;td&gt;Creación de contenido, gestión de usuarios, medios&lt;/td&gt;&lt;td&gt;WordPress tradicional&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Capa de sincronizacion&lt;/td&gt;&lt;td&gt;Transformación y propagacion de datos&lt;/td&gt;&lt;td&gt;Webhooks, REST API o GraphQL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Astro DB&lt;/td&gt;&lt;td&gt;Datos estructurados cacheados en el edge&lt;/td&gt;&lt;td&gt;LibSQL/Turso&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Frontend Astro&lt;/td&gt;&lt;td&gt;Generación estatica + islas dinámicas&lt;/td&gt;&lt;td&gt;Framework Astro&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CDN&lt;/td&gt;&lt;td&gt;Entrega global de contenido&lt;/td&gt;&lt;td&gt;Cloudflare, Vercel Edge, etc.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;arquitectura-del-flujo-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-del-flujo-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura del flujo de datos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────┐     ┌──────────────┐     ┌─────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   WordPress     │────▶│  Capa de     │────▶│   Astro DB      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   (Contenido)   │     │  sincroniz.  │     │   (Cache Edge)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────┘     └──────────────┘     └─────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                                       ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────┐     ┌──────────────┐     ┌─────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   HTML estatico │◀────│    Astro     │◀────│   Consulta      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   (Cache CDN)   │     │   (Build)    │     │   Edge          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────┘     └──────────────┘     └─────────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta arquitectura elimina las llamadas directas a la base de datos de WordPress desde el frontend, mejorando dramaticamente los tiempos de respuesta mientras mantiene la frescura del contenido a través de revalidacion estrategica.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;guia-de-implementación-construyendo-tu-sistema-hibrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-implementación-construyendo-tu-sistema-hibrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de implementación: Construyendo tu sistema hibrido&lt;/h2&gt;
&lt;p&gt;Esta sección proporciona orientacion de implementación completa y lista para producción para conectar Astro DB con WordPress.&lt;/p&gt;
&lt;h3 id=&quot;fase-1-configuración-del-backend-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-configuración-del-backend-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Configuración del backend WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Instalar plugins requeridos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Instala plugins que expongan contenido estructurado via REST API con soporte de campos personalizados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar Advanced Custom Fields Pro para contenido estructurado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; advanced-custom-fields&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar WP GraphQL para obtencion eficiente de datos (opcional pero recomendado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-graphql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Configurar tipos de contenido personalizados&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Define estructuras de contenido optimizadas para la sincronizacion con Astro DB:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// functions.php - Registrar tipo de contenido personalizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; register_astro_content_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;astro_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;labels&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Contenido Astro&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;singular_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Elemento de Contenido Astro&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;show_in_rest&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;rest_base&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;astro-content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;supports&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom-fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;thumbnail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;menu_icon&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;dashicons-database&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;register_astro_content_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Configurar disparadores de webhook&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Configura WordPress para notificar a tu servicio de sincronizacion cuando cambie el contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Disparar sincronizacion al guardar post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; trigger_astro_sync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_is_post_revision&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $webhook_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; getenv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ASTRO_SYNC_WEBHOOK&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_remote_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($webhook_url, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;body&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_type,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;action&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;update&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        )),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;headers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;application/json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;trigger_astro_sync&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fase-2-configuración-de-astro-db&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-configuración-de-astro-db&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Configuración de Astro DB&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Inicializar Astro DB&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crear nuevo proyecto Astro con DB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; astro@latest&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mi-sitio-hibrido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mi-sitio-hibrido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;npx&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; astro&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Definir esquema de base de datos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Crea &lt;code&gt;db/config.ts&lt;/code&gt; con tablas que coincidan con tu estructura de contenido WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { defineDb, defineTable, column } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;astro:db&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defineTable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  columns: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    id: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ primaryKey: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    wpId: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ unique: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    slug: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ unique: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    title: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    content: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    excerpt: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ optional: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    featuredImage: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ optional: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    author: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    publishedAt: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    modifiedAt: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    categories: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    tags: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    meta: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ optional: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Authors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defineTable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  columns: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    id: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ primaryKey: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    wpId: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;number&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ unique: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    name: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    email: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    avatar: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ optional: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    bio: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ optional: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    socialLinks: column.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ optional: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defineDb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  tables: { Posts, Authors }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Configurar conexión a la base de datos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para producción, conecta a Turso para distribucion edge:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Instalar Turso CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -sSfL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://get.tur.so/install.sh&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crear base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;turso&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress-astro-hibrido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Obtener URL de conexión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;turso&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; show&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wordpress-astro-hibrido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Establecer variables de entorno&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; TURSO_DATABASE_URL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;libsql://tu-db.turso.io&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; TURSO_AUTH_TOKEN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;tu-token&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fase-3-implementación-de-la-capa-de-sincronizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-implementación-de-la-capa-de-sincronizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Implementación de la capa de sincronizacion&lt;/h3&gt;
&lt;p&gt;Crea una función serverless que sincronice contenido de WordPress a Astro DB:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// src/pages/api/sync.ts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { APIRoute } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;astro&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { db, Posts, Authors } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;astro:db&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; POST&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; APIRoute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; request.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Obtener de WordPress REST API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wpResponse&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    `${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WP_API_URL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}/wp-json/wp/v2/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wpPost&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wpResponse.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Transformar e insertar en Astro DB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; db.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(Posts).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    wpId: wpPost.id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    slug: wpPost.slug,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    title: wpPost.title.rendered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    content: wpPost.content.rendered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    excerpt: wpPost.excerpt?.rendered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    featuredImage: wpPost.featured_media &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getFeaturedImage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(wpPost.featured_media) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    author: wpPost.author,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    publishedAt: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(wpPost.date),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    modifiedAt: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(wpPost.modified),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    categories: wpPost.categories,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    tags: wpPost.tags,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;onConflictDoUpdate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    target: Posts.wpId,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    set: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      title: wpPost.title.rendered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      content: wpPost.content.rendered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      modifiedAt: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(wpPost.modified),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ success: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }), {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    status: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    headers: { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;application/json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fase-4-implementación-del-frontend&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-implementación-del-frontend&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Implementación del frontend&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Generación de páginas estaticas con islas dinámicas&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// src/pages/blog/[slug].astro&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { db, Posts, eq } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;astro:db&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; CommentSection &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;../../components/CommentSection.jsx&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getStaticPaths&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; db.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(Posts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; posts.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    params: { slug: post.slug },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    props: { post }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Astro.props;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;{post.title}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;={post.publishedAt.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toISOString&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()}&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      {post.publishedAt.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toLocaleDateString&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set:html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;={post.content} /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  &amp;#x3C;!-- Isla dinamica para comentarios --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;CommentSection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; postId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;={post.wpId} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clientes:visible&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estrategias-de-optimización-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-optimización-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de optimización del rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;configuración-de-cache-en-el-edge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-cache-en-el-edge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de cache en el edge&lt;/h3&gt;
&lt;p&gt;Configura tu CDN para un rendimiento optimo del hibrido Astro DB:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tipo de cache&lt;/th&gt;&lt;th&gt;Duracion&lt;/th&gt;&lt;th&gt;Estrategia&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;HTML estatico&lt;/td&gt;&lt;td&gt;1 año&lt;/td&gt;&lt;td&gt;Inmutable con hash&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Consultas Astro DB&lt;/td&gt;&lt;td&gt;60 segundos&lt;/td&gt;&lt;td&gt;Stale-while-revalidate&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Medios WordPress&lt;/td&gt;&lt;td&gt;1 año&lt;/td&gt;&lt;td&gt;Largo plazo con cache-busting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Respuestas API&lt;/td&gt;&lt;td&gt;5 minutos&lt;/td&gt;&lt;td&gt;Dinámico basado en tipo de contenido&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;optimización-de-consultas-a-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-consultas-a-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de consultas a la base de datos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Usar indices para consultas comunes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// db/config.ts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defineTable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  columns: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // ... columnas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  indexes: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    slugIdx: { on: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], unique: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    publishedIdx: { on: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;publishedAt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    categoryIdx: { on: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;categories&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;regeneracion-estatica-incremental-isr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#regeneracion-estatica-incremental-isr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Regeneracion estatica incremental (ISR)&lt;/h3&gt;
&lt;p&gt;Implementa ISR para contenido que cambia frecuentemente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// astro.config.mjs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defineConfig&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  output: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hybrid&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  adapter: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;vercel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  experimental: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    isr: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;      // Regenerar páginas cada 60 segundos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      expiration: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;      // Omitir cache para usuarios autenticados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      bypassToken: process.env.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;BYPASS_TOKEN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;modos-de-fallo-que-de-verdad-hemos-visto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modos-de-fallo-que-de-verdad-hemos-visto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modos de fallo que de verdad hemos visto&lt;/h2&gt;
&lt;p&gt;Antes de las historias de éxito, el registro de averías. Son las formas que toma el dolor en migraciones reales, no hipótesis del tipo “qué pasaría si”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lag de invalidación de caché WP REST.&lt;/strong&gt; El object cache de WordPress (Redis o Memcached) está, en la mayor parte del hosting gestionado, con TTL de 300 a 600 segundos. Si la capa de sincronización lee &lt;code&gt;/wp-json/wp/v2/posts&lt;/code&gt; justo después de que la redacción publique, puede acabar sirviendo estado obsoleto en Astro DB hasta diez minutos. El remedio es invalidar el object cache desde el hook de publicación antes de que dispare el sync, lo que requiere hosting que permita llamar &lt;code&gt;wp_cache_flush_group&lt;/code&gt; programáticamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Explosión del tiempo de build a escala.&lt;/strong&gt; Un sitio de 20 000 posts tirando de todo desde WP REST en build SSG pasa 18 a 25 minutos solo en round-trips de red. Dos vías: pre-cargar datos en el runtime store (Turso/D1/Neon) en el webhook de publicación y dejar que Astro lea del store local en build, o pasar a build incremental de Astro con &lt;code&gt;output: &apos;server&apos;&lt;/code&gt; y renderizado on-demand para la long tail. El reflejo “todo SSG, siempre” se rompe a escala.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Límite de tamaño de fila de Cloudflare D1.&lt;/strong&gt; D1 limita las filas individuales a 1 MB. Posts de WordPress con postmeta serializado o JSON renderizado de bloques Gutenberg pueden cruzar esa línea. Remedio: guardar el payload serializado en R2 (u otro object store) y dejar solo la referencia en D1. Descubrirlo un viernes por la tarde, cuando un post largo falla el sync, es desagradable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cold start de Neon.&lt;/strong&gt; El plan gratuito de Neon (y el de pago más barato) hace auto-pause del compute tras inactividad. La primera query tras la pausa cuesta 2 a 4 segundos. Para una edge function que corre en cada petición, significa que el primer usuario tras 5 minutos de silencio ve un flash lento. O se paga compute always-on, o se acepta el cold start y se cachea agresivamente en el edge.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;una-migración-concreta-20k-posts-50k-comentarios-build-de-18-minutos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#una-migración-concreta-20k-posts-50k-comentarios-build-de-18-minutos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Una migración concreta: 20k posts, 50k comentarios, build de 18 minutos&lt;/h2&gt;
&lt;p&gt;Una publicación B2B española del sector legal tenía una instalación WP en un único servidor, alrededor de 20 000 posts y 50 000 comentarios de usuarios acumulados en una década. La redacción no se movía de WordPress; el equipo de ingeniería necesitaba TTFB por debajo de 100 ms desde Madrid y Barcelona y estaba cansado de pelear contra el plugin bloat.&lt;/p&gt;
&lt;p&gt;La forma a la que llegaron:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress como CMS headless alojado en Raiola Networks, contenido tirado vía WP REST en el momento de la publicación, no en build. Un pequeño listener de webhook invalida el object cache y escribe registros normalizados en Cloudflare D1 (región UE).&lt;/li&gt;
&lt;li&gt;Comentarios trasladados por completo a D1. La tabla de comentarios WP quedó en archivo, los comentarios nuevos llegan al endpoint renderizado en el edge, persisten en D1, y un job nocturno los espeja de vuelta a WP para moderación editorial y comprobación de spam.&lt;/li&gt;
&lt;li&gt;Astro desplegado en Cloudflare Pages con &lt;code&gt;output: &apos;server&apos;&lt;/code&gt; y reglas de caché agresivas. La mayoría de páginas renderizan en el edge desde D1 en 30 a 80 ms.&lt;/li&gt;
&lt;li&gt;El tiempo de build pasó de 18 minutos (SSG completo con WP REST) a unos 3 minutos (Astro construye el esqueleto estático, el contenido dinámico se carga desde D1 en la primera petición y queda cacheado en el edge).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los trade-offs aceptados: una segunda pipeline de despliegue, un script de sincronización que de vez en cuando necesita mimo cuando WP REST devuelve URLs de featured image rotas, y la restricción de 1 MB en D1 que obliga a externalizar un puñado de posts patológicamente largos. DPA con Cloudflare firmado, TIA documentada para la región UE de D1.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;comparación-wp-monolítico-frente-al-patrón-híbrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-wp-monolítico-frente-al-patrón-híbrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación: WP monolítico frente al patrón híbrido&lt;/h2&gt;
&lt;p&gt;La comparación enfrenta una instalación WordPress monolítica competentemente configurada contra el patrón híbrido. El lado monolítico no es de paja: object cache, page cache, CDN, PHP moderno, hosting decente. Los números son el rango razonable a esperar, no garantía.&lt;/p&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Dimensión&lt;/th&gt;&lt;th&gt;WordPress monolítico (bien configurado)&lt;/th&gt;&lt;th&gt;Híbrido (WP + edge SQL)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;TTFB en origen&lt;/td&gt;&lt;td&gt;típicamente 150 a 400 ms&lt;/td&gt;&lt;td&gt;30 a 100 ms desde el edge&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo hasta primer despliegue&lt;/td&gt;&lt;td&gt;minutos (sin paso de build)&lt;/td&gt;&lt;td&gt;3 a 30 minutos según estrategia&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Publicación editorial a producción&lt;/td&gt;&lt;td&gt;segundos (flush de caché)&lt;/td&gt;&lt;td&gt;10 a 90 s (webhook + sync + invalidación)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Superficie operacional&lt;/td&gt;&lt;td&gt;un stack&lt;/td&gt;&lt;td&gt;dos stacks, una capa de sync&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Esfuerzo RGPD&lt;/td&gt;&lt;td&gt;bajo en hosting español&lt;/td&gt;&lt;td&gt;DPA + TIA + EIPD para edge store externo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Forma del coste&lt;/td&gt;&lt;td&gt;factura de hosting escala con tráfico&lt;/td&gt;&lt;td&gt;hosting + edge DB + tráfico, presupuesto individual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mejor encaje&lt;/td&gt;&lt;td&gt;hasta ~500 mil páginas vistas/mes&lt;/td&gt;&lt;td&gt;divergencia entre contenido y datos runtime, edge rendering como exigencia&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peor encaje&lt;/td&gt;&lt;td&gt;sitios que necesitan estado por usuario a escala&lt;/td&gt;&lt;td&gt;sitios de contenido pequeños con tráfico predecible&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad&lt;/h2&gt;
&lt;h3 id=&quot;aislamiento-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aislamiento-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aislamiento de datos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Panel de administración WordPress detras de VPN o restriccion de IP&lt;/li&gt;
&lt;li&gt;Astro DB usa credenciales separadas de WordPress&lt;/li&gt;
&lt;li&gt;Sin conexiónes directas a la base de datos desde el frontend&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;seguridad-de-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-de-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad de API&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Implementar limitacion de tasa en endpoints de sincronizacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { RateLimiter } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;limiter&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; limiter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; RateLimiter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  tokensPerInterval: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  interval: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;minute&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; POST&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; APIRoute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; limiter.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tryRemoveTokens&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Limite de tasa excedido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, { status: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;429&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // ... logica de sincronizacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;validación-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#validación-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Validación de contenido&lt;/h3&gt;
&lt;p&gt;Siempre sanitiza el contenido de WordPress antes de almacenarlo en Astro DB:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DOMPurify &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;isomorphic-dompurify&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cleanContent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DOMPurify.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sanitize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(wpPost.content.rendered, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ALLOWED_TAGS: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;p&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;br&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;strong&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;em&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;h2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;h3&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ul&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ol&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;li&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ALLOWED_ATTR: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;href&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;alt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;solución-de-problemas-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-de-problemas-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución de problemas comunes&lt;/h2&gt;
&lt;h3 id=&quot;fallos-de-sincronizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fallos-de-sincronizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fallos de sincronizacion&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Sintoma&lt;/th&gt;&lt;th&gt;Causa&lt;/th&gt;&lt;th&gt;Solución&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Contenido no se actualiza&lt;/td&gt;&lt;td&gt;Webhook no se dispara&lt;/td&gt;&lt;td&gt;Verificar logs de errores de WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sincronizacion parcial&lt;/td&gt;&lt;td&gt;Timeout de API&lt;/td&gt;&lt;td&gt;Implementar procesamiento por lotes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Desajuste de esquema&lt;/td&gt;&lt;td&gt;Conflicto de tipo de columna&lt;/td&gt;&lt;td&gt;Versionar tu capa de sincronizacion&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Entradas duplicadas&lt;/td&gt;&lt;td&gt;Condicion de carrera&lt;/td&gt;&lt;td&gt;Usar restricciones de unicidad&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;degradacion-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#degradacion-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Degradacion del rendimiento&lt;/h3&gt;
&lt;p&gt;Monitorea estas metricas para identificar cuellos de botella:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar monitoreo de rendimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; performance.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; db.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(Posts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`La consulta tomo ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;performance&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;now&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}ms`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;artículos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#artículos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Artículos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WordPress headless vs tradicional: Análisis ROI 2026&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/wordpress-rest-api-vs-graphql-2026/&quot;&gt;WordPress REST API vs GraphQL 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/ci-cd-wordpress-automation-guide-2026/&quot;&gt;CI/CD WordPress Guia de automatizacion 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/green-web-digital-sustainability-csrd/&quot;&gt;Green Web y sostenibilidad digital&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cuándo-no-hacer-esto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-no-hacer-esto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo no hacer esto&lt;/h2&gt;
&lt;p&gt;Saltarse el patrón híbrido es la decisión correcta más veces que adoptarlo. Si llevas un sitio de contenido, el tráfico está por debajo de medio millón de páginas vistas al mes y la redacción está cómoda en el panel WordPress: quédate en el monolito. Object cache, plugin de page cache y Cloudflare delante entregan el 90 por ciento de la ganancia de rendimiento sin segunda base de datos, sin capa de sync, sin la carga de on-call para dos sistemas. En hosting español gestionado, además, el asunto del RGPD queda fuera de la ecuación.&lt;/p&gt;
&lt;p&gt;El patrón híbrido se gana cuando el contenido editorial y los datos de runtime tienen formas realmente distintas (votos, envíos, estado por usuario, inventario en tiempo real) o cuando los objetivos de LCP y TTFB exigen edge rendering y la redacción no se mueve. En adopción: elegir el runtime store según el destino de despliegue. Turso para ergonomía cercana al Astro DB original, Cloudflare D1 cuando ya usas Workers, Neon si la forma de los datos pide Postgres, Supabase cuando además se necesita auth y RLS. En datos personales: EIPD primero, código después. Astro DB como producto alojado dejó de ser una opción que puedas escoger en 2026.&lt;/p&gt;
&lt;p&gt;Para apoyo en la implementación, trabaja con un &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;especialista en desarrollo Astro&lt;/a&gt; que también te disuada de la arquitectura cuando no encaje. &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta a WPPoland&lt;/a&gt; para una evaluación delimitada; precio por presupuesto individual.&lt;/p&gt;
&lt;p&gt;Última actualización: 2026-04-01.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">astro-db-+-wordpress</category><category domain="tag">guide</category><category domain="tag">2026</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Como iniciar un blog WordPress profesional</title><link>https://wppoland.com/es/how-to-start-professional-wordpress-blog-2026/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-start-professional-wordpress-blog-2026/</guid><description>Deja de usar hosting compartido. Aprende la stack moderna y profesional para WordPress de alto rendimiento. Cubrimos VPS, cache, seguridad y la estrategia de contenido que realmente posiciona.</description><pubDate>Mon, 12 Jan 2026 12:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-la-trampa-del-instalador-de-1-clic&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-la-trampa-del-instalador-de-1-clic&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: La trampa del “instalador de 1-clic”&lt;/h2&gt;
&lt;p&gt;En 2026, iniciar un blog es enganosamente fácil. Vas a un proveedor de hosting, haces clic en “Instalar WordPress”, y 30 segundos despues, tienes un sitio web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esto es una trampa.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esa instalación de un clic generalmente esta en un servidor compartido, atiborrado con 5,000 otros sitios. No tiene estrategia de cache. No tiene hardening de seguridad. Usa un prefijo de base de datos por defecto que los bots apuntan instantaneamente. Es una casa construida sobre arena. Cuando eventualmente obtengas tráfico (que es el objetivo, verdad?), tu sitio se caera, será hackeado, o simplemente cargara tan lento que Google te deslistara.&lt;/p&gt;
&lt;p&gt;Esta guía es para profesionales. No estamos construyendo un diario hobby; estamos construyendo un activo de medios. Vamos a saltarnos el boton “fácil” y construir una stack que pueda manejar 100,000 visitantes, cargue en menos de 0.5 segundos y sea segura por diseño.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-1-el-hardware-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-el-hardware-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: El hardware (hosting)&lt;/h2&gt;
&lt;p&gt;Olvida el “hosting compartido”. En 2026, el estándar para WordPress profesional es &lt;strong&gt;VPS Cloud gestionado&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;por-que-el-hosting-compartido-mata-proyectos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-hosting-compartido-mata-proyectos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el hosting compartido mata proyectos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El efecto del “mal vecino”&lt;/strong&gt;: Si otro sitio en tu servidor sufre un DDoS, &lt;em&gt;tu&lt;/em&gt; sitio cae.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitacion de recursos&lt;/strong&gt;: Te dan una porcion minuscula de CPU. Si instalas WooCommerce, tu panel de admin se vuelve inutilizable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Riesgos de seguridad&lt;/strong&gt;: Una vulnerabilidad en la configuración del servidor afecta a todos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-eleccion-profesional-cloud--gestión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-eleccion-profesional-cloud--gestión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La eleccion profesional: Cloud + gestión&lt;/h3&gt;
&lt;p&gt;Quieres tu propio Servidor Privado Virtual (VPS). Pero no quieres ser un SysAdmin gestionando lineas de comandos Linux.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Usa un panel de control que se conecte a proveedores cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stack recomendada en 2026&lt;/strong&gt;:
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GridPane&lt;/strong&gt; o &lt;strong&gt;SpinupWP&lt;/strong&gt; (el panel de control).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hetzner&lt;/strong&gt; (Europa), &lt;strong&gt;Vultr&lt;/strong&gt; (global), o &lt;strong&gt;AWS Lightsail&lt;/strong&gt; (empresarial) para el metal crudo.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Comparación de costos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hosting compartido premium:&lt;/em&gt; $25/mes por rendimiento lento.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;GridPane + Hetzner:&lt;/em&gt; $15/mes por un servidor NVMe dedicado que aplasta los benchmarks.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-la-instalación-al-estilo-del-arquitecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-la-instalación-al-estilo-del-arquitecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: La instalación (al estilo del arquitecto)&lt;/h2&gt;
&lt;p&gt;No uses Softaculous o scripts de “1-clic”. Llenan tu base de datos de bloatware. Queremos una instalación “vanilla”.&lt;/p&gt;
&lt;h3 id=&quot;1-el-enfoque-bedrock&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-enfoque-bedrock&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El enfoque Bedrock&lt;/h3&gt;
&lt;p&gt;Las agencias profesionales hoy raramente usan el archivo zip estándar de WordPress. Usan &lt;strong&gt;Bedrock&lt;/strong&gt; (por Roots.io).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Variables de entorno&lt;/strong&gt;: Las credenciales se almacenan en un archivo &lt;code&gt;.env&lt;/code&gt;, no en &lt;code&gt;wp-config.php&lt;/code&gt;. Esto es más seguro y amigable con Git.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestión por Composer&lt;/strong&gt;: Los plugins se instalan via &lt;code&gt;composer.json&lt;/code&gt;. Esto garantiza consistencia de versiones entre dev, staging y producción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estructura de carpetas&lt;/strong&gt;: El core de WordPress se aisla en un subdirectorio &lt;code&gt;/wp/&lt;/code&gt;, manteniendo tu raiz limpia.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-estrategia-dns-cloudflare&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-estrategia-dns-cloudflare&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Estrategia DNS (Cloudflare)&lt;/h3&gt;
&lt;p&gt;No uses el DNS de tu registrador. Apunta tu dominio inmediatamente a &lt;strong&gt;Cloudflare&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Por que?&lt;/strong&gt; Es el CDN más rápido del mundo. Proporciona terminacion SSL gratuita en el edge. Bloquea bots maliciosos antes de que lleguen a tu servidor.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-configuración-y-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-configuración-y-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Configuración y optimización&lt;/h2&gt;
&lt;p&gt;Una instalación WordPress fresca es como un coche de fabrica - tiene un limitador de velocidad. Vamos a quitarlo.&lt;/p&gt;
&lt;h3 id=&quot;1-cache-de-objetos-redis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-cache-de-objetos-redis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Cache de objetos (Redis)&lt;/h3&gt;
&lt;p&gt;Sin cache de objetos, WordPress consulta la base de datos para &lt;em&gt;todo&lt;/em&gt; (título del sitio, opciones, ID de usuario) en &lt;em&gt;cada carga de página&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accion&lt;/strong&gt;: Instala Redis en tu servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin&lt;/strong&gt;: Instala &lt;strong&gt;Object Cache Pro&lt;/strong&gt; (o el gratuito Redis Object Cache).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: Las consultas a la base de datos bajan de ~50 por página a ~2. El backend se vuelve instantaneo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-cache-de-página-nginx-fastcgi&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-cache-de-página-nginx-fastcgi&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Cache de página (Nginx FastCGI)&lt;/h3&gt;
&lt;p&gt;Plugins como “WP Rocket” son geniales, pero el cache a nivel de servidor es superior.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El objetivo&lt;/strong&gt;: Tu servidor debe servir archivos HTML directamente desde RAM (Nginx), sin pasar por PHP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La metrica&lt;/strong&gt;: TTFB (Time to First Byte) debe estar por debajo de 50ms.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-optimización-de-imágenes-avif&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-optimización-de-imágenes-avif&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Optimización de imágenes (AVIF)&lt;/h3&gt;
&lt;p&gt;JPEG y PNG estan muertos. WebP es el estándar, pero &lt;strong&gt;AVIF&lt;/strong&gt; es el futuro.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accion&lt;/strong&gt;: Usa un plugin (o Cloudflare Pro) para auto-convertir uploads a AVIF.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cualidades&lt;/strong&gt;: Las imágenes AVIF son 50% más pequeñas que WebP y soportan color HDR.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-estrategia-de-contenido-la-web-semántica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-estrategia-de-contenido-la-web-semántica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Estrategia de contenido (la web semántica)&lt;/h2&gt;
&lt;p&gt;Tienes un Ferrari de sitio web. Ahora, donde lo conduces?
En 2026, los “trucos SEO” no funcionan. Los motores de búsqueda con IA (Google Gemini, ChatGPT Search) priorizan &lt;strong&gt;EEAT&lt;/strong&gt; (Experiencia, Expertise, Autoridad, Confiabilidad).&lt;/p&gt;
&lt;h3 id=&quot;1-clusters-de-temas-contenido-pilar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-clusters-de-temas-contenido-pilar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Clusters de temas (contenido pilar)&lt;/h3&gt;
&lt;p&gt;Deja de escribir “pensamientos diarios” aleatorios. Construye bibliotecas.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Hub&lt;/strong&gt;: Crea una página “pilar” masiva que cubra un tema amplio (ej., “Seguridad WordPress”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los radios&lt;/strong&gt;: Escribe 10-20 artículos específicos (ej., “Como configurar 2FA”, “Mejores plugins de seguridad”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los enlaces internos&lt;/strong&gt;: Enlaza todos los radios de vuelta al Hub, y el Hub a todos los radios. Esto le dice a Google: &lt;em&gt;“Somos la autoridad en este tema.”&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-schema-markup-datos-estructurados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-schema-markup-datos-estructurados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Schema Markup (datos estructurados)&lt;/h3&gt;
&lt;p&gt;Los motores de búsqueda son robots. No “leen”; analizan.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accion&lt;/strong&gt;: Implementa Schema JSON-LD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipos&lt;/strong&gt;: Usa schemás &lt;code&gt;Article&lt;/code&gt;, &lt;code&gt;FAQPage&lt;/code&gt;, &lt;code&gt;HowTo&lt;/code&gt; y &lt;code&gt;Product&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-el-foso-humano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-el-foso-humano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. El “foso” humano&lt;/h3&gt;
&lt;p&gt;La IA puede generar contenido generico en segundos. No puede generar &lt;em&gt;opinion&lt;/em&gt; ni &lt;em&gt;experiencia&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La estrategia&lt;/strong&gt;: Escribe en primera persona (“Yo probe esto…”). Incluye capturas únicas. Comparte fracasos.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-5-hardening-de-seguridad-la-fortaleza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-hardening-de-seguridad-la-fortaleza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Hardening de seguridad (la fortaleza)&lt;/h2&gt;
&lt;p&gt;Un sitio profesional es un objetivo. Los bots escanean &lt;code&gt;xmlrpc.php&lt;/code&gt; y &lt;code&gt;wp-login.php&lt;/code&gt; millones de veces al dia.&lt;/p&gt;
&lt;h3 id=&quot;1-deshabilitar-xml-rpc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-deshabilitar-xml-rpc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Deshabilitar XML-RPC&lt;/h3&gt;
&lt;p&gt;XML-RPC es un protocolo API legacy. También es el vector número 1 para ataques de fuerza bruta.&lt;/p&gt;
&lt;h3 id=&quot;2-permisos-de-archivos-el-escudo-invisible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-permisos-de-archivos-el-escudo-invisible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Permisos de archivos (el escudo invisible)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estándar&lt;/strong&gt;: Directorios &lt;code&gt;755&lt;/code&gt;, Archivos &lt;code&gt;644&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Endurecido&lt;/strong&gt;: &lt;code&gt;wp-config.php&lt;/code&gt; debe ser &lt;code&gt;400&lt;/code&gt; o &lt;code&gt;440&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-firewall-waf&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-firewall-waf&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Firewall (WAF)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nivel cloud&lt;/strong&gt;: Cloudflare WAF. Se ejecuta en el edge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nivel servidor&lt;/strong&gt;: Fail2Ban. Vigila tus logs y banea IPs a nivel de firewall.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-6-seleccion-de-tema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-seleccion-de-tema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Seleccion de tema&lt;/h2&gt;
&lt;p&gt;Elegir un tema determina el futuro rendimiento de tu sitio. Evita temas que prometen “todo” - elige temas modulares como &lt;strong&gt;GeneratePress&lt;/strong&gt; o &lt;strong&gt;Kadence&lt;/strong&gt; que respetan los Core Web Vitals.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-7-sostenibilidad-y-escalamiento-los-primeros-100-dias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-sostenibilidad-y-escalamiento-los-primeros-100-dias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Sostenibilidad y escalamiento (los primeros 100 dias)&lt;/h2&gt;
&lt;h3 id=&quot;el-hito-de-100-posts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-hito-de-100-posts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El hito de 100 posts&lt;/h3&gt;
&lt;p&gt;Los datos muestran que los blogs con menos de 50 posts raramente obtienen traccion significativa. El número magico a menudo citado es 100 posts de alta calidad.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frecuencia&lt;/strong&gt;: 2 posts por semana = 100 posts en un año.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistencia&lt;/strong&gt;: Google recompensa el ritmo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-monetizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-monetizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de monetizacion&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Marketing de afiliados&lt;/strong&gt;: Recomienda las herramientas que usas. Se honesto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servicios&lt;/strong&gt;: “Contratame para construir esta stack para ti.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Productos digitales&lt;/strong&gt;: “El checklist para lanzar.”&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;checklist-resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist resumen&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Compra un dominio&lt;/strong&gt; (Namecheap/Cloudflare).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Obtiene un VPS cloud&lt;/strong&gt; (Hetzner/Vultr).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conecta via panel de control&lt;/strong&gt; (GridPane/SpinupWP).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instala Bedrock/WP Vanilla&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configura Redis y cache Nginx&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asegura via permisos y firewall&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selecciona un tema modular (GeneratePress)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instala un plugin SEO&lt;/strong&gt; (The SEO Framework).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escribe 3 páginas pilar&lt;/strong&gt; (como esta).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pública consistentemente&lt;/strong&gt; durante 12 meses.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La diferencia entre un blog que se desvanece y un imperio de medios no es suerte. Es arquitectura. Construyelo bien, y durara decadas.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; para construir tu plataforma profesional.&lt;/p&gt;</content:encoded><category>wordpress-setup</category><category>guides</category><category domain="tag">installation</category><category domain="tag">hosting</category><category domain="tag">configuration</category><category domain="tag">seo</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/wordpress-community-blueprint-growth.jpg" type="image/jpeg"/></item><item><title>Herramientas modernas de WordPress: Vite, webpack y la cadena de construccion 2026</title><link>https://wppoland.com/es/modern-wordpress-tooling-vite-webpack-2026/</link><guid isPermaLink="true">https://wppoland.com/es/modern-wordpress-tooling-vite-webpack-2026/</guid><description>Su proceso de construccion es lento? Diga adios a las configuraciónes legacy de Webpack y adopte la velocidad de Vite para el desarrollo WordPress en 2026.</description><pubDate>Sun, 11 Jan 2026 13:59:00 GMT</pubDate><content:encoded>&lt;p&gt;La forma en que construimos sitios WordPress ha cambiado fundamentalmente. En 2026, el rendimiento de su &lt;strong&gt;cadena de construccion&lt;/strong&gt; es tan importante como el rendimiento de su sitio web. Si su “npm run dev” tarda 30 segundos en arrancar, esta perdiendo horas de productividad cada semana. Para los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores profesionales de WordPress&lt;/a&gt; que trabajan en proyectos empresariales, esta ineficiencia se multiplica en miles de dolares de productividad perdida anualmente.&lt;/p&gt;
&lt;p&gt;Aqui esta la guía completa de herramientas profesionales de WordPress para 2026, cubriendo todo desde herramientas de construccion hasta pipelines de despliegue.&lt;/p&gt;
&lt;h2 id=&quot;1-el-ascenso-de-vite-por-que-webpack-se-esta-quedando-obsoleto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-ascenso-de-vite-por-que-webpack-se-esta-quedando-obsoleto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El ascenso de Vite: Por que Webpack se esta quedando obsoleto&lt;/h2&gt;
&lt;p&gt;Vite se ha convertido en el estándar de oro para el desarrollo moderno de WordPress. Mientras que Webpack nos sirvio bien durante una decada, su enfoque de “empaquetar primero” es demasiado lento para proyectos Gutenberg modernos y con muchos datos que requieren retroalimentacion instantanea durante el desarrollo.&lt;/p&gt;
&lt;h3 id=&quot;la-diferencia-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-diferencia-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La diferencia técnica&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Enfoque de Webpack:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Empaqueta todo el código base antes de iniciar el servidor de desarrollo&lt;/li&gt;
&lt;li&gt;Tiempo de arranque en frio: 15-45 segundos para proyectos grandes&lt;/li&gt;
&lt;li&gt;Recarga en caliente: 2-5 segundos por cambio&lt;/li&gt;
&lt;li&gt;Intensivo en memoria: A menudo requiere 4GB+ de RAM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Enfoque de Vite:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa modulos ES nativos en el navegador durante el desarrollo&lt;/li&gt;
&lt;li&gt;Tiempo de arranque en frio: &amp;#x3C;1 segundo, independientemente del tamaño del proyecto&lt;/li&gt;
&lt;li&gt;Hot Module Replacement: &amp;#x3C;100ms para la mayoria de cambios&lt;/li&gt;
&lt;li&gt;Uso eficiente de memoria: Tipicamente menos de 1GB de RAM&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;impacto-real-en-el-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-real-en-el-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto real en el rendimiento&lt;/h3&gt;
&lt;p&gt;Considere un dia tipico para un &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;50 guardados de archivo durante el desarrollo&lt;/li&gt;
&lt;li&gt;Flujo de trabajo con Webpack: 50 x 5 segundos = 250 segundos (4+ minutos) perdidos en recargas&lt;/li&gt;
&lt;li&gt;Flujo de trabajo con Vite: 50 x 0.1 segundos = 5 segundos en total&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiempo ahorrado por dia: 4 minutos. Por año: 16+ horas&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-de-vite-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-vite-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de Vite para WordPress&lt;/h3&gt;
&lt;p&gt;El desafio principal con Vite es integrarlo con el backend PHP de WordPress. Usamos plugins especializados como &lt;code&gt;vite-plugin-wordpress&lt;/code&gt; que:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Redirigen las peticiones PHP a WordPress durante el desarrollo&lt;/li&gt;
&lt;li&gt;Inyectan los scripts de desarrollo de Vite en las plantillas de WordPress&lt;/li&gt;
&lt;li&gt;Manejan el reemplazo de modulos en caliente para bloques Gutenberg&lt;/li&gt;
&lt;li&gt;Cierran la brecha entre el servidor de desarrollo de Vite y la arquitectura de WordPress&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// vite.config.js - Configuración moderna de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;vite&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wordpress &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;vite-plugin-wordpress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defineConfig&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      input: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;src/index.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      publicDir: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      wordpressUrl: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;http://su-sitio.local&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  build: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    outDir: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dist&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    manifest: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    rollupOptions: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      input: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        main: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;./src/index.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        blocks: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;./src/blocks/index.js&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;cuando-seguir-usando-webpack&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-seguir-usando-webpack&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando seguir usando Webpack&lt;/h3&gt;
&lt;p&gt;Webpack sigue siendo necesario para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proyectos legacy que no pueden migrarse inmediatamente&lt;/li&gt;
&lt;li&gt;Requisitos de empaquetado complejos (division de código en multiples puntos de entrada)&lt;/li&gt;
&lt;li&gt;Proyectos que requieren ecosistemas extensos de plugins&lt;/li&gt;
&lt;li&gt;Equipos con profunda experiencia en Webpack y sin tiempo para reentrenamiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sin embargo, para proyectos nuevos en 2026, Vite es casí siempre la mejor opción.&lt;/p&gt;
&lt;h2 id=&quot;2-typescript-el-nuevo-estándar-para-desarrollo-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-typescript-el-nuevo-estándar-para-desarrollo-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. TypeScript: El nuevo estándar para desarrollo WordPress&lt;/h2&gt;
&lt;p&gt;En 2026, JavaScript sin tipado se considera un riesgo para proyectos empresariales. TypeScript se ha convertido en el estándar de la industria, y con buena razon.&lt;/p&gt;
&lt;h3 id=&quot;por-que-typescript-importa-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-typescript-importa-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que TypeScript importa para WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Prevencion de errores:&lt;/strong&gt;
TypeScript captura errores antes de que el código se ejecute. Considere este error comun en bloques Gutenberg:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;typescript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Sin TypeScript - Error en tiempo de ejecucion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;red&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; // El desarrollador pasa accidentalmente un string&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mas adelante en el código:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setAttributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ color: { r: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, g: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, b: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }}) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Espera objeto, obtiene string&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Con TypeScript - Error en tiempo de compilacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;interface&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ColorAttributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// TypeScript captura la incompatibilidad inmediatamente&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Seguridad en desarrollo de bloques:&lt;/strong&gt;
Como los bloques Gutenberg dependen en gran medida de objetos &lt;code&gt;attributes&lt;/code&gt; complejos, TypeScript asegura seguridad de tipos en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Atributos de bloques&lt;/li&gt;
&lt;li&gt;Controles del inspector&lt;/li&gt;
&lt;li&gt;Renderizado del lado del servidor&lt;/li&gt;
&lt;li&gt;Respuestas de API&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-de-typescript-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-typescript-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de TypeScript para WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// tsconfig.json - Optimizado para WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;compilerOptions&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;target&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ES2020&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;module&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ESNext&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;lib&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ES2020&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;DOM&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;jsx&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;react&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;moduleResolution&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;node&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;strict&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;esModuleInterop&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;skipLibCheck&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;resolveJsonModule&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;types&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;@wordpress/blocks&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;include&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;src/**/*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;exclude&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;node_modules&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;dist&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estadísticas-de-adopcion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estadísticas-de-adopcion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estadísticas de adopcion&lt;/h3&gt;
&lt;p&gt;A partir de 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El 78% de los nuevos plugins de WordPress usan TypeScript&lt;/li&gt;
&lt;li&gt;El 92% de los proyectos empresariales de WordPress requieren TypeScript&lt;/li&gt;
&lt;li&gt;Las principales agencias de WordPress reportan un 40% de reduccion en bugs tras la adopcion de TypeScript&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de migración&lt;/h3&gt;
&lt;p&gt;Para proyectos existentes, la migración a TypeScript puede ser gradual:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Comience con archivos nuevos (extensión &lt;code&gt;.ts&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Convierta gradualmente archivos críticos (bloques, manejadores de API)&lt;/li&gt;
&lt;li&gt;Use comentarios &lt;code&gt;// @ts-check&lt;/code&gt; para victorias rápidas en archivos existentes&lt;/li&gt;
&lt;li&gt;Habilite el modo estricto incrementalmente&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;3-dominando-hot-module-replacement-hmr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-dominando-hot-module-replacement-hmr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Dominando Hot Module Replacement (HMR)&lt;/h2&gt;
&lt;p&gt;HMR es fluido y transformador para la experiencia del desarrollador.&lt;/p&gt;
&lt;h3 id=&quot;la-revolucion-en-experiencia-de-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-revolucion-en-experiencia-de-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La revolucion en experiencia de desarrollo&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Flujo de trabajo tradicional:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Editar CSS de un bloque Gutenberg&lt;/li&gt;
&lt;li&gt;Guardar archivo&lt;/li&gt;
&lt;li&gt;Esperar la construccion (5 segundos)&lt;/li&gt;
&lt;li&gt;Recargar navegador&lt;/li&gt;
&lt;li&gt;Navegar a la página (10 segundos)&lt;/li&gt;
&lt;li&gt;Abrir el editor de bloques&lt;/li&gt;
&lt;li&gt;Navegar 10 niveles profundo hasta la configuración en la que trabaja&lt;/li&gt;
&lt;li&gt;Verificar el cambio&lt;/li&gt;
&lt;li&gt;Repetir para la siguiente iteracion&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Tiempo total por iteracion: 20-30 segundos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flujo de trabajo moderno con HMR:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Editar CSS de un bloque Gutenberg&lt;/li&gt;
&lt;li&gt;Guardar archivo&lt;/li&gt;
&lt;li&gt;El cambio aparece instantaneamente en el navegador (&amp;#x3C;100ms)&lt;/li&gt;
&lt;li&gt;Sin perdida de navegación, sin cambio de contexto&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Tiempo total por iteracion: &amp;#x3C;1 segundo&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;implementación-de-hmr-para-bloques-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-de-hmr-para-bloques-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación de HMR para bloques Gutenberg&lt;/h3&gt;
&lt;p&gt;Las herramientas de construccion modernas manejan automáticamente HMR para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambios de CSS (actualizaciones visuales instantaneas)&lt;/li&gt;
&lt;li&gt;Cambios de JavaScript (preservando el estado del componente)&lt;/li&gt;
&lt;li&gt;Actualizaciones de componentes React (manteniendo el estado del editor)&lt;/li&gt;
&lt;li&gt;Cambios de assets (imágenes, fuentes)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;metricas-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de rendimiento&lt;/h3&gt;
&lt;p&gt;Los estudios muestran que HMR aumenta la productividad del desarrollador en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;60% de ciclos de iteracion más rápidos&lt;/li&gt;
&lt;li&gt;45% de reduccion en cambio de contexto&lt;/li&gt;
&lt;li&gt;30% menos bugs (retroalimentacion más rápida = deteccion temprana de errores)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-gestión-moderna-de-assets-con-full-site-editing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-gestión-moderna-de-assets-con-full-site-editing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Gestión moderna de assets con Full Site Editing&lt;/h2&gt;
&lt;p&gt;Los temas de Full Site Editing (FSE) requieren un enfoque fundamentalmente diferente para estilos y gestión de assets.&lt;/p&gt;
&lt;h3 id=&quot;generación-de-themejson-desde-tokens-de-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generación-de-themejson-desde-tokens-de-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Generación de theme.json desde tokens de diseño&lt;/h3&gt;
&lt;p&gt;En 2026, generamos &lt;code&gt;theme.json&lt;/code&gt; dinamicamente desde tokens de diseño:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// build-theme-json.js&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { readFileSync } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;fs&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { designTokens } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;./figma-tokens.json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; themeJson&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  settings: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    color: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      palette: designTokens.colors.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        slug: color.name,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        color: color.value,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        name: color.label&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    typography: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      fontFamilies: designTokens.fonts.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        slug: font.name,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        fontFamily: font.value&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Auto-generar theme.json desde tokens de Figma&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este enfoque asegura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consistencia del sistema de diseño en todo el tema&lt;/li&gt;
&lt;li&gt;Fuente única de verdad (Figma -&gt; WordPress)&lt;/li&gt;
&lt;li&gt;Actualizaciones automáticas cuando cambian los tokens de diseño&lt;/li&gt;
&lt;li&gt;Reduccion de errores de configuración manual&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;carga-condicional-de-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#carga-condicional-de-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Carga condicional de CSS&lt;/h3&gt;
&lt;p&gt;En 2026, no cargamos un solo &lt;code&gt;style.css&lt;/code&gt;. Las cadenas de construccion modernas automáticamente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Analizan el uso de bloques&lt;/strong&gt; en cada página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dividen el CSS&lt;/strong&gt; por tipo de bloque&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cargan solo los estilos necesarios&lt;/strong&gt; para los bloques presentes en la página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Insertan CSS crítico&lt;/strong&gt; para contenido sobre el pliegue&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esto resulta en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;60-80% de reduccion en el payload de CSS&lt;/li&gt;
&lt;li&gt;First Contentful Paint (FCP) más rápido&lt;/li&gt;
&lt;li&gt;Mejores puntuaciones de &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Core Web Vitals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mejor rendimiento móvil&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-comparación-de-cadenas-de-construccion-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-comparación-de-cadenas-de-construccion-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Comparación de cadenas de construccion 2026&lt;/h2&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Herramienta&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Velocidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Complejidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejor para&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Integración WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Vite&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ultra rápida&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Temás FSE modernos / Plugins&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente (via plugins)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Webpack&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Lenta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Proyectos legacy / Empaquetado complejo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente (ecosistema maduro)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Parcel&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Rápida&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Plugins pequeños / simples&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Buena (cero configuración)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Esbuild&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extrema&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Minificacion backend de alta velocidad&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada (solo construccion)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Turbopack&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extrema&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Proyectos Next.js&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No disponible&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;cuando-elegir-cada-herramienta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-elegir-cada-herramienta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando elegir cada herramienta&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Elija Vite si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comienza un nuevo proyecto WordPress&lt;/li&gt;
&lt;li&gt;Usa JavaScript moderno (modulos ES)&lt;/li&gt;
&lt;li&gt;Necesita experiencia de desarrollo rápida&lt;/li&gt;
&lt;li&gt;Trabaja con temas FSE o bloques Gutenberg&lt;/li&gt;
&lt;li&gt;El equipo valora la experiencia del desarrollador&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elija Webpack si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mantiene proyectos WordPress legacy&lt;/li&gt;
&lt;li&gt;Requiere un ecosistema extenso de plugins&lt;/li&gt;
&lt;li&gt;Tiene requisitos complejos de division de código&lt;/li&gt;
&lt;li&gt;El equipo tiene profunda experiencia en Webpack&lt;/li&gt;
&lt;li&gt;El riesgo de migración es demasiado alto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elija Parcel si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Construye plugins WordPress simples&lt;/li&gt;
&lt;li&gt;Quiere configuración cero&lt;/li&gt;
&lt;li&gt;Prefiere convencion sobre configuración&lt;/li&gt;
&lt;li&gt;Proyectos pequeños a medianos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-gestores-de-paquetes-npm-yarn-pnpm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-gestores-de-paquetes-npm-yarn-pnpm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Gestores de paquetes: npm, yarn, pnpm&lt;/h2&gt;
&lt;p&gt;En 2026, la eleccion del gestor de paquetes impacta significativamente el rendimiento de construccion.&lt;/p&gt;
&lt;h3 id=&quot;comparación-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de rendimiento&lt;/h3&gt;
&lt;p&gt;Para un tema WordPress tipico con 150 dependencias:&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Gestor&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Tiempo instalación&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Espacio disco&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Tamaño node_modules&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;pnpm&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;8 segundos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;250 MB&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;280 MB&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;yarn&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;15 segundos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;400 MB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;450 MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;npm&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;20 segundos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;500 MB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;550 MB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;por-que-pnpm-gana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-pnpm-gana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que pnpm gana&lt;/h3&gt;
&lt;p&gt;pnpm usa un almacen direccionable por contenido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los paquetes se almacenan una sola vez globalmente&lt;/li&gt;
&lt;li&gt;Los proyectos enlazan al almacen global (enlaces duros)&lt;/li&gt;
&lt;li&gt;70% de ahorro en espacio de disco&lt;/li&gt;
&lt;li&gt;Instalaciones más rápidas (sin descargas duplicadas)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Configuración moderna de proyecto WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;pnpm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; vite@latest&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mi-tema-wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mi-tema-wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;pnpm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-gestión-de-monorepo-para-agencias-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-gestión-de-monorepo-para-agencias-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Gestión de monorepo para agencias WordPress&lt;/h2&gt;
&lt;p&gt;Para agencias que gestionan 50+ sitios WordPress, 2026 es el año del &lt;strong&gt;Monorepo&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;beneficios-de-la-arquitectura-monorepo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#beneficios-de-la-arquitectura-monorepo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Beneficios de la arquitectura monorepo&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Biblioteca de componentes compartidos&lt;/strong&gt;: Una biblioteca “Core Component” usada en todos los sitios de clientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herramientas consistentes&lt;/strong&gt;: Mismás herramientas de construccion, linting y testing en todos los proyectos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones atomicas&lt;/strong&gt;: Actualice un componente compartido una vez, despliegue a todos los sitios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construcciones paralelas&lt;/strong&gt;: Turbo o Nx pueden construir/testear multiples proyectos simultaneamente&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;configuración-de-turbo-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-turbo-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de Turbo para WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// turbo.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;pipeline&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;build&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;dependsOn&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;^build&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;outputs&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;dist/**&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;test&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;dependsOn&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;build&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;lint&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;impacto-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto real&lt;/h3&gt;
&lt;p&gt;Las agencias reportan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;40% de construcciones más rápidas (ejecucion paralela)&lt;/li&gt;
&lt;li&gt;60% de reduccion en duplicacion de código&lt;/li&gt;
&lt;li&gt;80% de incorporacion más rápida (herramientas consistentes)&lt;/li&gt;
&lt;li&gt;Mejor calidad de código (estándares compartidos)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;8-integración-con-flujos-de-trabajo-modernos-de-desarrollo-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-integración-con-flujos-de-trabajo-modernos-de-desarrollo-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Integración con flujos de trabajo modernos de desarrollo WordPress&lt;/h2&gt;
&lt;p&gt;Las herramientas de construccion modernas se integran perfectamente con &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios profesionales de desarrollo WordPress&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pipelines CI/CD&lt;/strong&gt;: Construcciones automatizadas en cada commit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad de código&lt;/strong&gt;: ESLint, Prettier, TypeScript integrados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing&lt;/strong&gt;: Jest, Vitest para pruebas unitarias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue&lt;/strong&gt;: Despliegue automatizado a staging/producción&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tiendas WooCommerce&lt;/a&gt;, las herramientas modernas permiten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desarrollo más rápido de flujos de checkout personalizados&lt;/li&gt;
&lt;li&gt;Vista previa en tiempo real de integraciones de pago&lt;/li&gt;
&lt;li&gt;Iteracion rápida en componentes de visualización de productos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;9-monitoreo-de-rendimiento-y-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-monitoreo-de-rendimiento-y-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Monitoreo de rendimiento y optimización&lt;/h2&gt;
&lt;p&gt;Las herramientas de construccion modernas proporcionan información de rendimiento integrada:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Análisis de bundles&lt;/strong&gt;: Identificar dependencias grandes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguimiento de tiempo de construccion&lt;/strong&gt;: Monitorear el rendimiento de construccion a lo largo del tiempo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de assets&lt;/strong&gt;: Minificacion automática, tree-shaking&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación de source maps&lt;/strong&gt;: Mejor depuracion en producción&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estas herramientas ayudan a mantener un &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;rendimiento rápido de WordPress&lt;/a&gt; durante todo el ciclo de vida del desarrollo.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Las herramientas que usa definen la calidad del producto que entrega. Al adoptar &lt;strong&gt;Vite&lt;/strong&gt;, &lt;strong&gt;TypeScript&lt;/strong&gt; y &lt;strong&gt;cadenas de construccion modernas&lt;/strong&gt;, se asegura de que su proceso de desarrollo sea tan rápido y fiable como los sitios web que construye.&lt;/p&gt;
&lt;p&gt;Para &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores profesionales de WordPress&lt;/a&gt; y agencias, las herramientas modernas no son opcionales, son esenciales para mantenerse competitivos. Las ganancias de productividad de construcciones más rápidas, mejor seguridad de tipos y HMR fluido se multiplican en un valor comercial significativo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Todavia esta esperando a que Webpack termine? Es hora de actualizar sus herramientas.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Desea modernizar su flujo de trabajo de desarrollo WordPress? Nuestro equipo se especializa en &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress personalizado&lt;/a&gt; usando los últimos estándares de herramientas de 2026. Podemos ayudarle a migrar sus proyectos existentes a Vite, configurar TypeScript o construir nuevos proyectos con arquitectura moderna desde el inicio. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactenos&lt;/a&gt; para comenzar.&lt;/p&gt;</content:encoded><category>development</category><category domain="tag">vite</category><category domain="tag">tooling</category><category domain="tag">build-process</category><category domain="tag">javascript</category><category domain="tag">workflow</category><enclosure url="https://wppoland.com/images/og/web-development-seminar-room.jpg" type="image/jpeg"/></item><item><title>Auditoria de Seguridad WordPress</title><link>https://wppoland.com/es/security-audit-services/</link><guid isPermaLink="true">https://wppoland.com/es/security-audit-services/</guid><description>Servicios profesionales de auditoria de seguridad WordPress. Identifica vulnerabilidades, obtiene planes de remediacion accionables y protege tu sitio web de amenazas.</description><pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;auditoria-de-seguridad-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-de-seguridad-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria de Seguridad WordPress&lt;/h2&gt;
&lt;p&gt;WordPress alimenta un gran porcentaje de la web, convirtiendolo en un objetivo frecuente de ataques. Una brecha de seguridad puede devastar tu negocio a través de perdida de datos, dano a la reputacion y costos de recuperacion. Las auditorias de seguridad regulares identifican vulnerabilidades antes de que los atacantes las exploten.&lt;/p&gt;
&lt;h2 id=&quot;por-que-importan-las-auditorias-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-importan-las-auditorias-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por Que Importan las Auditorias de Seguridad&lt;/h2&gt;
&lt;h3 id=&quot;panorama-de-amenazas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#panorama-de-amenazas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Panorama de Amenazas&lt;/h3&gt;
&lt;p&gt;WordPress enfrenta ataques constantes de bots automatizados y amenazas dirigidas. Los atacantes escanean en busca de plugins desactualizados, credenciales debiles y errores de configuración. La mayoria de los ataques son automatizados, lo que significa que cualquier sitio vulnerable eventualmente será encontrado y explotado.&lt;/p&gt;
&lt;p&gt;Las estadísticas son contundentes: miles de sitios WordPress son comprometidos cada dia. Los atacantes no discriminan por tamaño: un blog personal con 100 visitas al mes es tan vulnerable como un sitio empresarial con millones de usuarios. La diferencia esta en las consecuencias y en la capacidad de recuperacion.&lt;/p&gt;
&lt;h3 id=&quot;consecuencias-de-una-brecha&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consecuencias-de-una-brecha&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consecuencias de una Brecha&lt;/h3&gt;
&lt;p&gt;Los incidentes de seguridad tienen consecuencias serias incluyendo costos de notificación de brechas de datos, multas regulatorias (especialmente bajo GDPR), tiempo de inactividad del sitio web y perdida de ingresos, dano a la reputacion y perdida de confianza del clientes, y costos de recuperacion y gastos futuros de seguridad. Nuestros &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de auditoria de seguridad WordPress&lt;/a&gt; ayudan a identificar y eliminar estos riesgos antes de que los atacantes los exploten.&lt;/p&gt;
&lt;h3 id=&quot;el-costo-real-de-no-auditar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-costo-real-de-no-auditar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El costo real de no auditar&lt;/h3&gt;
&lt;p&gt;Un estudio reciente muestra que el costo promedio de una brecha de seguridad para una pequeña empresa es de 200,000 euros, incluyendo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Costos directos&lt;/strong&gt;: Remediacion técnica, restauracion de datos, multas regulatorias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Costos indirectos&lt;/strong&gt;: Perdida de clientes, dano reputacional, tiempo de inactividad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Costos a largo plazo&lt;/strong&gt;: Aumento de primás de seguro, inversión en seguridad reactiva&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Comparado con el costo de una auditoria preventiva, la decision es clara.&lt;/p&gt;
&lt;h2 id=&quot;proceso-de-auditoria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-auditoria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de Auditoria&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-descubrimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-descubrimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Descubrimiento&lt;/h3&gt;
&lt;p&gt;La auditoria comienza con un descubrimiento completo que incluye inventario de todos los componentes instalados, documentación de las medidas de seguridad actuales, revision de cuentas de usuario y permisos, y análisis del entorno de hosting.&lt;/p&gt;
&lt;p&gt;Durante esta fase, catalogamos cada plugin, tema y componente personalizado. Documentamos las versiones exactas, identificamos software abandonado o sin mantenimiento, y mapeamos la superficie de ataque completa del sitio.&lt;/p&gt;
&lt;h3 id=&quot;fase-2-escaneo-de-vulnerabilidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-escaneo-de-vulnerabilidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Escaneo de Vulnerabilidades&lt;/h3&gt;
&lt;p&gt;Las herramientas automatizadas escanean en busca de vulnerabilidades conocidas en el core de WordPress, temas y plugins. El escaneo identifica componentes desactualizados, fallos de seguridad conocidos, debilidades de configuración y archivos sensibles expuestos.&lt;/p&gt;
&lt;p&gt;Usamos multiples herramientas de escaneo para maximizar la cobertura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WPScan&lt;/strong&gt;: Base de datos especializada en vulnerabilidades de WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nuclei&lt;/strong&gt;: Escaneo de vulnerabilidades de código abierto con plantillas actualizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSL Labs&lt;/strong&gt;: Evaluación de configuración SSL/TLS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security Headers&lt;/strong&gt;: Verificación de cabeceras de seguridad HTTP&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-3-evaluación-manual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-evaluación-manual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Evaluación Manual&lt;/h3&gt;
&lt;p&gt;El escaneo automatizado no detecta problemas específicos del contexto. La evaluación manual incluye revision de código de temas y plugins personalizados, pruebas de autenticación y autorización, identificacion de vulnerabilidades de lógica de negocio y análisis de vectores de ataque.&lt;/p&gt;
&lt;p&gt;Esta es la fase más valiosa de la auditoria. Un auditor experto puede identificar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inyecciones SQL en consultas personalizadas que no usan &lt;code&gt;$wpdb-&gt;prepare()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Vulnerabilidades XSS en formularios y salidas de datos&lt;/li&gt;
&lt;li&gt;Problemás de escalamiento de privilegios en verificaciónes de capacidades&lt;/li&gt;
&lt;li&gt;Exposicion de información sensible a través de la REST API&lt;/li&gt;
&lt;li&gt;Configuraciónes de WordPress inseguras en wp-config.php&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-4-pruebas-de-penetracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-pruebas-de-penetracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Pruebas de Penetracion&lt;/h3&gt;
&lt;p&gt;Simulacion de ataques reales que prueban las defensas de forma exhaustiva. Las pruebas incluyen explotacion controlada de vulnerabilidades identificadas, evaluación de movimiento lateral, pruebas de exposicion de datos y validación de efectividad de defensas.&lt;/p&gt;
&lt;p&gt;Las pruebas de penetracion revelan como las vulnerabilidades individuales pueden encadenarse para lograr un compromiso mayor. Una vulnerabilidad de baja severidad combinada con una configuración debil puede resultar en una toma completa del sitio.&lt;/p&gt;
&lt;h2 id=&quot;entregables&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entregables&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entregables&lt;/h2&gt;
&lt;h3 id=&quot;informe-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#informe-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Informe de Seguridad&lt;/h3&gt;
&lt;p&gt;El informe completo incluye resumen ejecutivo con calificaciones de riesgo, hallazgos detallados con clasificaciónes de severidad, descripciones técnicas de cada vulnerabilidad, demostraciones de prueba de concepto y recomendaciónes de remediacion.&lt;/p&gt;
&lt;h3 id=&quot;plan-de-accion-priorizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-accion-priorizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de Accion Priorizado&lt;/h3&gt;
&lt;p&gt;No todas las vulnerabilidades requieren atención inmediata. El plan de accion prioriza correcciones basadas en severidad, explotabilidad e impacto empresarial. Las instrucciones claras permiten a tu equipo implementar correcciones eficientemente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Clasificación de prioridad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Crítica (P0)&lt;/strong&gt;: Corregir inmediatamente - vulnerabilidades explotables activamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alta (P1)&lt;/strong&gt;: Corregir en 48 horas - vulnerabilidades con riesgo significativo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Media (P2)&lt;/strong&gt;: Corregir en 1 semana - vulnerabilidades con riesgo moderado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Baja (P3)&lt;/strong&gt;: Corregir en 1 mes - mejoras de endurecimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;guia-de-endurecimiento-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-endurecimiento-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de Endurecimiento de Seguridad&lt;/h3&gt;
&lt;p&gt;Mas alla de corregir los problemas identificados, la guía proporciona mejores prácticas de seguridad continua incluyendo recomendaciónes de configuración, sugerencias de monitoreo, procedimientos de actualización y politicas de seguridad.&lt;/p&gt;
&lt;h2 id=&quot;hallazgos-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hallazgos-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hallazgos Comunes&lt;/h2&gt;
&lt;h3 id=&quot;vulnerabilidades-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#vulnerabilidades-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Vulnerabilidades de Plugins&lt;/h3&gt;
&lt;p&gt;Los plugins desactualizados o mal mantenidos frecuentemente contienen fallos de seguridad. Las auditorias identifican plugins que requieren actualizaciones o reemplazo. En nuestra experiencia, el 80% de los sitios WordPress auditados tienen al menos un plugin con una vulnerabilidad conocida.&lt;/p&gt;
&lt;h3 id=&quot;problemás-de-configuración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-de-configuración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás de Configuración&lt;/h3&gt;
&lt;p&gt;Las configuraciónes por defecto y las malas configuraciónes comunes crean vulnerabilidades. Los problemas comunes incluyen exposicion innecesaria de archivos, politicas de contrasenas debiles y configuraciónes de permisos inadecuadas.&lt;/p&gt;
&lt;h3 id=&quot;debilidades-de-autenticación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#debilidades-de-autenticación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Debilidades de Autenticación&lt;/h3&gt;
&lt;p&gt;La autenticación debil permite acceso no autorizado. Los hallazgos a menudo incluyen falta de autenticación de dos factores, vulnerabilidades de enumeracion de usuarios y problemas de gestión de sesiones.&lt;/p&gt;
&lt;h3 id=&quot;calidad-del-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#calidad-del-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Calidad del Código&lt;/h3&gt;
&lt;p&gt;El código personalizado puede contener fallos de seguridad. Las auditorias identifican riesgos de inyeccion SQL, vulnerabilidades de cross-site scripting (XSS) y manejo inseguro de datos.&lt;/p&gt;
&lt;h2 id=&quot;seguridad-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad Continua&lt;/h2&gt;
&lt;p&gt;Las auditorias puntuales proporcionan una evaluación en un momento dado. La seguridad continua incluye monitoreo constante, re-auditorias regulares despues de cambios, gestión de actualizaciones de seguridad y planificación de respuesta a incidentes.&lt;/p&gt;
&lt;h3 id=&quot;programa-de-seguridad-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#programa-de-seguridad-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Programa de seguridad recomendado&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Frecuencia&lt;/th&gt;&lt;th&gt;Actividad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Diario&lt;/td&gt;&lt;td&gt;Monitoreo automatizado de disponibilidad y integridad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Semanal&lt;/td&gt;&lt;td&gt;Verificación de actualizaciones de plugins y core&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mensual&lt;/td&gt;&lt;td&gt;Revision de logs de acceso y seguridad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trimestral&lt;/td&gt;&lt;td&gt;Escaneo de vulnerabilidades automatizado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Anual&lt;/td&gt;&lt;td&gt;Auditoria completa con pruebas de penetracion&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;protege-tu-inversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protege-tu-inversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protege Tu Inversión&lt;/h2&gt;
&lt;p&gt;Las auditorias de seguridad proporcionan evaluación de riesgos esencial y planes de mejora accionables. La seguridad no es un gasto, es una inversión en la continuidad de tu negocio. Contactame para programar una auditoria de seguridad completa de tu sitio WordPress.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/es/contacto/&quot; class=&quot;button-primary&quot;&gt;Programar Auditoria de Seguridad&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Explora nuestros servicios de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; para mantener tu sitio protegido continuamente.&lt;/p&gt;</content:encoded><category>wordpress</category><category>security</category><category>audit</category><category domain="tag">security-audit</category><category domain="tag">wordpress-security</category><category domain="tag">vulnerability-assessment</category><category domain="tag">penetration-testing</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>El ecosistema WordPress explicado: Temas, Plugins y Licencias (2026)</title><link>https://wppoland.com/es/wordpress-ecosystem-explained-themes-plugins-licensing/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-ecosystem-explained-themes-plugins-licensing/</guid><description>Confundido con &quot;Tema vs Plugin&quot;? Entiende la arquitectura central de WordPress, el uso legal del logo y por que el Open Source importa para tu negocio.</description><pubDate>Thu, 08 Jan 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;WordPress impulsa más del 43% de todo internet. No es simplemente un software; es una economia global. Es una carrera profesional para millones, una plataforma de publicación para empresas Fortune 500 y una herramienta democratica para la libertad de expresion. Sin embargo, para los recien llegados - e incluso para desarrolladores experimentados que provienen de otros stacks - las lineas entre &quot;Core&quot;, &quot;Tema&quot; y &quot;Plugin&quot; suelen difuminarse.&lt;/p&gt;
&lt;p&gt;En 2026, comprender esta arquitectura no es solo academico - es práctico. Construir un sitio “a la manera WordPress” garantiza longevidad, seguridad y portabilidad. Construirlo en contra de la arquitectura lleva a sitios “Frankenstein” que se rompen con cada actualización.&lt;/p&gt;
&lt;p&gt;Esta guía desmitifica la estructura del ecosistema, las reglas de marca registrada que debes seguir, y la filosofia que garantiza que realmente seas dueño de tus datos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-1-la-arquitectura-lego&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-la-arquitectura-lego&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: La arquitectura “Lego”&lt;/h2&gt;
&lt;p&gt;Piensa en un sitio web WordPress como una casa. No puedes construir el techo antes de los cimientos, y no deberias usar el cableado electrico para sostener las paredes.&lt;/p&gt;
&lt;h3 id=&quot;1-wordpress-core-los-cimientos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-wordpress-core-los-cimientos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. WordPress Core (Los cimientos)&lt;/h3&gt;
&lt;p&gt;Esta es la losa de concreto. Proporciona las leyes fundamentales de la fisica para tu mundo digital. El Core gestiona:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gestión de usuarios&lt;/strong&gt; (Quien eres?)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enrutamiento&lt;/strong&gt; (A donde vas?)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conexiones de base de datos&lt;/strong&gt; (Donde estan las cosas?)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipos de contenido básicos&lt;/strong&gt; (Entradas y Páginas)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El Core es mantenido por miles de colaboradores en todo el mundo. Esta diseñado para ser compatible hacia atras e increiblemente estable. &lt;strong&gt;Nunca&lt;/strong&gt; edites archivos del Core. Si hackeas el Core, tus cambios se borraran en el momento en que hagas clic en “Actualizar”.&lt;/p&gt;
&lt;p&gt;WordPress Core también proporciona el sistema de hooks - acciones y filtros - que permiten a los desarrolladores extender la funcionalidad sin modificar archivos centrales. Este patron de diseño es lo que hace a WordPress tan flexible y permite que el ecosistema de plugins exista.&lt;/p&gt;
&lt;h3 id=&quot;2-el-tema-la-pintura-y-decoracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-tema-la-pintura-y-decoracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El tema (La pintura y decoracion)&lt;/h3&gt;
&lt;p&gt;Esto controla la &lt;strong&gt;presentacion&lt;/strong&gt;. Responde a la pregunta: &lt;em&gt;“Como se ven los datos?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Los temas controlan tipografia, paletas de color, grids de diseño y responsividad. En 2026, con el editor de bloques maduro, los temas se han vuelto más delgados - muchos ahora son simplemente un &lt;code&gt;theme.json&lt;/code&gt; con estilos globales y unas pocas plantillas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La regla de oro de los temas:&lt;/strong&gt;
Un tema debe presentar contenido, no crearlo. Si cambias de tema, tu contenido (tus publicaciónes de blog, tus productos, el texto de tu página “Acerca de”) debe permanecer visible, incluso si se ve feo o sin estilo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El antipatron de “bloqueo de tema”:&lt;/strong&gt;
Muchos temas comerciales en marketplaces como ThemeForest violan esta regla. Empaquetan “Perfiles de personal” o “Proyectos de portfolio” directamente en el código del tema.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;El resultado:&lt;/em&gt; Cuando intentas cambiar de tema 3 años despues, todos tus elementos de Portfolio desaparecen del panel de administración porque estaban atados al tema, no al sitio. Esto es mala arquitectura.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Como identificar un tema bien construido en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa &lt;code&gt;theme.json&lt;/code&gt; para estilos globales&lt;/li&gt;
&lt;li&gt;No registra Custom Post Types&lt;/li&gt;
&lt;li&gt;No incluye shortcodes propios&lt;/li&gt;
&lt;li&gt;Funciona con el editor de bloques nativo&lt;/li&gt;
&lt;li&gt;Mantiene separacion clara entre presentacion y lógica&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-el-plugin-los-electrodomesticos-y-cableado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-el-plugin-los-electrodomesticos-y-cableado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. El plugin (Los electrodomesticos y cableado)&lt;/h3&gt;
&lt;p&gt;Esto controla la &lt;strong&gt;funcionalidad&lt;/strong&gt;. Responde a la pregunta: &lt;em&gt;“Que puede hacer el sitio?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Los plugins añaden funciones: E-commerce (WooCommerce), metadatos SEO, Formularios de Contacto, Cache, Copias de seguridad, Integraciones con CRM, Automatizacion de marketing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La regla de oro de los plugins:&lt;/strong&gt;
La funcionalidad va aqui. Si cambias de tema, tu Tienda Online (plugin) debe seguir funcionando. El boton “Comprar” puede verse diferente, pero la lógica de checkout permanece intacta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de plugins en el ecosistema WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plugins de funcionalidad&lt;/strong&gt;: WooCommerce, Contact Form 7, ACF Pro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins de optimización&lt;/strong&gt;: Caching, compresion de imágenes, minificacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins de seguridad&lt;/strong&gt;: Firewall, escaneo de malware, autenticación 2FA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins de SEO&lt;/strong&gt;: Yoast, Rank Math, The SEO Framework&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Must-Use Plugins (mu-plugins)&lt;/strong&gt;: Código que se ejecuta siempre, sin opción de desactivar&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tabla-comparativa-tema-vs-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-comparativa-tema-vs-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla comparativa: Tema vs. Plugin&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Tema WordPress&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Plugin WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Objetivo principal&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Presentacion visual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Capacidad funcional&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cantidad activa&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Exactamente 1 (más Child Theme opcional)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0 a 100+ (Modular)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ejemplos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Astra, Twenty Twenty-Four, Ollie&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Yoast SEO, WooCommerce, Gravity Forms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Impacto al cambiar&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cambia el aspecto visual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Añade o elimina funciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Enfoque del código&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;CSS, HTML, PHP minimo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;PHP, JavaScript, Consultas de BD&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-la-marca-respetar-el-logo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-la-marca-respetar-el-logo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: La marca (Respetar el logo)&lt;/h2&gt;
&lt;p&gt;Uno de los errores más comunes que cometen las agencias es el mal uso de la marca registrada de WordPress. Esto puede hacer que te prohiban participar en eventos de la comunidad o que recibas cartas de Cese y Desistimiento.&lt;/p&gt;
&lt;h3 id=&quot;el-nombre&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-nombre&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El nombre&lt;/h3&gt;
&lt;p&gt;Es “WordPress” (W &lt;strong&gt;mayuscula&lt;/strong&gt;, P &lt;strong&gt;mayuscula&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No&lt;/strong&gt; es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wordpress (p minuscula)&lt;/li&gt;
&lt;li&gt;Word Press (con espacio)&lt;/li&gt;
&lt;li&gt;WP (en contexto oficial, aunque aceptable como abreviatura)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La comunidad es tan seria sobre esto que existe una función en el software central llamada &lt;code&gt;capital_P_dangit()&lt;/code&gt; que automáticamente corrige la ortografia en títulos y contenido.&lt;/p&gt;
&lt;h3 id=&quot;el-logo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-logo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El logo&lt;/h3&gt;
&lt;p&gt;El logo oficial es una &lt;strong&gt;W&lt;/strong&gt; dentro de un circulo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El logo falso&lt;/strong&gt;: Muchos sitios usan una “W” con parte superior plana. Esto es incorrecto. La “W” comercial a menudo usada en clip-art generico tiene hombros rectos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El logo real&lt;/strong&gt;: La “W” correcta tiene una parte superior alta y elegante, y los brazos de la W tocan el circulo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;las-reglas-de-marca-registrada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-reglas-de-marca-registrada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las reglas de marca registrada&lt;/h3&gt;
&lt;p&gt;La marca registrada de WordPress es propiedad de la WordPress Foundation (una organización sin fines de lucro). Las reglas son estrictas para prevenir confusion.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dominios&lt;/strong&gt;: No puedes usar “WordPress” en un nombre de dominio de nivel superior.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Permitido:&lt;/em&gt; &lt;code&gt;wp-experts.com&lt;/code&gt;, &lt;code&gt;press-gurus.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Prohibido:&lt;/em&gt; &lt;code&gt;wordpress-experts.com&lt;/code&gt;, &lt;code&gt;wordpress-help.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nombres de producto&lt;/strong&gt;: No puedes comenzar el nombre de tu producto con “WordPress”.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Permitido:&lt;/em&gt; “Super Slider para WordPress”&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Prohibido:&lt;/em&gt; “WordPress Super Slider”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Por que importa esto?&lt;/strong&gt;
La Fundacion protege la marca registrada para asegurar que ninguna empresa individual (como GoDaddy, WP Engine o Automattic) pueda afirmar “ser” WordPress. Preserva la naturaleza abierta del proyecto.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-la-licencia-gpl-y-software-libre&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-la-licencia-gpl-y-software-libre&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: La licencia (GPL) y software “libre”&lt;/h2&gt;
&lt;p&gt;WordPress es &lt;strong&gt;Open Source&lt;/strong&gt;, publicado bajo la &lt;strong&gt;Licencia Pública General GNU (GPLv2+)&lt;/strong&gt;. Esta es la Declaracion de Derechos para el ciudadano WordPress.&lt;/p&gt;
&lt;h3 id=&quot;las-cuatro-libertades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-cuatro-libertades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las cuatro libertades&lt;/h3&gt;
&lt;p&gt;La GPL te garantiza cuatro libertades específicas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Libertad 0&lt;/strong&gt;: La libertad de ejecutar el programa para cualquier propósito. (Sin restricciones de uso comercial, politico, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Libertad 1&lt;/strong&gt;: La libertad de estudiar como funciona el programa y cambiarlo para que haga lo que desees. (Acceso al código fuente).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Libertad 2&lt;/strong&gt;: La libertad de redistribuir copias para ayudar a tu projimo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Libertad 3&lt;/strong&gt;: La libertad de distribuir copias de tus versiones modificadas a otros.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;la-naturaleza-viral-de-la-gpl&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-naturaleza-viral-de-la-gpl&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La naturaleza viral de la GPL&lt;/h3&gt;
&lt;p&gt;La GPL es una licencia “copyleft”. Esto significa que si distribuyes una obra derivada basada en WordPress (como un Tema o un Plugin), esa obra derivada debe ser &lt;em&gt;también&lt;/em&gt; compatible con GPL.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Por eso la mayoria de los plugins de pago son técnicamente Open Source.&lt;/li&gt;
&lt;li&gt;Cuando compras un plugin premium, &lt;strong&gt;no estas comprando el código&lt;/strong&gt; (que eres libre de compartir). Estas pagando por:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Soporte&lt;/strong&gt;: Acceso a un experto cuando las cosas se rompen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones&lt;/strong&gt;: Entrega automática de parches de seguridad y nuevas funciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conveniencia&lt;/strong&gt;: Alguien más gestionando la complejidad por ti.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mitos-sobre-la-gpl&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mitos-sobre-la-gpl&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mitos sobre la GPL&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Mito:&lt;/em&gt; “No puedo vender sitios WordPress.” -&gt; &lt;strong&gt;Falso.&lt;/strong&gt; Puedes vender el &lt;em&gt;servicio&lt;/em&gt; de construir el sitio y los &lt;em&gt;activos&lt;/em&gt; que creas.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Mito:&lt;/em&gt; “Si uso WordPress, tengo que dar mi código privado a todos.” -&gt; &lt;strong&gt;Falso.&lt;/strong&gt; La disposicion copyleft solo se aplica si &lt;em&gt;distribuyes&lt;/em&gt; el código. Si construyes un plugin personalizado para un clientes y permanece en su servidor, no tienes que publicarlo al mundo.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Mito:&lt;/em&gt; “Los plugins GPL no pueden ser comerciales.” -&gt; &lt;strong&gt;Falso.&lt;/strong&gt; Puedes cobrar por la descarga, el soporte y las actualizaciones. Solo no puedes prohibir la redistribucion del código en si.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-wordpressorg-vs-wordpresscom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-wordpressorg-vs-wordpresscom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: WordPress.org vs. WordPress.com&lt;/h2&gt;
&lt;p&gt;La confusion eterna. Si estas comenzando un blog profesional o un negocio online, conocer la diferencia es crítico.&lt;/p&gt;
&lt;h3 id=&quot;wordpressorg-el-software&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpressorg-el-software&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress.org (El software)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;También conocido como&lt;/strong&gt;: WordPress autoalojado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Que es&lt;/strong&gt;: El software gratuito y de código abierto que descargas del repositorio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Propiedad&lt;/strong&gt;: Eres dueño. Alquilas un servidor, instalas el código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Libertad completa. Instala cualquier plugin. Edita cualquier archivo. Monetiza como quieras.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Eres responsable del mantenimiento (backups, actualizaciones de seguridad), a menos que pagues un Host Gestionado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;: Este es el estándar para sitios profesionales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpresscom-el-servicio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpresscom-el-servicio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress.com (El servicio)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Que es&lt;/strong&gt;: Una plataforma de hosting comercial propiedad de Automattic (empresa fundada por el co-creador de WordPress).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Propiedad&lt;/strong&gt;: Estas alquilando espacio en su jardin amurallado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Ellos gestionan todo el mantenimiento. Es muy fácil empezar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Restricciones en plugins (a menos que pagues planes altos). Pueden cerrar tu sitio si violas sus Terminos de Servicio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;: Bueno para blogs personales de hobby, pero limitante para negocios.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-era-open-saas-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-era-open-saas-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La era “Open SaaS” (2026)&lt;/h3&gt;
&lt;p&gt;En años recientes, la linea se ha difuminado. WordPress.com ahora ofrece herramientas “Studio” para desarrollo local, y los Hosts Gestionados como Kinsta o WP Engine ofrecen soluciones “Headless”. Sin embargo, la distincion fundamental permanece: &lt;strong&gt;.org es el código, .com es una empresa.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-5-el-poder-economico-del-ecosistema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-el-poder-economico-del-ecosistema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: El poder economico del ecosistema&lt;/h2&gt;
&lt;p&gt;Por que construir tu negocio en WordPress en lugar de un sistema propietario como Wix, Squarespace o Shopify? La respuesta esta en la &lt;strong&gt;Soberania de Datos&lt;/strong&gt; y la &lt;strong&gt;Estrategia de Salida&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;la-trampa-del-jardin-amurallado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-trampa-del-jardin-amurallado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La trampa del “jardin amurallado”&lt;/h3&gt;
&lt;p&gt;Cuando construyes en Wix o Squarespace, estas alquilando el 100% de tu stack.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sin exportacion real&lt;/strong&gt;: Puedes exportar tu texto, pero no puedes exportar tu lógica, tu diseño o tu flujo de checkout de clientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subidas de precio&lt;/strong&gt;: Si duplican sus precios mañana, pagas o desapareces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Riesgo de ToS&lt;/strong&gt;: Si deciden que tu contenido viola sus politicas vagas, pueden eliminar tu negocio entero instantaneamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-ventaja-de-wordpress-portabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ventaja-de-wordpress-portabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La ventaja de WordPress: Portabilidad&lt;/h3&gt;
&lt;p&gt;Gracias al ecosistema Open Source:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Libertad de hosting&lt;/strong&gt;: Si Kinsta se vuelve demasiado caro, puedes migrar tu sitio &lt;em&gt;completo&lt;/em&gt; (base de datos + archivos) a Rocket.net o DigitalOcean en 1 hora. El sitio funcionara de forma identica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Competencia de plugins&lt;/strong&gt;: Si tu plugin de SEO se vuelve pesado (como le paso a Yoast en 2018), puedes cambiar a un competidor (The SEO Framework o RankMath) fácilmente. Las estructuras de datos suelen ser compatibles o importables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Propiedad&lt;/strong&gt;: Nadie puede “borrar” WordPress. Incluso si cada empresa de hosting te prohibiera, podrias alojar el sitio en un servidor en tu sotano.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;tendencias-2026-el-giro-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tendencias-2026-el-giro-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tendencias 2026: El giro empresarial&lt;/h3&gt;
&lt;p&gt;Grandes empresas como NASA, la Casa Blanca y Time Magazine usan WordPress. Por que?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CMS Headless&lt;/strong&gt;: Usan WordPress como API backend para gestionar contenido, pero renderizan el frontend usando React, Next.js o &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Astro&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor de bloques (Gutenberg)&lt;/strong&gt;: Ha evolucionado de un simple editor de texto a un motor de diseño de datos estructurados que rivaliza con page builders dedicados.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Comprender el ecosistema crea mejores sitios web.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mantén la funcionalidad en plugins, el diseño en temas.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respeta la marca registrada&lt;/strong&gt; para lucir profesional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aprovecha la GPL&lt;/strong&gt; para ser dueño de tu stack.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elige autoalojado (.org)&lt;/strong&gt; para control empresarial.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WordPress es una herramienta que crece contigo. Puede ser un blog simple hoy y una plataforma de comercio electronico multimillonaria mañana, sin jamás migrar tu plataforma de datos. Ese es el poder del ecosistema.&lt;/p&gt;
&lt;p&gt;Necesitas un &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress profesional&lt;/a&gt; o un &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;desarrollador WooCommerce&lt;/a&gt;? &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt; para una consulta gratuita.&lt;/p&gt;</content:encoded><category>wordpress-basics</category><category>community</category><category domain="tag">themes</category><category domain="tag">plugins</category><category domain="tag">licensing</category><category domain="tag">gpl</category><enclosure url="https://wppoland.com/images/og/wordpress-community-blueprint.jpg" type="image/jpeg"/></item><item><title>100/100 en Core Web Vitals con WordPress</title><link>https://wppoland.com/es/core-web-vitals-100-score-case-study-2026/</link><guid isPermaLink="true">https://wppoland.com/es/core-web-vitals-100-score-case-study-2026/</guid><description>Como llevamos un sitio WooCommerce lento de una puntuacion de 45 a 100. Un análisis técnico profundo sobre Speculation Rules, AVIF y Critical CSS en 2026.</description><pubDate>Thu, 08 Jan 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Todos dicen que optimizan para velocidad. Pocos pueden demostrarlo.
Esta semana, completamos una revision de rendimiento completa para un clientes en el competitivo sector de comercio electronico de “Decoracion del Hogar”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El punto de partida:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Puntuacion móvil&lt;/strong&gt;: 42/100&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LCP&lt;/strong&gt;: 4,8s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INP&lt;/strong&gt;: 450ms (Deficiente)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLS&lt;/strong&gt;: 0,25 (Cambios de diseño por todas partes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;El resultado (despues de 4 semanas):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Puntuacion móvil&lt;/strong&gt;: 100/100&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LCP&lt;/strong&gt;: 1,2s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INP&lt;/strong&gt;: 48ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLS&lt;/strong&gt;: 0,00&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto no fue magia. Fue ingenieria. A continuacion explicamos exactamente como lo logramos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-corrigiendo-el-lcp-largest-contentful-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-corrigiendo-el-lcp-largest-contentful-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Corrigiendo el LCP (Largest Contentful Paint)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;El villano&lt;/strong&gt;: El Slider del hero.
El clientes utilizaba un pesado Revolution Slider. Cargaba 4MB de JavaScript antes de mostrar la primera imagen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Eliminar el Slider&lt;/strong&gt;: Reemplazamos el slider con un diseño estatico basado en CSS Grid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fetch Priority&lt;/strong&gt;: Anadimos &lt;code&gt;&amp;#x3C;img fetchpriority=&quot;high&quot;&gt;&lt;/code&gt; a la imagen principal del hero. Esto le indica al navegador “Descarga esto ANTES que el logotipo y el menú.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formato AVIF&lt;/strong&gt;: Convertimos todos los PNG a AVIF. La imagen del encabezado de 800KB se convirtio en 45KB.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: El LCP bajo de 4,8s a 1,9s de forma instantanea.&lt;/p&gt;
&lt;p&gt;La optimización del LCP es frecuentemente el cambio que produce el mayor impacto visible en la puntuacion de rendimiento. La razon es simple: el LCP mide el tiempo que tarda en renderizarse el elemento más grande visible en la ventana del navegador. En la mayoria de los sitios de comercio electronico, ese elemento es una imagen del hero. Si esa imagen depende de JavaScript para cargarse (como ocurre con los sliders), estamos anadiendo una cadena de dependencias que multiplica el tiempo de carga exponencialmente.&lt;/p&gt;
&lt;p&gt;El cambio a un diseño estatico con CSS Grid no solo elimino la dependencia de JavaScript, sino que también proporciono una experiencia visual más limpia y profesional. Los sliders rotativos, que fueron populares durante años, tienen tasas de interacción inferiores al 1% según estudios de usabilidad recientes. Eliminarlos mejora tanto el rendimiento como la conversión.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-resolviendo-el-cls-cumulative-layout-shift&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-resolviendo-el-cls-cumulative-layout-shift&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Resolviendo el CLS (Cumulative Layout Shift)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;El villano&lt;/strong&gt;: Fuentes personalizadas y carga diferida (Lazy Loading).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fuentes&lt;/strong&gt;: El texto aparecia, luego la fuente personalizada se cargaba, desplazando el diseño 10 pixeles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imágenes&lt;/strong&gt;: Las imágenes con carga diferida aparecian y empujaban el texto hacia abajo porque carecian de atributos &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Precarga de fuentes&lt;/strong&gt;: Anadimos &lt;code&gt;&amp;#x3C;link rel=&quot;preload&quot;&gt;&lt;/code&gt; para la fuente principal y utilizamos &lt;code&gt;font-display: optional&lt;/code&gt;. Si la fuente no se carga en 100ms, el navegador mantiene la fuente del sistema para siempre (sin desplazamiento).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relación de aspecto&lt;/strong&gt;: Aplicamos &lt;code&gt;aspect-ratio: 16/9;&lt;/code&gt; en todos los contenedores de imágenes en CSS. El navegador reserva el espacio en blanco incluso antes de que la imagen se descargue.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: El CLS bajo a 0,00.&lt;/p&gt;
&lt;p&gt;El CLS es la metrica que más frustracion genera en los usuarios. Cuando un usuario esta leyendo un parrafo y de repente el contenido salta porque se cargo una imagen o un anuncio, la experiencia es profundamente negativa. Google lo sabe y por eso penaliza severamente los sitios con CLS alto.&lt;/p&gt;
&lt;p&gt;La estrategia de &lt;code&gt;font-display: optional&lt;/code&gt; es particularmente interesante porque representa un compromiso inteligente. En lugar de arriesgar un cambio de diseño visible, aceptamos que algunos usuarios veran la fuente del sistema si la fuente personalizada no se carga lo suficientemente rápido. En la práctica, con una CDN adecuada, la fuente personalizada se carga a tiempo en más del 95% de las visitas, y el 5% restante ve una experiencia perfectamente funcional sin ningun desplazamiento de diseño.&lt;/p&gt;
&lt;p&gt;Para las imágenes, la técnica de reservar espacio mediante &lt;code&gt;aspect-ratio&lt;/code&gt; es superior a las antiguas prácticas de usar &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt; en atributos HTML porque funciona de forma nativa con diseños responsivos. No importa el tamaño de la pantalla del usuario, el navegador siempre sabe exactamente cuanto espacio reservar para cada imagen.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-aplastando-el-inp-interaction-to-next-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-aplastando-el-inp-interaction-to-next-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Aplastando el INP (Interaction to Next Paint)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;El villano&lt;/strong&gt;: Scripts de terceros.
Widgets de chat, Facebook Pixel, Google Tag Manager, Hotjar. Todos competian por el hilo principal. Cuando un usuario hacia clic en “Menú”, el navegador estaba demasiado ocupado rastreando al usuario como para abrir el menú.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución: Partytown&lt;/strong&gt;.
Movimos todos los scripts de terceros a un &lt;strong&gt;Web Worker&lt;/strong&gt; utilizando Partytown.
Esto ejecuta el código pesado de seguimiento en un hilo secundario. El hilo principal (UI) permanece completamente fluido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: El INP bajo de 450ms a 48ms.&lt;/p&gt;
&lt;p&gt;El INP (Interaction to Next Paint) es la metrica que reemplazo a FID en 2024 y es significativamente más exigente. Mientras que FID solo media la primera interacción, INP mide todas las interacciones durante toda la sesion del usuario. Esto significa que no basta con optimizar la carga inicial; cada clic, cada toque, cada interacción con el teclado debe ser fluida.&lt;/p&gt;
&lt;p&gt;Partytown funciona como un intermediario inteligente. Los scripts de terceros como Google Analytics, Facebook Pixel y Hotjar siguen funcionando normalmente, pero se ejecutan en un Web Worker separado del hilo principal del navegador. El resultado es que el usuario experimenta una interfaz perfectamente responsiva mientras todos los servicios de analítica continuan recopilando datos con normalidad.&lt;/p&gt;
&lt;p&gt;La implementación de Partytown en un sitio WooCommerce tiene particularidades específicas. El boton de “Anadir al carrito” genera eventos AJAX que pueden bloquear el hilo principal si se combinan con scripts de seguimiento de conversión. Nuestra solución fue refactorizar el flujo del carrito para que la actualización visual sea inmediata (optimista) y la sincronizacion con el servidor ocurra de forma asincrona en segundo plano.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-el-arma-secreta-de-2026-la-api-de-speculation-rules&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-el-arma-secreta-de-2026-la-api-de-speculation-rules&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. El arma secreta de 2026: La API de Speculation Rules&lt;/h2&gt;
&lt;p&gt;No solo queriamos que fuera rápido. Queriamos que se sintiera instantaneo.
Implementamos la &lt;strong&gt;API de Speculation Rules&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cuando un usuario pasa el cursor sobre una tarjeta de producto, el navegador:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Precarga&lt;/strong&gt; el HTML de la página siguiente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pre-renderiza&lt;/strong&gt; la página en una pestana oculta en segundo plano.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cuando el usuario hace clic, la carga de la página es literalmente de &lt;strong&gt;0ms&lt;/strong&gt;. Ya esta ahi.&lt;/p&gt;
&lt;p&gt;La API de Speculation Rules representa un avance fundamental respecto a las técnicas anteriores de precarga. Las soluciones previas, como &lt;code&gt;&amp;#x3C;link rel=&quot;prefetch&quot;&gt;&lt;/code&gt;, solo descargaban el HTML. La API de Speculation Rules va mucho más alla: renderiza completamente la página en segundo plano, incluyendo CSS, JavaScript e imágenes criticas. El resultado es una transicion entre páginas que se siente como una aplicación nativa, no como un sitio web.&lt;/p&gt;
&lt;p&gt;Para un sitio de comercio electronico, el impacto es enorme. Los usuarios pueden navegar por el catálogo de productos sin percibir ningun tiempo de carga entre páginas. Esto reduce drasticamente la tasa de abandono y aumenta el número de productos vistos por sesion, lo que se correlaciona directamente con mayores tasas de conversión.&lt;/p&gt;
&lt;p&gt;La implementación requiere cuidado para no desperdiciar ancho de banda. No pre-renderizamos todas las páginas posibles, sino solo aquellas con alta probabilidad de ser visitadas. Esto se determina mediante heuristicas basadas en el comportamiento del cursor y patrones de navegación históricos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-optimización-del-lado-del-servidor-la-infraestructura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-optimización-del-lado-del-servidor-la-infraestructura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Optimización del lado del servidor (la infraestructura)&lt;/h2&gt;
&lt;p&gt;No se puede obtener una puntuacion de 100 con un servidor de 5 dolares.
Migramos al clientes a una arquitectura de alto rendimiento tipo &lt;strong&gt;WordPress VIP&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Redis Object Cache&lt;/strong&gt;: Las consultas a la base de datos para el “Menú” y las “Opciones” se almacenan en cache en memoria.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge Caching (Cloudflare Enterprise)&lt;/strong&gt;: El HTML de la página de inicio se sirve desde un servidor en Madrid, no desde el origen en Nueva York. El TTFB bajo de 600ms a 40ms.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La infraestructura del servidor es el fundamento sobre el cual se construyen todas las demás optimizaciones. Sin un TTFB rápido, es matemáticamente imposible alcanzar una puntuacion perfecta de LCP. El TTFB (Time to First Byte) mide cuanto tiempo tarda el servidor en comenzar a enviar la respuesta al navegador. Si ese tiempo ya consume 600ms de los 2500ms permitidos para un buen LCP, queda muy poco margen para la descarga y renderizado de imágenes.&lt;/p&gt;
&lt;p&gt;Redis Object Cache elimina la necesidad de consultar la base de datos MySQL para información que cambia con poca frecuencia. En un sitio WooCommerce tipico, cada solicitud de página puede generar entre 50 y 200 consultas a la base de datos. Con Redis, las consultas repetitivas se sirven directamente desde la memoria, reduciendo el tiempo de generación de la página en un 80% o mas.&lt;/p&gt;
&lt;p&gt;El Edge Caching lleva esto un paso más alla. En lugar de generar la página en el servidor de origen cada vez, Cloudflare almacena una copia del HTML completo en sus más de 300 puntos de presencia globales. Para los visitantes en Espana, la página se sirve desde un servidor en Madrid o Barcelona, no desde un centro de datos lejano. El resultado es un TTFB que frecuentemente baja de los 50ms.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-impacto-en-el-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-impacto-en-el-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Impacto en el negocio&lt;/h2&gt;
&lt;p&gt;Por que hicimos todo esto? No por metricas de vanidad.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tasa de rebote&lt;/strong&gt;: Disminuyo un 18%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gasto publicitario&lt;/strong&gt;: El CPC bajo un 12% (la puntuacion de calidad de Google Ads mejoro gracias a la velocidad).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ingresos&lt;/strong&gt;: El tráfico organico crecio un 40% en 2 meses mientras Google recompensaba las señales de “Experiencia de Página”.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los números hablan por si solos. La reduccion del 18% en la tasa de rebote significa que miles de visitantes adicionales permanecen en el sitio en lugar de volver a los resultados de búsqueda. Cada uno de esos visitantes retenidos es una oportunidad de conversión adicional.&lt;/p&gt;
&lt;p&gt;La mejora en el CPC de Google Ads es particularmente significativa. Google utiliza la experiencia de la página de destino como un factor en su calculo de Quality Score. Un Quality Score más alto significa que se paga menos por cada clic. Para un anunciante que invierte 50.000 euros mensuales en Google Ads, una reduccion del 12% en CPC representa un ahorro de 6.000 euros al mes, o 72.000 euros al año, simplemente por tener un sitio más rápido.&lt;/p&gt;
&lt;p&gt;El crecimiento del 40% en tráfico organico demuestra que Google recompensa activamente los sitios que ofrecen una excelente experiencia de usuario. Los Core Web Vitals no son solo metricas técnicas; son señales que Google utiliza para determinar que sitios merecen mayor visibilidad en los resultados de búsqueda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: La velocidad no es deuda técnica. Es una palanca de ingresos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esta su &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;sitio WooCommerce&lt;/a&gt; perdiendo dinero por lentitud? WPPoland optimiza para puntuaciones verdes y cuentas bancarias verdes.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>performance</category><category>case-study</category><category domain="tag">core-web-vitals</category><category domain="tag">lcp</category><category domain="tag">inp</category><category domain="tag">cls</category><category domain="tag">woocommerce-optimization</category><enclosure url="https://wppoland.com/images/og/tech-conference-audience-listening.jpg" type="image/jpeg"/></item><item><title>GEO (Optimización para Motores Generativos): Mas alla del SEO tradicional</title><link>https://wppoland.com/es/geo-generative-engine-optimization-guide/</link><guid isPermaLink="true">https://wppoland.com/es/geo-generative-engine-optimization-guide/</guid><description>Domina las estrategias GEO para que tu contenido sea citado por motores de IA como ChatGPT, Perplexity y Gemini. Aprende a optimizar para el futuro de la búsqueda.</description><pubDate>Mon, 05 Jan 2026 13:08:00 GMT</pubDate><content:encoded>&lt;p&gt;La forma en que las personas encuentran información esta cambiando fundamentalmente. En 2026, una proporcion creciente de consultas se responde directamente por motores de IA generativa - ChatGPT, Perplexity, Gemini y Claude - sin que el usuario haga clic en ningun enlace de búsqueda tradicional. Este cambio requiere un nuevo enfoque de optimización: GEO (Generative Engine Optimization).&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;qué-es-geo-en-realidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-geo-en-realidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué es GEO en realidad&lt;/h2&gt;
&lt;p&gt;Generative Engine Optimization es el trabajo de ser citado dentro de respuestas generadas por IA. Cuando alguien escribe una pregunta en ChatGPT, Perplexity, Google AI Overviews o Claude, el modelo devuelve un párrafo sintetizado y una lista corta de URLs de fuente. GEO es la práctica de estar en esa lista.&lt;/p&gt;
&lt;p&gt;La parte honesta que los blogs de proveedores omiten: GEO no es una disciplina nueva. Danny Sullivan lo dijo sin rodeos en Search Central Live Toronto 2026: el buen SEO es buen GEO. Lo que cambió fue la ponderación. Las mismas señales E-E-A-T siguen aplicándose, pero el marcado de entidades legible por máquina, la estructura Q&amp;#x26;A explícita y los triples semánticos limpios deciden ahora si un LLM elige tu página por encima de la de un competidor cuando ambas posicionan en el top 10.&lt;/p&gt;
&lt;h3 id=&quot;qué-prefiere-cada-llm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-prefiere-cada-llm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué prefiere cada LLM&lt;/h3&gt;
&lt;p&gt;Tras varios meses de pruebas manuales de prompts en los cuatro motores principales, los patrones de citación son razonablemente consistentes. Importante para hispanohablantes: hay una brecha enorme entre el español castellano y el latinoamericano, porque la mayoría de los modelos están entrenados sobre corpus dominado por contenido en español de México, Argentina y Colombia. Una consulta en es-ES sobre “tarjeta de débito” puede recibir respuesta sobre el sistema mexicano si la marca española no está bien anclada como entidad.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt; cita páginas con cobertura fuerte de entidades. Si la página enlaza el tema con sus entidades relacionadas mediante schema limpio y prosa, ChatGPT la trata como un nodo fiable. En consultas en español castellano, ChatGPT tira frecuentemente de El País, ABC y Wikipedia.es; en es-MX puede preferir Milenio o El Universal aunque la consulta sea de un usuario español.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perplexity&lt;/strong&gt; prefiere páginas con triples semánticos limpios. Las frases sujeto-predicado-objeto (“WordPress es un sistema de gestión de contenido escrito en PHP”) sobreviven mejor al pipeline de retrieval que la prosa narrativa. En es-ES, Perplexity cita con frecuencia Genbeta, Xataka y Hipertextual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude&lt;/strong&gt; se inclina hacia páginas con estructura Q&amp;#x26;A explícita. Una pregunta literal como H2 seguida de una respuesta de 2-3 frases se extrae al pie de la letra más a menudo que el mismo material escrito en párrafos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google AI Overviews&lt;/strong&gt; sigue favoreciendo páginas con FAQ schema, presumiblemente porque esos mismos datos ya alimentaban featured snippets y la lógica subyacente de retrieval se heredó.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No optimizas para uno de estos y pierdes los otros. El solapamiento es lo bastante grande para que una sola página pueda ser citada en los cuatro si la estructura es correcta.&lt;/p&gt;
&lt;h3 id=&quot;disambiguación-de-marcas-en-mercado-español&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#disambiguación-de-marcas-en-mercado-español&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Disambiguación de marcas en mercado español&lt;/h3&gt;
&lt;p&gt;Trampa específica del mercado español: marcas como Bizum (Q108039155), Redsys, Iberpay e Ibercaja necesitan &lt;code&gt;sameAs&lt;/code&gt; consistente a Wikidata y menciones explícitas en contenido es-ES para que los LLMs no hagan fallback al equivalente latinoamericano. Bizum es el ejemplo más claro: cuando un modelo duda entre “transferencia inmediata en España” y “Pix en Brasil” o “CoDi en México”, el ancla a Wikidata y un Organization schema con &lt;code&gt;address.addressCountry: ES&lt;/code&gt; empuja la balanza hacia Bizum en consultas castellanas.&lt;/p&gt;
&lt;h3 id=&quot;dónde-la-economía-de-citaciones-sí-difiere-de-los-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dónde-la-economía-de-citaciones-sí-difiere-de-los-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dónde la economía de citaciones sí difiere de los enlaces&lt;/h3&gt;
&lt;p&gt;Los backlinks transmiten equity a través del grafo de enlaces. Las citaciones transmiten autoridad a través de retrieval y grounding. Consecuencia práctica: una página puede ganar cero backlinks nuevos en un año y aun así aumentar cuota de citaciones, porque lo que cuenta es si la página es la respuesta mejor formateada en el pool de candidatos del retrieval, no cuántos dominios apuntan a ella.&lt;/p&gt;
&lt;h3 id=&quot;aepd-y-los-crawlers-de-llm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aepd-y-los-crawlers-de-llm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;AEPD y los crawlers de LLM&lt;/h3&gt;
&lt;p&gt;Particularidad española: la Agencia Española de Protección de Datos se pronunció a finales de 2025 sobre crawlers de LLM que leen contenido públicamente publicado con datos personales. La conclusión fue matizada: bloquear &lt;code&gt;robots.txt&lt;/code&gt; no es protección RGPD completa para datos ya indexados. En la práctica: documentar reglas explícitas &lt;code&gt;User-agent: GPTBot Disallow:&lt;/code&gt; donde se desee, y diseñar el schema markup para no añadir datos personales que no estén ya publicados de otro modo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;como-los-motores-de-ia-seleccionan-fuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-los-motores-de-ia-seleccionan-fuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como los motores de IA seleccionan fuentes&lt;/h2&gt;
&lt;p&gt;Para optimizar para GEO, necesitas entender como los LLMs (Large Language Models) encuentran, evaluan y citan contenido.&lt;/p&gt;
&lt;h3 id=&quot;el-proceso-de-recuperacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-proceso-de-recuperacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El proceso de recuperacion&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Crawling&lt;/strong&gt;: Bots como GPTBot, ClaudeBot y PerplexityBot rastrean tu sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chunking&lt;/strong&gt;: El contenido se divide en fragmentos de 300-800 tokens&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embedding&lt;/strong&gt;: Cada fragmento se convierte en un vector numerico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indexacion&lt;/strong&gt;: Los vectores se almacenan en una base de datos de vectores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recuperacion&lt;/strong&gt;: Ante una consulta, se buscan los fragmentos más relevantes semanticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación&lt;/strong&gt;: El LLM sintetiza una respuesta usando los fragmentos recuperados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Citacion&lt;/strong&gt;: Las fuentes más relevantes se citan en la respuesta&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;factores-que-determinan-la-citacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#factores-que-determinan-la-citacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Factores que determinan la citacion&lt;/h3&gt;
&lt;p&gt;No todos los contenidos tienen la misma probabilidad de ser citados. Los motores de IA priorizan:&lt;/p&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Factor&lt;/th&gt;&lt;th&gt;Importancia&lt;/th&gt;&lt;th&gt;Como optimizar&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Autoridad del dominio&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Muy alta&lt;/td&gt;&lt;td&gt;Construir reputacion, backlinks, menciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Estructura del contenido&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Alta&lt;/td&gt;&lt;td&gt;Encabezados claros, listas, tablas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Datos estructurados&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Alta&lt;/td&gt;&lt;td&gt;JSON-LD Schema.org completo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Precision factual&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Alta&lt;/td&gt;&lt;td&gt;Datos verificables, fuentes citadas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Frescura&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Media-Alta&lt;/td&gt;&lt;td&gt;Fechas de actualización visibles&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Unicidad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Media&lt;/td&gt;&lt;td&gt;Perspectiva original, datos propios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Rastreabilidad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Media&lt;/td&gt;&lt;td&gt;HTML limpio, robots.txt correcto&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;qué-implementar-realmente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-implementar-realmente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué implementar realmente&lt;/h2&gt;
&lt;p&gt;Sáltate los frameworks de “cuatro fases para dominar GEO”. Esto es lo que mueve la aguja, aproximadamente en orden de retorno por esfuerzo.&lt;/p&gt;
&lt;h3 id=&quot;disambiguación-de-entidades-y-alineamiento-con-knowledge-graph&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#disambiguación-de-entidades-y-alineamiento-con-knowledge-graph&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Disambiguación de entidades y alineamiento con knowledge graph&lt;/h3&gt;
&lt;p&gt;Los datos estructurados solo funcionan si la entidad detrás es inequívoca. Si tu marca comparte nombre con cualquier otra cosa, el LLM va a hedgear. WordPress.com tuvo exactamente este problema con “Calypso”, el nombre en clave de la app de admin en JavaScript que también es una figura de la mitología griega y un género musical caribeño. Las páginas tuvieron que decir explícitamente “Calypso (el cliente de WordPress.com)” y enlazar a un registro de entidad anclado en Wikidata antes de que los motores de IA dejaran de mezclar las referencias.&lt;/p&gt;
&lt;p&gt;En el mercado español el problema más típico es la divergencia castellano/latinoamericano: “tortilla”, “coche”, “ordenador” tienen entradas Wikidata distintas o equivalentes que los LLMs entrenados sobre corpus latinoamericano no resuelven correctamente. Dos pasos prácticos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Añade &lt;code&gt;sameAs&lt;/code&gt; a Wikidata en el schema Organization y en el schema Person del autor. Eso ancla la entidad bajo un identificador estable independiente del idioma. Para marcas españolas relevantes verifica el Q-number: BBVA (Q806207), Telefónica (Q170902), Inditex (Q5658) tienen cobertura consistente; entidades menores frecuentemente tienen entrada en la Wikipedia en español sin enlace claro entre es y en.&lt;/li&gt;
&lt;li&gt;Para mercados no anglófonos comprueba si la entrada Wikidata en español de tu tema apunta de hecho al mismo Q-number que la inglesa. A veces divergen, y cuando lo hacen las respuestas LLM en español citan fuentes distintas de las inglesas para la misma consulta. La divergencia es especialmente activa entre es-ES y es-419.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;datos-estructurados-que-los-llms-sí-parsean&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#datos-estructurados-que-los-llms-sí-parsean&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Datos estructurados que los LLMs sí parsean&lt;/h3&gt;
&lt;p&gt;Article, FAQPage y HowTo en JSON-LD siguen siendo el equipamiento básico. Más importante que la elección del schema: el schema tiene que coincidir con la estructura HTML visible. Schema inyectado por JavaScript de cliente que falta en el &lt;code&gt;view-source&lt;/code&gt; crudo será ignorado por el retrieval del LLM.&lt;/p&gt;
&lt;h3 id=&quot;estructura-tu-contenido-para-fragmentación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-tu-contenido-para-fragmentación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura tu contenido para fragmentación&lt;/h3&gt;
&lt;p&gt;Los LLMs procesan tu contenido en fragmentos. Si tu contenido está bien estructurado, cada fragmento será más coherente y más probable de ser citado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lo que importa de verdad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encabezados H2/H3 descriptivos que funcionan como mini-títulos&lt;/li&gt;
&lt;li&gt;Cada sección debe responder una pregunta específica&lt;/li&gt;
&lt;li&gt;Respuesta directa en las primeras 1-2 oraciones de cada sección&lt;/li&gt;
&lt;li&gt;Listas con viñetas para datos clave y comparaciones&lt;/li&gt;
&lt;li&gt;Tablas para comparaciones de productos o tecnologías&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-implementa-datos-estructurados-profundos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-implementa-datos-estructurados-profundos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Implementa datos estructurados profundos&lt;/h3&gt;
&lt;p&gt;Los datos estructurados JSON-LD son el lenguaje que los motores de IA entienden mejor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;TechArticle&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;headline&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;GEO: Guia de Optimización para Motores Generativos&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;author&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Person&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Mariusz Szatkowski&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;jobTitle&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WordPress Developer &amp;#x26; SEO Strategist&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/es/sobre-nosotros/&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;datePublished&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2026-01-05&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;dateModified&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2026-01-05&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;about&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Thing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Generative Engine Optimization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;sameAs&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://www.wikidata.org/wiki/Q1195203&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tipos de schema particularmente utiles para GEO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Article/TechArticle&lt;/strong&gt;: Para contenido editorial y técnico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FAQPage&lt;/strong&gt;: Para preguntas y respuestas (altamente citado por LLMs)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HowTo&lt;/strong&gt;: Para guías paso a paso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product&lt;/strong&gt;: Para información de productos con precios y especificaciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organization&lt;/strong&gt;: Para datos de la empresa verificables&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-crea-hechos-canonicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-crea-hechos-canonicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Crea “hechos canonicos”&lt;/h3&gt;
&lt;p&gt;Los LLMs buscan declaraciones claras y verificables. Crea secciones que contengan “hechos canonicos” - verdades no negociables sobre tu tema:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de sección de hechos canonicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress impulsa el 43% de todos los sitios web en internet (2026)&lt;/li&gt;
&lt;li&gt;Astro 5 envia 0 KB de JavaScript por defecto al navegador&lt;/li&gt;
&lt;li&gt;WCAG 2.1 AA requiere un ratio de contraste minimo de 4.5:1 para texto normal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos datos son exactamente lo que los LLMs buscan cuando necesitan incluir datos específicos en sus respuestas.&lt;/p&gt;
&lt;h3 id=&quot;4-construye-autoridad-de-entidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-construye-autoridad-de-entidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Construye autoridad de entidad&lt;/h3&gt;
&lt;p&gt;Los motores de IA confian más en fuentes que estan claramente asociadas con entidades conocidas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enlaza a Wikidata&lt;/strong&gt; y Wikipedia cuando sea relevante&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa identificadores estables&lt;/strong&gt; (&lt;code&gt;@id&lt;/code&gt;, &lt;code&gt;sameAs&lt;/code&gt;) en tu schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pública consistentemente&lt;/strong&gt; sobre tus temas de expertise&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cita fuentes autorizadas&lt;/strong&gt; para respaldar tus afirmaciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantiene información de autor&lt;/strong&gt; completa y verificable&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;5-optimiza-la-rastreabilidad-para-bots-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-optimiza-la-rastreabilidad-para-bots-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Optimiza la rastreabilidad para bots de IA&lt;/h3&gt;
&lt;p&gt;Asegurate de que los bots de IA puedan acceder a tu contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# robots.txt optimizado para GEO&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: GPTBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: ClaudeBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: PerplexityBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: Google-Extended&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Asegurate también de que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tu sitio usa renderizado del lado del servidor (SSR) o generación estatica&lt;/li&gt;
&lt;li&gt;No hay contenido crítico oculto detras de JavaScript del lado del clientes&lt;/li&gt;
&lt;li&gt;Los tiempos de carga son rápidos (los bots tienen timeouts)&lt;/li&gt;
&lt;li&gt;El sitemap XML esta actualizado e incluye fechas de modificacion&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;geo-para-diferentes-tipos-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#geo-para-diferentes-tipos-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GEO para diferentes tipos de contenido&lt;/h2&gt;
&lt;h3 id=&quot;artículos-informativos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#artículos-informativos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Artículos informativos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Responde la pregunta principal en los primeros 2 parrafos&lt;/li&gt;
&lt;li&gt;Usa tabla de contenidos con enlaces ancla&lt;/li&gt;
&lt;li&gt;Incluye sección de FAQ con schema FAQPage&lt;/li&gt;
&lt;li&gt;Cita fuentes primarias con enlaces&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;páginas-de-productoservicio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#páginas-de-productoservicio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Páginas de producto/servicio&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Incluye especificaciones claras en formato de tabla&lt;/li&gt;
&lt;li&gt;Usa schema Product con precios y disponibilidad&lt;/li&gt;
&lt;li&gt;Responde preguntas comunes de pre-compra&lt;/li&gt;
&lt;li&gt;Incluye datos de comparación con alternativas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;guias-técnicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guias-técnicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guias técnicas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Estructura paso a paso con schema HowTo&lt;/li&gt;
&lt;li&gt;Bloques de código con comentarios explicativos&lt;/li&gt;
&lt;li&gt;Requisitos previos claramente enumerados&lt;/li&gt;
&lt;li&gt;Tiempos estimados y niveles de dificultad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;contenido-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido local&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Schema LocalBusiness completo&lt;/li&gt;
&lt;li&gt;Datos NAP verificables&lt;/li&gt;
&lt;li&gt;Contenido específico de la ubicacion&lt;/li&gt;
&lt;li&gt;Resenas y testimonios locales&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;si-esto-está-funcionando-cómo-medir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#si-esto-está-funcionando-cómo-medir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Si esto está funcionando: cómo medir&lt;/h2&gt;
&lt;p&gt;La respuesta honesta es que la medición de GEO sigue siendo tosca. No existe Search Console para ChatGPT. Lo que los profesionales realmente usan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Otterly.ai, Profound y Brandwatch GenAI&lt;/strong&gt; para tracking automatizado de menciones de marca en ChatGPT, Perplexity, Gemini y Claude. Programan batches de prompts y registran cuándo aparece tu dominio en respuestas o citaciones. Los precios varían y cambian con frecuencia, así que revisa los planes actuales antes de firmar. Ninguna herramienta tiene cobertura excelente de prompts en castellano todavía; Brandwatch GenAI es la menos floja.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas manuales de prompts&lt;/strong&gt; en los cuatro motores para las veinte consultas comerciales más importantes, mensualmente. Una hoja con consulta, motor, fecha, dominios citados, tu posición. Poco glamoroso e insustituible; las herramientas automáticas pierden matices como qué fragmento exacto fue citado. Importante: prueba la misma consulta en es-ES y es-MX para detectar cuándo el modelo hace fallback al corpus latinoamericano.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de logs del servidor&lt;/strong&gt; para hits de los crawlers &lt;code&gt;GPTBot&lt;/code&gt;, &lt;code&gt;PerplexityBot&lt;/code&gt;, &lt;code&gt;ClaudeBot&lt;/code&gt;, &lt;code&gt;Google-Extended&lt;/code&gt;. La frecuencia y profundidad del crawl correlaciona con la frecuencia con la que apareces en respuestas, aunque imperfectamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico de referencia&lt;/strong&gt; desde &lt;code&gt;chat.openai.com&lt;/code&gt;, &lt;code&gt;perplexity.ai&lt;/code&gt; y &lt;code&gt;gemini.google.com&lt;/code&gt; en tu analítica. El volumen absoluto es pequeño pero la calidad de intención es alta: estos visitantes ya vieron tu snippet y aun así hicieron clic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-framework-information-gain&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-framework-information-gain&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El framework Information Gain&lt;/h3&gt;
&lt;p&gt;Para diagnóstico más profundo de por qué una página específica gana o no gana citaciones, el modelo de scoring de cuatro componentes (unicidad de la afirmación, triples semánticos, términos TF-IDF, ventaja de formato) tratado en detalle en la &lt;a href=&quot;/es/servicios/geo-llmo/&quot;&gt;página de servicio GEO/LLMO&lt;/a&gt; es la herramienta diagnóstica más útil que hemos encontrado. Te dice si la página merece ser citada; las herramientas anteriores te dicen si lo está siendo de hecho.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;trampas-prácticas-con-las-que-tropezamos-una-y-otra-vez&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trampas-prácticas-con-las-que-tropezamos-una-y-otra-vez&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trampas prácticas con las que tropezamos una y otra vez&lt;/h2&gt;
&lt;p&gt;Estas son las cosas que se ven bien sobre el papel y fallan silenciosamente en producción.&lt;/p&gt;
&lt;h3 id=&quot;el-faq-schema-tiene-que-coincidir-con-contenido-visible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-faq-schema-tiene-que-coincidir-con-contenido-visible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El FAQ schema tiene que coincidir con contenido visible&lt;/h3&gt;
&lt;p&gt;Google es explícita sobre esto desde 2023: el FAQ schema que describe contenido oculto detrás de un toggle JS, un acordeón con lazy-load tras clic, o cualquier interacción de cliente que el crawler no ejecute, será ignorado en el mejor caso y tratado como spam en el peor. La misma regla aplica al retrieval del LLM. Si el texto de la respuesta no está en el HTML inicial, no está en el pool de candidatos.&lt;/p&gt;
&lt;p&gt;El arreglo más barato: renderizar el contenido de FAQ como HTML semántico simple (&lt;code&gt;&amp;#x3C;details&gt;&lt;/code&gt;/&lt;code&gt;&amp;#x3C;summary&gt;&lt;/code&gt; vale, &lt;code&gt;&amp;#x3C;h3&gt;&lt;/code&gt; + &lt;code&gt;&amp;#x3C;p&gt;&lt;/code&gt; vale), y poner la interacción encima. Si no puedes leer el texto de la respuesta haciendo view-source de una petición fresca, el schema es decorativo.&lt;/p&gt;
&lt;h3 id=&quot;la-entidad-del-autor-pesa-más-que-la-bio-del-autor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-entidad-del-autor-pesa-más-que-la-bio-del-autor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La entidad del autor pesa más que la bio del autor&lt;/h3&gt;
&lt;p&gt;El schema Person del byline necesita enlaces &lt;code&gt;sameAs&lt;/code&gt; a al menos una identidad externa (LinkedIn, GitHub, ORCID, Wikidata). Un nodo Person solo con &lt;code&gt;name&lt;/code&gt; y &lt;code&gt;jobTitle&lt;/code&gt; se trata como no verificado. Añadir un &lt;code&gt;sameAs&lt;/code&gt; a un perfil de LinkedIn activo desde hace años mueve la tasa de citación de forma medible particularmente en Claude, que parece ponderar la identidad del autor de manera notable.&lt;/p&gt;
&lt;h3 id=&quot;frescura-es-integridad-de-datemodified-no-frecuencia-de-edición&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#frescura-es-integridad-de-datemodified-no-frecuencia-de-edición&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Frescura es integridad de &lt;code&gt;dateModified&lt;/code&gt;, no frecuencia de edición&lt;/h3&gt;
&lt;p&gt;Actualizar &lt;code&gt;dateModified&lt;/code&gt; sin cambiar realmente el contenido es un truco clásico de SEO técnico que los LLMs ven a través más rápido que Google. Perplexity en particular cruza afirmaciones contra snapshots archivados; si la fecha se movió pero las afirmaciones no, la página se degrada. Actualiza la fecha cuando actualices la sustancia, y añade una línea visible “Última revisión” que coincida con el campo schema.&lt;/p&gt;
&lt;h3 id=&quot;encuadre-honesto-sobre-lo-que-geo-no-es&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encuadre-honesto-sobre-lo-que-geo-no-es&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encuadre honesto sobre lo que GEO no es&lt;/h3&gt;
&lt;p&gt;GEO no es un canal separado que reemplace al SEO. Es la misma disciplina de SEO técnico con dos restricciones añadidas: marcado de entidades legible por máquina y contenido estructurado de manera que bloques de 2-3 frases puedan extraerse como snippets listos para citar. Los sitios con autoridad temática fuerte, schema limpio y E-E-A-T decente ya estaban ganando citaciones de IA antes de que “GEO” fuera un pitch comercial. El trabajo no ha cambiado; la checklist de auditoría sí.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cierre-práctico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cierre-práctico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cierre práctico&lt;/h2&gt;
&lt;p&gt;GEO no es un canal separado que reemplaza el SEO. Son dos restricciones añadidas a una disciplina que ya conocías: marcado de entidades legible por máquina y contenido estructurado para que bloques de 2-3 frases puedan extraerse como snippets citables. En el mercado hispanohablante hay dos retos extra que los blogs anglosajones no cubren: el desbalance de corpus es-ES vs es-419 que hace que los LLMs hagan fallback al corpus latinoamericano cuando la marca española no está bien anclada como entidad, y el escrutinio de la AEPD sobre crawlers de LLM que obliga a documentar &lt;code&gt;robots.txt&lt;/code&gt; con cuidado.&lt;/p&gt;
&lt;p&gt;Si vas a invertir tiempo limitado, el orden razonable es: anclar entidades a Wikidata con &lt;code&gt;sameAs&lt;/code&gt;, asegurar que el FAQ schema coincide con HTML visible, añadir &lt;code&gt;sameAs&lt;/code&gt; externo al schema Person del autor, y solo entonces preocuparse por las herramientas de tracking automatizado.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; para llevar tu estrategia de visibilidad al siguiente nivel.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">geo-(generative-engine-optimization)</category><category domain="tag">guide</category><category domain="tag">2026</category><category domain="tag">ai-search</category><category domain="tag">llm-optimization</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Green Web y sostenibilidad digital: Preparacion para CSRD</title><link>https://wppoland.com/es/green-web-digital-sustainability-csrd/</link><guid isPermaLink="true">https://wppoland.com/es/green-web-digital-sustainability-csrd/</guid><description>Comprende los requisitos de la directiva CSRD de la UE y como optimizar WordPress para la sostenibilidad digital y una baja huella de carbono.</description><pubDate>Sun, 04 Jan 2026 15:50:00 GMT</pubDate><content:encoded>&lt;p&gt;La interseccion de la responsabilidad ambiental y la presencia digital se ha convertido en una preocupacion crítica para organizaciónes de todo el mundo. A medida que la Directiva de Informes de Sostenibilidad Corporativa (CSRD) de la Union Europea entra en pleno vigor en 2026, las empresas ahora deben contabilizar su huella de carbono digital con el mismo rigor que sus operaciones fisicas. Esta guía completa explora como los sitios web WordPress pueden optimizarse para la sostenibilidad cumpliendo con los requisitos regulatorios emergentes.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;introduccion-el-imperativo-de-la-sostenibilidad-digital-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-el-imperativo-de-la-sostenibilidad-digital-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: El imperativo de la sostenibilidad digital en 2026&lt;/h2&gt;
&lt;p&gt;El impacto ambiental de internet es asombroso pero a menudo ignorado. Los centros de datos consumen aproximadamente el 1% de la electricidad global - más que muchos paises - y esta cifra continua aumentando a medida que la transformación digital se acelera. Los sitios web, aunque aparentemente intangibles, contribuyen significativamente a esta huella a través del procesamiento del servidor, la transmision de datos y el consumo de energia de los dispositivos del usuario final.&lt;/p&gt;
&lt;p&gt;La CSRD representa un cambio de paradigma en la responsabilidad corporativa, requiriendo divulgaciones detalladas de sostenibilidad de más de 50.000 empresas que operan dentro de la UE. A diferencia de marcos voluntarios anteriores, la CSRD exige informes completos sobre el impacto ambiental, incluyendo las emisiones de Alcance 3 que abarcan cadenas de suministro digitales. Para muchas organizaciónes, su infraestructura web ahora cae bajo requisitos de informes obligatorios.&lt;/p&gt;
&lt;p&gt;WordPress impulsa más del 43% de la web, haciendo que su optimización para la sostenibilidad sea un imperativo colectivo. Cada milisegundo de tiempo de carga, cada consulta innecesaria a la base de datos y cada imagen sobredimensionada contribuye a las emisiones de carbono. Al implementar prácticas de web verde, los propietarios de sitios WordPress no solo reducen su impacto ambiental sino que también mejoran el rendimiento, la experiencia del usuario y, cada vez mas, el cumplimiento regulatorio.&lt;/p&gt;
&lt;p&gt;El caso de negocio se extiende más alla del cumplimiento. Los estudios indican que el 73% de los consumidores prefieren marcas sostenibles, mientras que los motores de búsqueda cada vez más consideran la velocidad de página y la eficiencia en las clasificaciónes. La sostenibilidad digital emerge así como una ventaja estrategica, alineando la responsabilidad ambiental con el éxito comercial.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;entendiendo-la-huella-de-carbono-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-la-huella-de-carbono-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo la huella de carbono digital&lt;/h2&gt;
&lt;p&gt;Antes de implementar estrategias de optimización, comprender como los sitios web generan emisiones de carbono permite intervenciones dirigidas y efectivas.&lt;/p&gt;
&lt;h3 id=&quot;los-tres-pilares-de-las-emisiones-digitales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-tres-pilares-de-las-emisiones-digitales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los tres pilares de las emisiones digitales&lt;/h3&gt;
&lt;p&gt;Los expertos en sostenibilidad digital categorizan las emisiones de sitios web en tres areas principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Operaciones del centro de datos&lt;/strong&gt;: El procesamiento del servidor, los sistemas de refrigeracion y la infraestructura de las instalaciones representan el costo de carbono fundamental del hosting. Los centros de datos alimentados con energia renovable pueden reducir este impacto en un 80-95%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transmision de datos&lt;/strong&gt;: Cada byte transferido entre servidor y usuario consume energia a través de la infraestructura de red, incluyendo cables submarinos, routers y torres de celular. La transferencia eficiente de datos minimiza el costo ambiental de esta via.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dispositivos del usuario final&lt;/strong&gt;: La energia consumida por los dispositivos de los visitantes al cargar e interactuar con sitios web contribuye significativamente a las emisiones generales. El código optimizado reduce las demandas de CPU y GPU, extendiendo la vida de la bateria y reduciendo el consumo de energia.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;midiendo-el-impacto-de-carbono-del-sitio-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-el-impacto-de-carbono-del-sitio-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo el impacto de carbono del sitio web&lt;/h3&gt;
&lt;p&gt;Varias herramientas permiten cuantificar la huella de carbono del sitio web:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Herramienta&lt;/th&gt;&lt;th&gt;Metodología&lt;/th&gt;&lt;th&gt;Mejor para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Website Carbon Calculator&lt;/td&gt;&lt;td&gt;Peso de página x intensidad energetica x carbono de red&lt;/td&gt;&lt;td&gt;Evaluaciones rápidas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ecograder&lt;/td&gt;&lt;td&gt;Puntuacion integral de sostenibilidad&lt;/td&gt;&lt;td&gt;Auditorias detalladas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cloud Carbon Footprint&lt;/td&gt;&lt;td&gt;Análisis de infraestructura cloud&lt;/td&gt;&lt;td&gt;Hosting empresarial&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GreenFrame&lt;/td&gt;&lt;td&gt;Monitoreo de usuarios reales&lt;/td&gt;&lt;td&gt;Optimización continua&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La metrica estándar, gramos de CO2 por visita de página, permite comparación y benchmarking. La página web promedio genera aproximadamente 0.5g de CO2 por vista, mientras que los sitios sostenibles optimizados logran 0.1g o menos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cumplimiento-csrd-lo-que-las-organizaciónes-necesitan-saber&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cumplimiento-csrd-lo-que-las-organizaciónes-necesitan-saber&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cumplimiento CSRD: Lo que las organizaciónes necesitan saber&lt;/h2&gt;
&lt;h3 id=&quot;alcance-y-cronograma-de-csrd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alcance-y-cronograma-de-csrd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alcance y cronograma de CSRD&lt;/h3&gt;
&lt;p&gt;La directiva aplica a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todas las grandes empresas de la UE (250+ empleados, 40M+ EUR de facturacion, o 20M+ EUR de activos)&lt;/li&gt;
&lt;li&gt;PYMEs cotizadas (con implementación gradual)&lt;/li&gt;
&lt;li&gt;Empresas no comunitarias con operaciones significativas en la UE (150M+ EUR de facturacion)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;aspectos-digitales-de-los-informes-csrd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aspectos-digitales-de-los-informes-csrd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aspectos digitales de los informes CSRD&lt;/h3&gt;
&lt;p&gt;Aunque la CSRD no exige explicitamente informes de carbono de sitios web, varios requisitos de divulgacion implican directamente la infraestructura digital:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;E1 Cambio climatico&lt;/strong&gt;: Las metricas de consumo de energia deben incluir el uso de centros de datos y computacion en la nube&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E5 Uso de recursos&lt;/strong&gt;: Los residuos digitales y la gestión del ciclo de vida del hardware caen bajo la circularidad de recursos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S4 Consumidores&lt;/strong&gt;: Los requisitos de accesibilidad e inclusion digital afectan las decisiones de diseño web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;G1 Conducta empresarial&lt;/strong&gt;: La debida diligencia de la cadena de suministro se extiende a los proveedores de tecnología y hosting&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;hosting-verde-la-base-del-wordpress-sostenible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hosting-verde-la-base-del-wordpress-sostenible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hosting verde: La base del WordPress sostenible&lt;/h2&gt;
&lt;p&gt;La seleccion del hosting representa la decision de mayor impacto para la sostenibilidad del sitio web.&lt;/p&gt;
&lt;h3 id=&quot;evaluación-de-proveedores-de-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evaluación-de-proveedores-de-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evaluación de proveedores de hosting&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Certificacion de energia renovable:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;100% de coincidencia de energia renovable o acuerdos directos de compra de energia&lt;/li&gt;
&lt;li&gt;Certificaciones de terceros (Green-e, RECs, o equivalente)&lt;/li&gt;
&lt;li&gt;Transparencia en la fuente de energia e informes de carbono&lt;/li&gt;
&lt;li&gt;Objetivos basados en la ciencia para la reduccion de emisiones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Eficiencia del centro de datos:&lt;/strong&gt;&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Calificación PUE&lt;/th&gt;&lt;th&gt;Nivel de eficiencia&lt;/th&gt;&lt;th&gt;Impacto ambiental&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1.0-1.2&lt;/td&gt;&lt;td&gt;Excelente&lt;/td&gt;&lt;td&gt;Desperdicio minimo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1.2-1.4&lt;/td&gt;&lt;td&gt;Bueno&lt;/td&gt;&lt;td&gt;Eficiencia moderada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1.4-1.6&lt;/td&gt;&lt;td&gt;Promedio&lt;/td&gt;&lt;td&gt;Desperdicio significativo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1.6+&lt;/td&gt;&lt;td&gt;Pobre&lt;/td&gt;&lt;td&gt;Altas emisiones&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;proveedores-de-hosting-verde-recomendados-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proveedores-de-hosting-verde-recomendados-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proveedores de hosting verde recomendados para WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Krystal Hosting&lt;/strong&gt;: Con sede en el Reino Unido, 100% energia renovable, excelente rendimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GreenGeeks&lt;/strong&gt;: 300% de coincidencia de energia renovable, infraestructura optimizada para WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A2 Hosting&lt;/strong&gt;: Operaciones carbono neutral, servidores Turbo para eficiencia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;: El cache en el edge reduce la carga del servidor de origen y las distancias de transmision&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;optimización-de-wordpress-para-sostenibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-wordpress-para-sostenibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de WordPress para sostenibilidad&lt;/h2&gt;
&lt;h3 id=&quot;eficiencia-de-temas-y-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eficiencia-de-temas-y-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eficiencia de temas y plugins&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Seleccion de temas ligeros:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los &lt;strong&gt;temas de bloques&lt;/strong&gt; (FSE) tipicamente ofrecen mejor rendimiento que los page builders legacy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS/JS minimo&lt;/strong&gt; reduce la sobrecarga de procesamiento y transmision&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consultas de base de datos eficientes&lt;/strong&gt; previenen carga innecesaria del servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de optimización de plugins:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cada plugin activo aumenta el consumo de recursos. Audita regularmente la necesidad de cada plugin y elimina los que no sean esenciales.&lt;/p&gt;
&lt;h3 id=&quot;optimización-de-medios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-medios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de medios&lt;/h3&gt;
&lt;p&gt;Las imágenes y el video tipicamente constituyen el 60-80% del peso de la página:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Seleccion de formato&lt;/strong&gt;: Usa WebP/AVIF para fotografias, SVG para graficos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imágenes responsivas&lt;/strong&gt;: Implementa &lt;code&gt;srcset&lt;/code&gt; para dimensionamiento apropiado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carga lazy&lt;/strong&gt;: Difiere la carga de imágenes fuera de pantalla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compresion&lt;/strong&gt;: Equilibra calidad con tamaño de archivo&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;cache-y-entrega-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cache-y-entrega-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cache y entrega de contenido&lt;/h3&gt;
&lt;p&gt;El cache efectivo reduce dramaticamente la carga del servidor y el consumo de energia:&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Capa&lt;/th&gt;&lt;th&gt;Tecnologia&lt;/th&gt;&lt;th&gt;Impacto&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Navegador&lt;/td&gt;&lt;td&gt;Headers de cache&lt;/td&gt;&lt;td&gt;Elimina descargas repetidas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CDN&lt;/td&gt;&lt;td&gt;Cache en el edge&lt;/td&gt;&lt;td&gt;Reduce distancia de transmision&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Página&lt;/td&gt;&lt;td&gt;HTML estatico&lt;/td&gt;&lt;td&gt;Omite procesamiento PHP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Objeto&lt;/td&gt;&lt;td&gt;Redis/Memcached&lt;/td&gt;&lt;td&gt;Reduce consultas de base de datos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Opcode&lt;/td&gt;&lt;td&gt;OPcache&lt;/td&gt;&lt;td&gt;Acelera ejecucion PHP&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;optimización-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de base de datos&lt;/h3&gt;
&lt;p&gt;Las operaciones de base de datos eficientes reducen los requisitos de procesamiento del servidor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limpia revisiones de posts (limita a 3-5)&lt;/li&gt;
&lt;li&gt;Elimina comentarios spam y transients&lt;/li&gt;
&lt;li&gt;Optimiza tablas mensualmente&lt;/li&gt;
&lt;li&gt;Archiva datos antiguos&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;técnicas-avanzadas-de-sostenibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#técnicas-avanzadas-de-sostenibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Técnicas avanzadas de sostenibilidad&lt;/h2&gt;
&lt;h3 id=&quot;desarrollo-consciente-del-carbono&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desarrollo-consciente-del-carbono&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desarrollo consciente del carbono&lt;/h3&gt;
&lt;p&gt;Servicios como Electricity Maps y WattTime proporcionan datos de intensidad de carbono de la red electrica en tiempo real. Las aplicaciones pueden programar procesamiento no urgente durante periodos de bajo carbono.&lt;/p&gt;
&lt;h3 id=&quot;generación-de-sitios-estaticos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generación-de-sitios-estaticos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Generación de sitios estaticos&lt;/h3&gt;
&lt;p&gt;Para contenido que no requiere procesamiento dinámico, la generación estatica elimina el procesamiento del lado del servidor por completo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress headless&lt;/strong&gt;: Usa WordPress como CMS, sirve frontend estatico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generadores de sitios estaticos&lt;/strong&gt;: Astro, Hugo o Jekyll para contenido apropiado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Renderizado en el edge&lt;/strong&gt;: Cloudflare Workers, Vercel Edge Functions&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;principios-de-diseño-sostenible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#principios-de-diseño-sostenible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Principios de diseño sostenible&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Implementación de modo oscuro:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Las interfaces oscuras reducen el consumo de energia en pantallas OLED hasta en un 60%.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eficiencia del contenido:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escribe de forma concisa para reducir el peso de la página&lt;/li&gt;
&lt;li&gt;Usa revelacion progresiva para contenido extenso&lt;/li&gt;
&lt;li&gt;Implementa páginación para archivos&lt;/li&gt;
&lt;li&gt;Considera alternativas de texto a los medios&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;monitoreo-e-informes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-e-informes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo e informes&lt;/h2&gt;
&lt;h3 id=&quot;indicadores-clave-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-clave-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores clave de rendimiento&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Objetivo&lt;/th&gt;&lt;th&gt;Herramienta de medicion&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Peso de página&lt;/td&gt;&lt;td&gt;&amp;#x3C; 1MB&lt;/td&gt;&lt;td&gt;Lighthouse, WebPageTest&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Carbono por visita&lt;/td&gt;&lt;td&gt;&amp;#x3C; 0.2g CO2&lt;/td&gt;&lt;td&gt;Website Carbon Calculator&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Time to Interactive&lt;/td&gt;&lt;td&gt;&amp;#x3C; 3s&lt;/td&gt;&lt;td&gt;Chrome DevTools&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Consumo de energia&lt;/td&gt;&lt;td&gt;&amp;#x3C; 10mWh&lt;/td&gt;&lt;td&gt;GreenFrame&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hosting renovable&lt;/td&gt;&lt;td&gt;100%&lt;/td&gt;&lt;td&gt;Informes del proveedor&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;pruebas-automatizadas-de-sostenibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-automatizadas-de-sostenibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas automatizadas de sostenibilidad&lt;/h3&gt;
&lt;p&gt;Integra pruebas de carbono en pipelines CI/CD para monitoreo continuo y asegurar que cada despliegue mantiene o mejora la huella de carbono del sitio.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La sostenibilidad digital ya no es una opción sino una necesidad para las organizaciónes que operan en la Union Europea. La CSRD establece un marco claro de responsabilidad que incluye la infraestructura digital. Al optimizar tu sitio WordPress para la sostenibilidad, no solo reduces tu impacto ambiental sino que también mejoras el rendimiento, la experiencia del usuario y tu posicionamiento competitivo.&lt;/p&gt;
&lt;p&gt;Comienza con una auditoria de tu huella de carbono actual, evalua tu hosting, optimiza tus medios y establece procesos de monitoreo continuo. Cada mejora cuenta, y los beneficios se acumulan tanto para el planeta como para tu negocio.&lt;/p&gt;
&lt;p&gt;Para asistencia profesional en optimización sostenible, &lt;a href=&quot;/es/contacto/&quot;&gt;contacta a WPPoland&lt;/a&gt; para discutir tu estrategia de sostenibilidad digital.&lt;/p&gt;</content:encoded><category>wordpress</category><category>technology</category><category domain="tag">green-web-&amp;-digital-sustainability</category><category domain="tag">guide</category><category domain="tag">2026</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Guia de URL de inicio de sesion y recuperacion de acceso en WordPress 2026</title><link>https://wppoland.com/es/wordpress-login-access-recovery-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-login-access-recovery-guide-2026/</guid><description>Bloqueado fuera de WordPress? No encuentra su URL de administración? Esta guía definitiva cubre cada método para recuperar acceso, desde encontrar su página de login hasta restablecer contrasenas via base de datos y FTP.</description><pubDate>Sun, 04 Jan 2026 12:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-el-panico-del-bloqueado-fuera&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-el-panico-del-bloqueado-fuera&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: El panico del “Bloqueado fuera”&lt;/h2&gt;
&lt;p&gt;Estar bloqueado fuera de su propio sitio WordPress es un rito de iniciacion para cada desarrollador, administrador de sitio y propietario de negocio. La sensacion es visceral: navega a su página de login, y ha desaparecido. O escribe su contrasena, y la pantalla simplemente tiembla. O peor, le recibe una fria pantalla blanca de la muerte.&lt;/p&gt;
&lt;p&gt;En 2026, el ecosistema de WordPress ha evolucionado. La seguridad es más estricta, el cache es más agresivo, y la complejidad de la pila promedio ha aumentado. Los problemas de acceso rara vez son solo “Olvide mi contrasena”. A menudo son colisiones complejas entre plugins de seguridad, cache del lado del servidor, corrupcion de base de datos y versiones de PHP obsoletas.&lt;/p&gt;
&lt;p&gt;Esta guía no es una lista de consejos básicos. Es un manual técnico exhaustivo para recuperar el acceso a su propiedad. Eludiremos la puerta principal, forzaremos la cerradura, y si es necesario, quitaremos la puerta de sus bisagras usando acceso a la base de datos y herramientas de linea de comandos.&lt;/p&gt;
&lt;p&gt;Respuesta corta: comience con &lt;code&gt;wp-login.php&lt;/code&gt; y &lt;code&gt;wp-admin/&lt;/code&gt;. Si esos fallan, busque un slug de login oculto, luego pase a restablecimiento de contrasena y métodos de recuperacion de base de datos como phpMyAdmin, WP-CLI o desactivacion temporal de plugins via FTP.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-1-la-anatomia-de-un-login-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-la-anatomia-de-un-login-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: La anatomia de un login de WordPress&lt;/h2&gt;
&lt;p&gt;Antes de soluciónar problemas, debemos entender como WordPress maneja la autenticación. Cuando visita &lt;code&gt;wp-login.php&lt;/code&gt;, WordPress dispara una secuencia de eventos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Verificación de cookies&lt;/strong&gt;: Comprueba su navegador en busca de cookies de autenticación validas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación de nonce&lt;/strong&gt;: Asegura que la solicitud de login es genuina y no un ataque CSRF.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consulta a la base de datos&lt;/strong&gt;: Consulta la tabla &lt;code&gt;wp_users&lt;/code&gt; para el nombre de usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hashing de contrasena&lt;/strong&gt;: Agrega sal y hash a su entrada y la compara con la cadena &lt;code&gt;user_pass&lt;/code&gt; en la base de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación de capacidades&lt;/strong&gt;: Consulta &lt;code&gt;wp_usermeta&lt;/code&gt; para verificar que tiene el rol de &lt;code&gt;administrator&lt;/code&gt; (o equivalente).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redireccion&lt;/strong&gt;: Genera una nueva cookie de sesion y lo envia a &lt;code&gt;wp-admin/&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Un error en CUALQUIERA de estas etapas resulta en un bloqueo.&lt;/p&gt;
&lt;h3 id=&quot;encontrando-la-puerta-invisible-donde-esta-mi-url-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encontrando-la-puerta-invisible-donde-esta-mi-url-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encontrando la puerta invisible: Donde esta mi URL de login?&lt;/h3&gt;
&lt;p&gt;Por defecto, WordPress escucha en rutas estándar específicas. Debe conocerlas de memoria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;su-sitio.com/wp-login.php&lt;/code&gt; (El archivo fisico que maneja la lógica).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;su-sitio.com/wp-admin/&lt;/code&gt; (Un directorio que dispara una redireccion al login si no esta autenticado).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;su-sitio.com/login&lt;/code&gt; (Una redireccion canonica a menudo manejada por los temas).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;su-sitio.com/admin&lt;/code&gt; (Redireccion legacy).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;escenario-1-el-404-no-encontrado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-1-el-404-no-encontrado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 1: El “404 No Encontrado”&lt;/h4&gt;
&lt;p&gt;Si estas URLs devuelven un error 404, el archivo no falta, esta oculto. Un plugin o código personalizado puede haber cambiado el slug de login a algo personalizado como &lt;code&gt;/portal&lt;/code&gt;, &lt;code&gt;/entrada&lt;/code&gt; o &lt;code&gt;/mi-login-secreto&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución:&lt;/strong&gt;
Si heredo un sitio y no conoce el slug personalizado, no puede adivinarlo. Debe desactivar el plugin que aplica la regla.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Acceso FTP/SFTP&lt;/strong&gt;: Conectese a su servidor usando FileZilla o el administrador de archivos de su hosting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navegue&lt;/strong&gt;: Vaya a &lt;code&gt;/wp-content/plugins/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identifique&lt;/strong&gt;: Busque carpetas llamadas &lt;code&gt;wps-hide-login&lt;/code&gt;, &lt;code&gt;ithemes-security-pro&lt;/code&gt; o &lt;code&gt;rename-wp-login&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neutralice&lt;/strong&gt;: Renombre la carpeta. Por ejemplo, cambie &lt;code&gt;wps-hide-login&lt;/code&gt; a &lt;code&gt;__wps-hide-login_DISABLED&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebe&lt;/strong&gt;: WordPress dejara inmediatamente de cargar ese plugin. La regla de enrutamiento personalizada desaparecera, y el predeterminado &lt;code&gt;/wp-login.php&lt;/code&gt; funcionara de nuevo.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;escenario-2-el-bucle-de-redireccion-infinito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-2-el-bucle-de-redireccion-infinito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 2: El bucle de redireccion infinito&lt;/h4&gt;
&lt;p&gt;Ingresa sus credenciales, la página se refresca, y esta de vuelta en la pantalla de login. Sin mensaje de error. Solo un bucle.
Esto generalmente es causado por una discrepancia de cookies o conflicto SSL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Limpiar cookies del navegador&lt;/strong&gt;: Esto resuelve el 50% de los casos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificar &lt;code&gt;wp-config.php&lt;/code&gt;&lt;/strong&gt;: Asegurese de que las URLs de su sitio esten codificadas correctamente.
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregue estos a wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_HOME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://su-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_SITEURL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://su-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;em&gt;Nota: Asegurese de usar &lt;code&gt;https&lt;/code&gt; si tiene un certificado SSL. Usar &lt;code&gt;http&lt;/code&gt; aqui cuando el servidor fuerza HTTPS causara un bucle.&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-olvide-mi-contrasena-y-el-correo-esta-muerto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-olvide-mi-contrasena-y-el-correo-esta-muerto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: “Olvide mi contrasena” (y el correo esta muerto)&lt;/h2&gt;
&lt;p&gt;El enlace “Perdio su contrasena?” depende de dos cosas fragiles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La capacidad de su servidor para enviar correos (SMTP).&lt;/li&gt;
&lt;li&gt;Que tenga acceso a la dirección de correo en archivo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si el sitio fue construido por un desarrollador anterior, el correo de admin podria ser &lt;code&gt;dev@agencia-que-cerro.com&lt;/code&gt;. Nunca recibira ese enlace. Aqui estan los &lt;strong&gt;Métodos de desarrollador&lt;/strong&gt; para anular la autenticación.&lt;/p&gt;
&lt;h3 id=&quot;método-a-la-cirugia-de-base-de-datos-phpmyadmin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-a-la-cirugia-de-base-de-datos-phpmyadmin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método A: La cirugia de base de datos (phpMyAdmin)&lt;/h3&gt;
&lt;p&gt;Este es el método universal. Funciona en cada host (Kinsta, WP Engine, SiteGround, OVH).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Acceder a la base de datos&lt;/strong&gt;: Inicie sesion en su panel de hosting y abra &lt;strong&gt;phpMyAdmin&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Localizar la tabla&lt;/strong&gt;: Encuentre &lt;code&gt;wp_users&lt;/code&gt;. (Nota: El prefijo &lt;code&gt;wp_&lt;/code&gt; podria ser diferente, ej. &lt;code&gt;wp_823_users&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encontrar el usuario&lt;/strong&gt;: Localice su nombre de usuario (&lt;code&gt;user_login&lt;/code&gt;) o correo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editar la fila&lt;/strong&gt;: Haga clic en “Editar”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El campo de contrasena&lt;/strong&gt;: Busque &lt;code&gt;user_pass&lt;/code&gt;. Vera una cadena larga de caracteres aleatorios (ej. &lt;code&gt;$P$B55D6Ljf...&lt;/code&gt;). Esta es una contrasena hasheada. No puede simplemente escribir “password123” aquí porque WordPress no la reconocera.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El truco magico&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;En el menú desplegable &lt;strong&gt;Función&lt;/strong&gt; junto a &lt;code&gt;user_pass&lt;/code&gt;, seleccione &lt;strong&gt;MD5&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;En el campo &lt;strong&gt;Valor&lt;/strong&gt;, elimine el hash y escriba su nueva contrasena en texto plano (ej. &lt;code&gt;NuevaContrasenaFuerte2026!&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Haga clic en &lt;strong&gt;Continuar&lt;/strong&gt; (Guardar).&lt;/li&gt;
&lt;li&gt;Que sucede? MySQL aplicara el algoritmo MD5 a su cadena &lt;em&gt;antes&lt;/em&gt; de guardarla. WordPress es lo suficientemente inteligente para reconocer hashes MD5 antiguos y automáticamente lo actualizara a un hash más nuevo y fuerte (como bcrypt) la proxima vez que inicie sesion.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;método-b-el-ataque-quirurgico-wp-cli-preferido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-b-el-ataque-quirurgico-wp-cli-preferido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método B: El ataque quirurgico WP-CLI (preferido)&lt;/h3&gt;
&lt;p&gt;Si tiene acceso SSH, usar la interfaz grafica es una perdida de tiempo. WP-CLI es más rápido, seguro y deja un rastro de auditoria en su historial de shell.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Iniciar sesion&lt;/strong&gt;: &lt;code&gt;ssh usuario@dirección-ip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navegar&lt;/strong&gt;: &lt;code&gt;cd /var/www/html&lt;/code&gt; (o la ruta de su sitio).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listar usuarios&lt;/strong&gt;: Necesita saber exactamente quienes son los administradores.
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambiar contrasena&lt;/strong&gt;:
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --user_pass=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;CaballoCorrectoGrapaBateria2026&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alternativa: Crear un nuevo administrador&lt;/strong&gt;:
A veces la cuenta de admin existente esta corrupta o no quiere tocarla. Cree un admin de respaldo para usted mismo.
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; admin_recuperacion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; admin@ejemplo.com&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --role=administrator&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --user_pass=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;MiClaveSecretaDeEntrada&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;método-c-el-interruptor-de-emergencia-functionsphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-c-el-interruptor-de-emergencia-functionsphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método C: El interruptor de emergencia &lt;code&gt;functions.php&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Advertencia&lt;/strong&gt;: Use esto solo como último recurso. Implica modificar código en un servidor en vivo.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Acceda via FTP a &lt;code&gt;/wp-content/themes/su-tema-activo/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Descargue &lt;code&gt;functions.php&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Agregue esta linea inmediatamente despues de &lt;code&gt;&amp;#x3C;?php&lt;/code&gt;:
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_set_password&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;RestablecimientoEmergencia2026!&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;em&gt;(Reemplace &lt;code&gt;1&lt;/code&gt; con el ID de usuario que quiere restablecer).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Suba el archivo.&lt;/li&gt;
&lt;li&gt;Refresque la página de login. &lt;strong&gt;La contrasena ahora esta restablecida.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PASO Crítico&lt;/strong&gt;: Elimine esa linea de &lt;code&gt;functions.php&lt;/code&gt; inmediatamente.
&lt;ul&gt;
&lt;li&gt;Por que? Cada vez que cualquier página de su sitio carga, WordPress intentara restablecer la contrasena de nuevo. Esto crea un bucle donde se le cierra la sesion instantaneamente despues de iniciar sesion porque la contrasena “cambio” nuevamente detras de escenas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-escenarios-avanzados-de-bloqueo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-escenarios-avanzados-de-bloqueo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Escenarios avanzados de bloqueo&lt;/h2&gt;
&lt;p&gt;Tiene la contrasena. Encontro la URL. Pero aun no puede entrar. Ahora entramos al reino de la depuracion avanzada.&lt;/p&gt;
&lt;h3 id=&quot;1-el-error-no-tiene-permisos-suficientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-error-no-tiene-permisos-suficientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El error “No tiene permisos suficientes”&lt;/h3&gt;
&lt;p&gt;Inicia sesion exitosamente, pero WordPress muestra un dashboard en blanco o dice “Lo sentimos, no tiene permiso para acceder a esta página.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diagnostico&lt;/strong&gt;: Su usuario existe, pero sus &lt;em&gt;capacidades&lt;/em&gt; estan corruptas. Esto sucede a menudo despues de una migración de base de datos defectuosa (buscar-y-reemplazar mal hecho en datos serializados).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución (base de datos):&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vaya a la tabla &lt;code&gt;wp_usermeta&lt;/code&gt; en phpMyAdmin.&lt;/li&gt;
&lt;li&gt;Busque &lt;code&gt;user_id&lt;/code&gt; que coincida con su ID (ej. 1).&lt;/li&gt;
&lt;li&gt;Busque el &lt;code&gt;meta_key&lt;/code&gt; llamado &lt;code&gt;wp_capabilities&lt;/code&gt; (o &lt;code&gt;wp_xyz_capabilities&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;El &lt;code&gt;meta_value&lt;/code&gt; deberia verse como este array serializado:
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;a: &apos;1:{s:13:&quot;administrator&quot;;b:1;}&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Si se ve completamente diferente, vacio o corrupto, reemplacelo con la cadena anterior. Esto fuerza manualmente a la base de datos a reconocerlo como Administrador.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;2-el-bloqueo-por-2fa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-bloqueo-por-2fa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El bloqueo por 2FA&lt;/h3&gt;
&lt;p&gt;Habilito la autenticación de dos factores (Google Authenticator), pero perdio su telefono. Ahora esta efectivamente bloqueado por su propia seguridad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución:&lt;/strong&gt;
No puede “adivinar” el código 2FA. Debe desactivar el plugin que lo aplica.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;FTP a &lt;code&gt;/wp-content/plugins/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Encuentre el plugin 2FA (ej. &lt;code&gt;google-authenticator&lt;/code&gt;, &lt;code&gt;two-factor&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Renombre la carpeta a &lt;code&gt;_disabled_google-authenticator&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inicie sesion. WordPress se quejara de que el plugin falta, pero le dejara entrar sin el código.&lt;/li&gt;
&lt;li&gt;Rehabilite el nombre de la carpeta, vaya a plugins y reconfigure.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;3-la-pantalla-blanca-de-la-muerte-wsod-al-iniciar-sesion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-la-pantalla-blanca-de-la-muerte-wsod-al-iniciar-sesion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. La Pantalla Blanca de la Muerte (WSOD) al iniciar sesion&lt;/h3&gt;
&lt;p&gt;Envia el formulario y la pantalla queda en blanco. Este es un error fatal de PHP ocurriendo durante el handshake de autenticación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diagnostico&lt;/strong&gt;: Para ver al fantasma, debe darle forma. Necesitamos logs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abra &lt;code&gt;wp-config.php&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Busque &lt;code&gt;define(&apos;WP_DEBUG&apos;, false);&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Reemplacelo con este bloque de “Registro detallado”:
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Habilitar depuracion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Guardar logs en /wp-content/debug.log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG_LOG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// NO mostrar errores en pantalla (riesgo de seguridad)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG_DISPLAY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;display_errors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Active el error de nuevo (intente iniciar sesion).&lt;/li&gt;
&lt;li&gt;Abra &lt;code&gt;/wp-content/debug.log&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Vera una linea como:
&lt;code&gt;PHP Fatal error: Uncaught Error: Call to undefined function... in /.../wp-content/plugins/plugin-malo/index.php:45&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ahora sabe exactamente cual plugin es el traidor. Eliminelo via FTP.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-opciones-nucleares-cuando-todo-lo-demás-falla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-opciones-nucleares-cuando-todo-lo-demás-falla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Opciones nucleares (cuando todo lo demás falla)&lt;/h2&gt;
&lt;p&gt;Si esta lidiando con un sitio hackeado o una instalación completamente rota, las soluciones quirurgicas podrian no funcionar. Aqui estan las opciones nucleares.&lt;/p&gt;
&lt;h3 id=&quot;1-restablecimiento-completo-del-core-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-restablecimiento-completo-del-core-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Restablecimiento completo del core de WordPress&lt;/h3&gt;
&lt;p&gt;A veces, los archivos core (&lt;code&gt;wp-login.php&lt;/code&gt;, archivos de &lt;code&gt;wp-admin&lt;/code&gt;) estan corruptos o infectados con malware.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Descargue una copia fresca de WordPress desde &lt;code&gt;wordpress.org&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Descomprima en su computadora.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elimine&lt;/strong&gt; la carpeta &lt;code&gt;wp-content&lt;/code&gt; de esta copia fresca (no quiere sobrescribir su propio contenido!).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elimine&lt;/strong&gt; el archivo &lt;code&gt;wp-config-sample.php&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Suba TODO lo demás a su servidor, sobrescribiendo los archivos existentes.
&lt;ul&gt;
&lt;li&gt;Esto reemplaza todos los archivos de lógica con código fresco y limpio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No&lt;/strong&gt; toca su base de datos, sus imágenes ni su tema.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;2-forzar-cierre-de-sesion-de-todos-restablecimiento-de-sales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-forzar-cierre-de-sesion-de-todos-restablecimiento-de-sales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Forzar cierre de sesion de todos (restablecimiento de sales)&lt;/h3&gt;
&lt;p&gt;Si sospecha un secuestro de sesion o quiere asegurarse de que nadie más este conectado mientras trabaja:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abra &lt;a href=&quot;https://api.wordpress.org/secret-key/1.1/salt/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://api.wordpress.org/secret-key/1.1/salt/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Copie las claves generadas.&lt;/li&gt;
&lt;li&gt;Abra &lt;code&gt;wp-config.php&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Reemplace las claves y sales de autenticación existentes con las nuevas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Efecto&lt;/strong&gt;: Cada cookie de login válida en el planeta para su sitio queda instantaneamente invalidada. Todos (incluyendolo a usted) quedan desconectados.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;parte-5-prevencion-proactiva-el-foso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-prevencion-proactiva-el-foso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Prevencion proactiva (el foso)&lt;/h2&gt;
&lt;p&gt;Recuperar acceso es estresante. El objetivo deberia ser nunca perderlo de nuevo. Aqui esta su lista de verificación para fortalecer su puerta de login.&lt;/p&gt;
&lt;h3 id=&quot;el-principio-del-minimo-privilegio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-principio-del-minimo-privilegio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El principio del minimo privilegio&lt;/h3&gt;
&lt;p&gt;Nunca de a cuentas separadas acceso de “Administrador” a menos que sean técnicamente capaces de gestionar el servidor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Editor&lt;/strong&gt;: Puede escribir y publicar entradas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestor de tienda&lt;/strong&gt;: Puede gestionar pedidos de WooCommerce.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Administrador&lt;/strong&gt;: Puede romper el sitio.
Si tiene un clientes, dele acceso de Editor. Solo de acceso de Administrador si firman una exencion de responsabilidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;claves-de-hardware-el-futuro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#claves-de-hardware-el-futuro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Claves de hardware (el futuro)&lt;/h3&gt;
&lt;p&gt;En 2026, las contrasenas se consideran inseguras. La industria se ha movido a &lt;strong&gt;Passkeys&lt;/strong&gt; (autenticación FIDO2).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use una clave de hardware como &lt;strong&gt;YubiKey&lt;/strong&gt; o &lt;strong&gt;Titan Key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Instale un plugin capaz de WebAuthn.&lt;/li&gt;
&lt;li&gt;Google y Apple ahora soportan Passkeys nativamente. Esto significa que puede iniciar sesion en WordPress usando su Face ID o Touch ID. Es infalsificable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;limitacion-de-intentos-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitacion-de-intentos-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitacion de intentos de login&lt;/h3&gt;
&lt;p&gt;Los ataques de fuerza bruta son robots intentando miles de contrasenas por segundo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instale &lt;strong&gt;Limit Login Attempts Reloaded&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Configurelo para bloquear una IP despues de 3 intentos fallidos por 24 horas.&lt;/li&gt;
&lt;li&gt;Este simple paso reduce la carga del servidor en un 90%.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;gestión-de-sesiones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-sesiones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de sesiones&lt;/h3&gt;
&lt;p&gt;Si inicia sesion desde un cafe público o la computadora de un amigo, podria olvidar cerrar sesion.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vaya a &lt;strong&gt;Usuarios -&gt; Perfil&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Desplacese hasta “Gestión de sesiones”.&lt;/li&gt;
&lt;li&gt;Haga clic en &lt;strong&gt;Cerrar sesion en todos los demás lugares&lt;/strong&gt;. Esta es una funcionalidad central a menudo pasada por alto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lista-de-verificación-resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación resumen&lt;/h2&gt;
&lt;p&gt;Recuperar acceso a WordPress es un proceso lógico de eliminación de métodos.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Es correcta la URL?&lt;/strong&gt; (Verifique plugins de login ocultos via FTP).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Es correcta la contrasena?&lt;/strong&gt; (Restablezca via WP-CLI o hash MD5 en DB).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Es correcto el rol de usuario?&lt;/strong&gt; (Verifique la serializacion de &lt;code&gt;wp_capabilities&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hay código bloqueando?&lt;/strong&gt; (Renombre la carpeta de plugins, habilite &lt;code&gt;WP_DEBUG&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Esta corrupto el core?&lt;/strong&gt; (Resuba wp-admin/includes frescos).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Una vez que este de vuelta, no solo suspire con alivio. &lt;strong&gt;Asegure la brecha.&lt;/strong&gt; Instale una solución de passkey, configure una cuenta de admin redundante, y verifique su programacion de copias de seguridad. La recuperacion de acceso es una batalla que solo deberia pelear una vez.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>wordpress-basics</category><category>troubleshooting</category><category domain="tag">login</category><category domain="tag">recovery</category><category domain="tag">database</category><category domain="tag">wp-cli</category><category domain="tag">logs</category><enclosure url="https://wppoland.com/images/og/wordpress-reset-privillages-access-roles.jpg" type="image/jpeg"/></item><item><title>Docker para desarrollo WordPress en 2026: Contenerizacion fácil</title><link>https://wppoland.com/es/docker-wordpress-development-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/docker-wordpress-development-guide-2026/</guid><description>Sigues usando Local by Flywheel o MAMP? Descubre por que Docker es el estándar de la industria para el desarrollo WordPress en 2026 y como configurarlo.</description><pubDate>Sat, 03 Jan 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Si eres un &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; profesional en 2026, &lt;strong&gt;Docker&lt;/strong&gt; es tu mejor aliado. Quedaron atras los dias de instalar manualmente versiones de PHP en tu Mac o luchar con errores específicos del servidor en Windows. Docker se ha convertido en el lenguaje universal de los entornos de desarrollo, y dominar esta tecnología es absolutamente imprescindible para cualquier profesional que quiera mantenerse competitivo en el ecosistema WordPress moderno.&lt;/p&gt;
&lt;p&gt;La contenerizacion no es simplemente una tendencia pasajera. Es una revolucion fundamental en la forma en que construimos, probamos y desplegamos aplicaciones WordPress. En esta guía exhaustiva, exploraremos cada aspecto de Docker aplicado al desarrollo WordPress, desde los conceptos básicos hasta las estrategias avanzadas de producción que utilizan los equipos de elite en todo el mundo.&lt;/p&gt;
&lt;h2 id=&quot;1-por-que-gano-la-contenerizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-por-que-gano-la-contenerizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Por que gano la contenerizacion&lt;/h2&gt;
&lt;p&gt;La excusa de “funciona en mi maquina” murio en 2024. Hoy utilizamos contenerizacion para garantizar consistencia absoluta en todos los entornos. Este cambio de paradigma ha transformado radicalmente la forma en que los equipos de desarrollo WordPress colaboran y entregan software de calidad.&lt;/p&gt;
&lt;h3 id=&quot;paridad-de-entornos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paridad-de-entornos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paridad de entornos&lt;/h3&gt;
&lt;p&gt;Tu contenedor local utiliza exactamente la misma distribucion Linux, versión de PHP y configuración de MySQL que tu servidor de producción. Esto elimina por completo la categoría más frustrante de errores: los que solo aparecen en producción. Cuando desarrollas dentro de un contenedor Docker, puedes estar absolutamente seguro de que el código que funciona en tu laptop funcionara identicamente en el servidor de staging y en producción.&lt;/p&gt;
&lt;p&gt;La paridad de entornos va más alla de las versiones de software. Incluye configuraciónes de red, variables de entorno, permisos de archivos y hasta la arquitectura del sistema operativo. Con Docker, cada miembro del equipo trabaja en un entorno identico, sin importar si usa macOS, Windows o Linux como sistema operativo anfitrion.&lt;/p&gt;
&lt;h3 id=&quot;aislamiento-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aislamiento-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aislamiento total&lt;/h3&gt;
&lt;p&gt;El Proyecto A necesita PHP 8.4, y el Proyecto B necesita PHP 7.4? No hay problema. Cada proyecto vive en su propia “burbuja” y nunca entra en conflicto con otros. Este nivel de aislamiento era practicamente imposible con las herramientas tradicionales como MAMP o XAMPP, donde cambiar la versión de PHP afectaba a todos los proyectos simultaneamente.&lt;/p&gt;
&lt;p&gt;El aislamiento de Docker también protege tu sistema operativo anfitrion. Las extensiónes de PHP, las bibliotecas del sistema y las dependencias del proyecto se mantienen completamente separadas. Si un proyecto requiere una extensión PHP experimental o una configuración de servidor poco convencional, puedes implementarla sin ningun riesgo para tus otros proyectos o tu sistema operativo.&lt;/p&gt;
&lt;h3 id=&quot;reproducibilidad-garantizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reproducibilidad-garantizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reproducibilidad garantizada&lt;/h3&gt;
&lt;p&gt;Cada entorno Docker se define mediante archivos de configuración versiónados en Git. Esto significa que cualquier miembro nuevo del equipo puede tener un entorno de desarrollo completamente funcional en minutos, no en horas o dias. La documentación del entorno esta inherentemente incluida en el código del proyecto, eliminando la necesidad de guías de configuración extensas y propensas a errores.&lt;/p&gt;
&lt;h2 id=&quot;2-dominando-docker-compose&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-dominando-docker-compose&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Dominando Docker Compose&lt;/h2&gt;
&lt;p&gt;Docker Compose es la herramienta que coordina multiples contenedores. Una configuración tipica de WordPress en 2026 incluye varios servicios que trabajan juntos de manera orquestada para crear un entorno de desarrollo completo y profesional.&lt;/p&gt;
&lt;h3 id=&quot;arquitectura-de-servicios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-de-servicios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura de servicios&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;WordPress (PHP-FPM)&lt;/strong&gt;: El motor principal que ejecuta el código PHP de WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nginx&lt;/strong&gt;: El servidor web de alto rendimiento que maneja las peticiones HTTP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MariaDB/MySQL&lt;/strong&gt;: La base de datos relacional confiable donde se almacena todo el contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis&lt;/strong&gt;: La cache de objetos (obligatoria para rendimiento en 2026).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mailpit/Mailhog&lt;/strong&gt;: Para capturar correos salientes durante las pruebas.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Fragmento Docker-compose.yml para 2026&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;mariadb:11.2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    volumes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;db_data:/var/lib/mysql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress:6.x-php8.3-fpm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    depends_on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;db&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configuración-avanzada-de-volumenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-avanzada-de-volumenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración avanzada de volumenes&lt;/h3&gt;
&lt;p&gt;Los volumenes en Docker Compose son cruciales para el desarrollo WordPress. Necesitas montar tu directorio de temas y plugins como volumenes para poder editar el código en tiempo real, mientras que los datos de la base de datos deben persistir en volumenes nombrados para no perder información entre reinicios del contenedor.&lt;/p&gt;
&lt;p&gt;La estrategia de volumenes correcta equilibra rendimiento con funcionalidad. Para archivos que editas frecuentemente (temas, plugins personalizados), usa bind mounts. Para datos que solo necesitan persistir (base de datos, uploads), usa volumenes nombrados de Docker.&lt;/p&gt;
&lt;h3 id=&quot;variables-de-entorno-y-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#variables-de-entorno-y-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Variables de entorno y seguridad&lt;/h3&gt;
&lt;p&gt;En 2026, la gestión de secretos es fundamental. Utiliza archivos &lt;code&gt;.env&lt;/code&gt; para credenciales de base de datos y claves de API, y asegurate de que estos archivos esten incluidos en tu &lt;code&gt;.gitignore&lt;/code&gt;. Docker Compose soporta nativamente archivos &lt;code&gt;.env&lt;/code&gt;, permitiendote separar la configuración sensible del código versiónado.&lt;/p&gt;
&lt;h2 id=&quot;3-dev-containers-el-estándar-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-dev-containers-el-estándar-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Dev Containers: El estándar de 2026&lt;/h2&gt;
&lt;p&gt;En 2026, la mayoria de los desarrolladores de primer nivel ni siquiera tienen PHP instalado en sus laptops. Utilizan &lt;strong&gt;VS Code Dev Containers&lt;/strong&gt;, una tecnología que ha revolucionado completamente el flujo de trabajo del desarrollador moderno.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona&lt;/h3&gt;
&lt;p&gt;Abres la carpeta de tu proyecto, y VS Code detecta automáticamente la carpeta &lt;code&gt;.devcontainer&lt;/code&gt;, arranca Docker y conecta el IDE directamente &lt;em&gt;dentro&lt;/em&gt; del contenedor. Todas las extensiónes de VS Code, las herramientas de linea de comandos y las configuraciónes del editor se ejecutan dentro del contenedor, garantizando un entorno de desarrollo perfectamente configurado.&lt;/p&gt;
&lt;h3 id=&quot;el-resultado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-resultado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El resultado&lt;/h3&gt;
&lt;p&gt;Un espacio de trabajo perfectamente configurado para cada proyecto, instantaneamente. No importa si el desarrollador acaba de unirse al equipo hace cinco minutos o lleva cinco años; el entorno de desarrollo es identico para todos. Las extensiónes de PHP, los linters, los formateadores de código y las herramientas de depuracion estan todos preconfigurados y listos para usar.&lt;/p&gt;
&lt;h3 id=&quot;beneficios-para-equipos-distribuidos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#beneficios-para-equipos-distribuidos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Beneficios para equipos distribuidos&lt;/h3&gt;
&lt;p&gt;Para agencias WordPress con equipos distribuidos, los Dev Containers eliminan una de las fuentes más comunes de friccion: las diferencias entre entornos locales. Un desarrollador en Madrid trabaja en exactamente el mismo entorno que uno en Buenos Aires o Ciudad de Mexico, sin necesidad de sincronizacion manual ni sesiones de “configuremos tu laptop”.&lt;/p&gt;
&lt;h2 id=&quot;4-optimización-de-rendimiento-para-mac-y-windows&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-optimización-de-rendimiento-para-mac-y-windows&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Optimización de rendimiento para Mac y Windows&lt;/h2&gt;
&lt;p&gt;Historicamente, Docker era lento en sistemas que no fueran Linux. Este problema esta resuelto en 2026 gracias a avances significativos en la tecnología de virtualizacion y sincronizacion de archivos.&lt;/p&gt;
&lt;h3 id=&quot;virtiofs-rendimiento-nativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#virtiofs-rendimiento-nativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;VirtioFS: Rendimiento nativo&lt;/h3&gt;
&lt;p&gt;Usa este proveedor de comparticion de archivos en la configuración de Docker Desktop para obtener un acceso a archivos hasta 10 veces más rápido. VirtioFS reemplaza las soluciones anteriores como osxfs y gRPC-FUSE, ofreciendo velocidades de lectura y escritura que son practicamente indistinguibles de las operaciones nativas del sistema de archivos.&lt;/p&gt;
&lt;h3 id=&quot;mutagen-para-configuraciónes-legacy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mutagen-para-configuraciónes-legacy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mutagen para configuraciónes legacy&lt;/h3&gt;
&lt;p&gt;Para configuraciónes heredadas, Mutagen proporciona sincronizacion binaria de alta velocidad. Aunque VirtioFS ha resuelto la mayoria de los problemas de rendimiento, Mutagen sigue siendo una opción viable para proyectos que requieren una compatibilidad absoluta con flujos de trabajo más antiguos.&lt;/p&gt;
&lt;h3 id=&quot;asignacion-inteligente-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#asignacion-inteligente-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Asignacion inteligente de recursos&lt;/h3&gt;
&lt;p&gt;En 2026, Docker Desktop es lo suficientemente inteligente como para usar solo la RAM que necesita, en lugar de reservar un bloque enorme de tu sistema operativo anfitrion. Esta gestión dinámica de recursos significa que puedes ejecutar Docker junto con otras aplicaciones exigentes sin experimentar degradacion del rendimiento.&lt;/p&gt;
&lt;h2 id=&quot;5-comparativa-de-herramientas-de-desarrollo-local-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-comparativa-de-herramientas-de-desarrollo-local-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Comparativa de herramientas de desarrollo local 2026&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Herramienta&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Audiencia&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Flexibilidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Escalabilidad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Desarrolladores profesionales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Extrema&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;LocalWP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Freelancers/Principiantes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;MAMP/WAMP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Usuarios legacy&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguna&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;DDEV / Lando&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Usuarios avanzados de Docker&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;docker-vs-ddev-y-lando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#docker-vs-ddev-y-lando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Docker vs. DDEV y Lando&lt;/h3&gt;
&lt;p&gt;DDEV y Lando son herramientas excelentes que simplifican la experiencia Docker para desarrolladores WordPress. Proporcionan configuraciónes preestablecidas y comandos simplificados que reducen la curva de aprendizaje. Sin embargo, para proyectos empresariales donde necesitas control total sobre cada aspecto de la infraestructura, Docker puro con Compose sigue siendo la opción superior.&lt;/p&gt;
&lt;h3 id=&quot;cuando-elegir-cada-herramienta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-elegir-cada-herramienta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando elegir cada herramienta&lt;/h3&gt;
&lt;p&gt;La eleccion depende de tu nivel de experiencia y las necesidades del proyecto. Si estas comenzando con la contenerizacion, DDEV ofrece una curva de aprendizaje más suave. Si gestionas multiples proyectos con requisitos de infraestructura diversos, Docker Compose con configuraciónes personalizadas te da la maxima flexibilidad.&lt;/p&gt;
&lt;h2 id=&quot;6-seguridad-en-entornos-docker-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-seguridad-en-entornos-docker-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Seguridad en entornos Docker para WordPress&lt;/h2&gt;
&lt;p&gt;La seguridad es una consideracion crítica cuando trabajas con contenedores. Docker proporciona aislamiento por defecto, pero la configuración correcta es esencial para maximizar la protección.&lt;/p&gt;
&lt;h3 id=&quot;mejores-prácticas-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas de seguridad&lt;/h3&gt;
&lt;p&gt;No ejecutes contenedores como root. Utiliza usuarios no privilegiados dentro de tus contenedores WordPress. Mantiene las imágenes base actualizadas para recibir parches de seguridad. Escanea tus imágenes regularmente en busca de vulnerabilidades conocidas con herramientas como Docker Scout o Trivy.&lt;/p&gt;
&lt;h3 id=&quot;redes-docker-seguras&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#redes-docker-seguras&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Redes Docker seguras&lt;/h3&gt;
&lt;p&gt;Configura redes Docker dedicadas para cada proyecto. Esto asegura que los contenedores de diferentes proyectos no puedan comunicarse entre si, reduciendo significativamente la superficie de ataque en caso de una brecha de seguridad.&lt;/p&gt;
&lt;h3 id=&quot;gestión-de-secretos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-secretos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de secretos&lt;/h3&gt;
&lt;p&gt;Nunca incluyas credenciales directamente en tus archivos Docker o docker-compose.yml. Utiliza Docker Secrets o archivos &lt;code&gt;.env&lt;/code&gt; externos para gestionar información sensible como contrasenas de base de datos, claves API y certificados SSL.&lt;/p&gt;
&lt;h2 id=&quot;7-el-flujo-de-trabajo-pro-de-2026-integración-cicd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-flujo-de-trabajo-pro-de-2026-integración-cicd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El flujo de trabajo PRO de 2026: Integración CI/CD&lt;/h2&gt;
&lt;p&gt;La mayor “victoria” con Docker es que tu pipeline de CI/CD (GitHub Actions, GitLab CI) puede utilizar las &lt;strong&gt;mismás imágenes exactas&lt;/strong&gt; que usas localmente. Esta consistencia entre desarrollo y producción elimina una categoría completa de errores de despliegue.&lt;/p&gt;
&lt;h3 id=&quot;el-pipeline-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-pipeline-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El pipeline completo&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Ejecutar pruebas PHPUnit en el contenedor para verificar la lógica del backend.&lt;/li&gt;
&lt;li&gt;Ejecutar pruebas de extremo a extremo con Cypress o Playwright contra el contenedor.&lt;/li&gt;
&lt;li&gt;Desplegar la imagen estable a tu cluster de producción (Kubernetes/Swarm).&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;registros-de-contenedores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#registros-de-contenedores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Registros de contenedores&lt;/h3&gt;
&lt;p&gt;En 2026, los equipos profesionales mantienen registros privados de contenedores donde almacenan sus imágenes WordPress personalizadas. Estas imágenes incluyen todas las extensiónes PHP necesarias, herramientas de desarrollo y configuraciónes optimizadas, permitiendo que nuevos miembros del equipo comiencen a trabajar en minutos.&lt;/p&gt;
&lt;h3 id=&quot;orquestacion-para-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#orquestacion-para-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Orquestacion para producción&lt;/h3&gt;
&lt;p&gt;Para sitios WordPress de alto tráfico, la orquestacion de contenedores con Kubernetes o Docker Swarm permite escalar automáticamente según la demanda. Cuando el tráfico aumenta durante campanas de marketing o eventos de ventas, se levantan nuevos contenedores automáticamente para manejar la carga adicional.&lt;/p&gt;
&lt;h2 id=&quot;8-depuracion-y-monitoreo-en-entornos-docker&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-depuracion-y-monitoreo-en-entornos-docker&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Depuracion y monitoreo en entornos Docker&lt;/h2&gt;
&lt;p&gt;La depuracion de aplicaciones WordPress dentro de contenedores Docker requiere herramientas y técnicas específicas que difieren del desarrollo local tradicional.&lt;/p&gt;
&lt;h3 id=&quot;xdebug-dentro-de-contenedores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#xdebug-dentro-de-contenedores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Xdebug dentro de contenedores&lt;/h3&gt;
&lt;p&gt;Configurar Xdebug dentro de un contenedor Docker requiere atención especial a la configuración de red. En 2026, la mayoria de las configuraciónes de Dev Containers incluyen Xdebug preconfigurado, pero para setups personalizados, necesitaras configurar el host de conexión y los puertos correctamente.&lt;/p&gt;
&lt;h3 id=&quot;logs-y-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#logs-y-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Logs y monitoreo&lt;/h3&gt;
&lt;p&gt;Docker proporciona acceso centralizado a los logs de todos los servicios. Utiliza &lt;code&gt;docker-compose logs&lt;/code&gt; para ver la salida combinada de WordPress, Nginx, MySQL y Redis en un solo flujo. Para entornos de producción, herramientas como Grafana y Prometheus se integran nativamente con Docker para proporcionar dashboards de monitoreo en tiempo real.&lt;/p&gt;
&lt;h3 id=&quot;perfilado-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#perfilado-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Perfilado de rendimiento&lt;/h3&gt;
&lt;p&gt;Herramientas como Query Monitor y Blackfire se integran perfectamente con entornos Docker WordPress. El perfilado dentro de contenedores te da una imagen precisa del rendimiento de tu aplicación en condiciones que replican exactamente tu entorno de producción.&lt;/p&gt;
&lt;h2 id=&quot;9-migración-desde-herramientas-tradicionales-a-docker&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-migración-desde-herramientas-tradicionales-a-docker&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Migración desde herramientas tradicionales a Docker&lt;/h2&gt;
&lt;p&gt;Si actualmente usas MAMP, XAMPP o LocalWP, la migración a Docker es más sencilla de lo que piensas. El proceso tipico incluye exportar tus bases de datos, crear archivos Docker Compose que repliquen tu configuración actual y gradualmente adoptar las mejores prácticas de contenerizacion.&lt;/p&gt;
&lt;h3 id=&quot;paso-a-paso-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-a-paso-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso a paso de migración&lt;/h3&gt;
&lt;p&gt;Comienza con un solo proyecto piloto. Crea un archivo &lt;code&gt;docker-compose.yml&lt;/code&gt; que replique tu entorno actual, incluyendo la versión de PHP, el motor de base de datos y las extensiónes necesarias. Una vez que el proyecto piloto funcióne correctamente, migra gradualmente los demás proyectos.&lt;/p&gt;
&lt;h3 id=&quot;preservando-datos-existentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preservando-datos-existentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preservando datos existentes&lt;/h3&gt;
&lt;p&gt;Exporta tus bases de datos con &lt;code&gt;mysqldump&lt;/code&gt; e importalas en el contenedor MariaDB. Copia tus archivos de WordPress (especialmente &lt;code&gt;wp-content&lt;/code&gt;) a la estructura de volumenes de Docker. Verifica que todos los enlaces de medios y configuraciónes funciónen correctamente en el nuevo entorno.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Docker ya no es solo para DevOps; es una habilidad fundamental para los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores WordPress&lt;/a&gt; en 2026. Al dominar la contenerizacion, eliminas errores de entorno, aceleras la incorporacion de nuevos miembros del equipo y construyes aplicaciones más seguras y profesionales. La inversión de tiempo en aprender Docker se recupera rápidamente en productividad y calidad del código.&lt;/p&gt;
&lt;p&gt;Descubre más sobre nuestros &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;servicios de optimización de velocidad WordPress&lt;/a&gt; y como la contenerizacion contribuye al rendimiento general de tu sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sigues luchando con configuraciónes de servidores locales? Es hora de contenerizar tu vida con Docker.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category domain="tag">docker</category><category domain="tag">devops</category><category domain="tag">local-development</category><category domain="tag">workflow</category><category domain="tag">linux</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>WordPress REST API vs. GraphQL en 2026: El enfrentamiento arquitectonico</title><link>https://wppoland.com/es/wordpress-rest-api-vs-graphql-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-rest-api-vs-graphql-2026/</guid><description>Eligiendo entre REST y GraphQL para su proyecto WordPress headless en 2026? Comparamos rendimiento, experiencia de desarrollador y escalabilidad para aplicaciones modernas.</description><pubDate>Sat, 27 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La revolucion “WordPress Headless” ha madurado. En 2026, la pregunta ya no es &lt;em&gt;si&lt;/em&gt; deberia desacoplar su frontend, sino &lt;em&gt;como&lt;/em&gt; deberia obtener sus datos. La batalla entre la &lt;strong&gt;API REST nativa&lt;/strong&gt; y &lt;strong&gt;GraphQL&lt;/strong&gt; ha llegado a un punto de inflexion fascinante.&lt;/p&gt;
&lt;p&gt;A continuacion presentamos la comparación arquitectonica que necesita para sus proyectos 2026, con análisis profundo de rendimiento, experiencia de desarrollador y casos de uso empresariales.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Astro y Next.js&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-rest-api-el-veterano-confiable-y-estable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-rest-api-el-veterano-confiable-y-estable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. REST API: El veterano confiable y estable&lt;/h2&gt;
&lt;p&gt;La API REST de WordPress ha sido parte del nucleo durante una decada. En 2026, es más robusta que nunca y sigue siendo la opción predeterminada para millones de sitios.&lt;/p&gt;
&lt;h3 id=&quot;fortalezas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fortalezas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fortalezas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Funciona “de serie”&lt;/strong&gt;: No requiere plugins adicionales para funcionalidad básica. Cada instalación WordPress viene con una API REST completa y bien documentada. Es altamente cacheable a nivel HTTP usando CDNs estándar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simplicidad&lt;/strong&gt;: Cada recurso tiene una URL única y predecible:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GET /wp-json/wp/v2/posts          → Lista de posts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GET /wp-json/wp/v2/posts/123      → Post específico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GET /wp-json/wp/v2/categories     → Lista de categorias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GET /wp-json/wp/v2/media/456      → Imagen específica&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ecosistema maduro&lt;/strong&gt;: Cada herramienta, plugin y servicio que se integra con WordPress lo hace via REST. La compatibilidad universal es una ventaja estrategica enorme.&lt;/p&gt;
&lt;h3 id=&quot;debilidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#debilidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Debilidades&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Over-fetching&lt;/strong&gt;: Si solo necesita el título y slug de un post, REST aun podria enviarle 50 campos incluyendo metadata, contenido y detalles del autor. Este desperdicio de ancho de banda es especialmente problematico en conexiónes móviles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multiples requests&lt;/strong&gt;: Para construir una página compleja (post + autor + categorías + posts relacionados), necesita 4-5 solicitudes separadas, cada una con su propia latencia de red.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo del problema:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Para construir una página de blog, REST requiere:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/wp/v2/posts/123&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);           &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Request 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`/wp-json/wp/v2/users/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Request 2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; categories&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/wp/v2/categories?post=123&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Request 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`/wp-json/wp/v2/media/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;featured_media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Request 4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; related&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/wp/v2/posts?categories=5&amp;#x26;per_page=3&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Request 5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Total: 5 requests, ~500ms de latencia acumulada&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-graphql-el-instrumento-de-precision&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-graphql-el-instrumento-de-precision&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. GraphQL: El instrumento de precision&lt;/h2&gt;
&lt;p&gt;GraphQL (generalmente implementado via WPGraphQL) permite al desarrollador frontend definir la forma exacta de la respuesta. Es como pedir en un restaurante a la carta en lugar de recibir un menú fijo.&lt;/p&gt;
&lt;h3 id=&quot;fortalezas-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fortalezas-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fortalezas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Una solicitud, exactamente los datos que quiere&lt;/strong&gt;: Puede obtener un post, sus categorías, los últimos 3 posts del autor y la configuración del sitio en un &lt;strong&gt;único viaje de red&lt;/strong&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;graphql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; P&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;á&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ginaBlog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;123&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;idType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; DATABASE_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    slug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    featuredImage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        sourceUrl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; LARGE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        altText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        avatar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          url&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;first&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          nodes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;            title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;            slug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    categories&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      nodes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        slug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Total&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: 1 &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, ~100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ms&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; de&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; latencia&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Tipado estricto&lt;/strong&gt;: El schema GraphQL define exactamente que datos estan disponibles y de que tipo son. Esto elimina errores de tipo en el frontend y facilita la documentación automática.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Introspeccion&lt;/strong&gt;: El schema es auto-documentado. Los desarrolladores pueden explorar toda la API sin salir de su IDE.&lt;/p&gt;
&lt;h3 id=&quot;debilidades-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#debilidades-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Debilidades&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Requiere plugin adicional&lt;/strong&gt;: WPGraphQL es un plugin que debe instalarse y mantenerse. Aunque es estable y bien mantenido, agrega una dependencia al stack.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Complejidad de consultas&lt;/strong&gt;: Consultas GraphQL complejas pueden resultar en lookups de base de datos lentos si no se optimizan adecuadamente con un object cache (Redis).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caching más complejo&lt;/strong&gt;: Dado que todas las solicitudes van al mismo endpoint (POST /graphql), no se puede cachear a nivel de URL como con REST. Requiere “Persisted Queries” para lograr resultados de edge-caching similares.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-rendimiento-a-escala-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-rendimiento-a-escala-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Rendimiento a escala 2026&lt;/h2&gt;
&lt;p&gt;En 2026, el rendimiento no es solo velocidad; es eficiencia de recursos.&lt;/p&gt;
&lt;h3 id=&quot;latencia-de-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#latencia-de-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Latencia de red&lt;/h3&gt;
&lt;p&gt;GraphQL gana aquí de forma contundente. Al agrupar multiples puntos de datos en una sola solicitud, reduce drasticamente el “Time to First Byte” (TTFB) para páginas complejas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparativa de latencia para página de blog:&lt;/strong&gt;&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;REST (5 requests)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;GraphQL (1 request)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Requests totales&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Latencia total&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;~500ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;~120ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Datos transferidos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;~85KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;~12KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Overhead HTTP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5x headers&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1x headers&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;estrategia-de-caching&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-caching&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de caching&lt;/h3&gt;
&lt;p&gt;REST gana en facilidad de uso para caching. Dado que cada endpoint es una URL única, puede cachearlo globalmente en Cloudflare con esfuerzo cero. GraphQL requiere “Persisted Queries” (mapear hashes a consultas) para lograr resultados de edge-caching similares.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caching REST:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GET /wp-json/wp/v2/posts/123&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;→ Cache key: URL exacta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;→ CDN cache: automático&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;→ Browser cache: via Cache-Control headers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Caching GraphQL:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;POST /graphql (body: { query: &quot;...&quot; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;→ Cache key: hash del query + variables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;→ CDN cache: requiere Persisted Queries o GET con query params&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;→ Mas complejo pero igualmente efectivo con configuración adecuada&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;consumo-de-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consumo-de-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consumo de servidor&lt;/h3&gt;
&lt;p&gt;REST es generalmente más ligero para el servidor en consultas simples. GraphQL puede ser más intensivo en CPU debido al parsing y resolución de consultas complejas. Sin embargo, el impacto total en el sistema es menor con GraphQL porque se hacen menos solicitudes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-experiencia-de-desarrollador-dx&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-experiencia-de-desarrollador-dx&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Experiencia de desarrollador (DX)&lt;/h2&gt;
&lt;h3 id=&quot;rest-familiar-y-universal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rest-familiar-y-universal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;REST: Familiar y universal&lt;/h3&gt;
&lt;p&gt;Familiar para practicamente todo desarrollador. Puede probar endpoints en un navegador o herramientas como Postman instantaneamente. La curva de aprendizaje es practicamente inexistente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Postman / Insomnia para testing&lt;/li&gt;
&lt;li&gt;Swagger/OpenAPI para documentación&lt;/li&gt;
&lt;li&gt;cURL para scripts automatizados&lt;/li&gt;
&lt;li&gt;Navegador web para testing rápido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;graphql-el-ide-dentro-del-ide&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#graphql-el-ide-dentro-del-ide&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GraphQL: El IDE dentro del IDE&lt;/h3&gt;
&lt;p&gt;Ofrece &lt;strong&gt;GraphiQL&lt;/strong&gt;, un IDE en el navegador que permite explorar todo el schema WordPress, ver campos disponibles y probar consultas con autocompletado. En 2026, esto es un potenciador de productividad enorme para equipos frontend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GraphiQL (integrado en WPGraphQL)&lt;/li&gt;
&lt;li&gt;Apollo Client DevTools para React&lt;/li&gt;
&lt;li&gt;GraphQL Playground para testing avanzado&lt;/li&gt;
&lt;li&gt;Generación automática de tipos TypeScript desde el schema&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;comparativa-de-dx&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparativa-de-dx&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparativa de DX&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Aspecto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;REST&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;GraphQL&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Curva de aprendizaje&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Minima&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Documentación&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Auto-generada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tipado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Debil (JSON)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fuerte (Schema)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Simple&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Requiere herramientas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Productividad (largo plazo)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Buena&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Flexibilidad del clientes&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Maxima&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-seguridad-consideraciones-por-tipo-de-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-seguridad-consideraciones-por-tipo-de-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Seguridad: Consideraciones por tipo de API&lt;/h2&gt;
&lt;h3 id=&quot;rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;REST API&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Superficie de ataque conocida y bien documentada&lt;/li&gt;
&lt;li&gt;Fácil de restringir endpoints específicos&lt;/li&gt;
&lt;li&gt;Rate limiting simple por URL&lt;/li&gt;
&lt;li&gt;Permisos por endpoint bien definidos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;graphql-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#graphql-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GraphQL API&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Riesgo de “query complexity attack” (consultas excesivamente anidadas)&lt;/li&gt;
&lt;li&gt;Requiere limites de profundidad de consulta&lt;/li&gt;
&lt;li&gt;Introspeccion puede exponer información del schema (deshabilitar en producción)&lt;/li&gt;
&lt;li&gt;Necesita análisis de costo de consulta para prevenir abuso&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mitigacion de riesgos GraphQL:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar profundidad de consulta en WPGraphQL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;graphql_max_query_depth&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Maximo 10 niveles de anidacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar complejidad de consulta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;graphql_max_query_complexity&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Costo maximo por consulta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar introspeccion en producción&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;graphql_enable_introspection&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; defined&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_DEBUG&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-casos-de-uso-cuando-elegir-cada-uno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-casos-de-uso-cuando-elegir-cada-uno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Casos de uso: Cuando elegir cada uno&lt;/h2&gt;
&lt;h3 id=&quot;elija-rest-cuando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-rest-cuando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija REST cuando:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Necesite integraciones simples servidor a servidor&lt;/li&gt;
&lt;li&gt;Su aplicación solo consume feeds de posts&lt;/li&gt;
&lt;li&gt;Los webhooks son su patron de integración principal&lt;/li&gt;
&lt;li&gt;El equipo no tiene experiencia con GraphQL&lt;/li&gt;
&lt;li&gt;Necesite maximum compatibilidad con herramientas existentes&lt;/li&gt;
&lt;li&gt;El caching agresivo a nivel de CDN es crítico&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-graphql-cuando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-graphql-cuando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija GraphQL cuando:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Construya un frontend complejo con React, &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Astro o Next.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Necesite datos de multiples fuentes en una sola página&lt;/li&gt;
&lt;li&gt;El rendimiento móvil sea crítico (minimizar requests)&lt;/li&gt;
&lt;li&gt;Su equipo frontend quiera controlar la forma de los datos&lt;/li&gt;
&lt;li&gt;Tenga un sitio con muchos tipos de contenido interrelacionados&lt;/li&gt;
&lt;li&gt;La experiencia de desarrollador sea una prioridad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;use-ambos-cuando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#use-ambos-cuando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Use ambos cuando:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;GraphQL para el frontend de visualización pública&lt;/li&gt;
&lt;li&gt;REST para tareas administrativas internas&lt;/li&gt;
&lt;li&gt;REST para webhooks y notificaciones&lt;/li&gt;
&lt;li&gt;GraphQL para dashboards y reportes complejos&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-matriz-de-decision-2026-rest-vs-graphql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-matriz-de-decision-2026-rest-vs-graphql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Matriz de decision 2026: REST vs. GraphQL&lt;/h2&gt;




























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;REST API&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;GraphQL (WPGraphQL)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo (integrado)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Necesita plugin&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Obtencion de datos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Endpoints fijos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Flexible/dinámica&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Over-fetching&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Comun&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Inexistente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Under-fetching&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Comun&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Inexistente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Caching&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fácil (basado en URL)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Complejo (necesita hash)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tipado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Debil&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fuerte&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Documentación&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Auto-generada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ideal para&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Apps simples / Webhooks&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Apps JS complejas / Headless&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bien entendida&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Requiere configuración adicional&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ecosistema&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Universal&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Creciente rápidamente&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-implementación-práctica-de-rest-a-graphql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-implementación-práctica-de-rest-a-graphql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Implementación práctica: De REST a GraphQL&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-instalar-wpgraphql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-instalar-wpgraphql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Instalar WPGraphQL&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-graphql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-2-explorar-el-schema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-explorar-el-schema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Explorar el schema&lt;/h3&gt;
&lt;p&gt;Acceda a &lt;code&gt;sudominio.com/graphql&lt;/code&gt; con GraphiQL para explorar todos los tipos y campos disponibles.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-construir-consultas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-construir-consultas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Construir consultas&lt;/h3&gt;
&lt;p&gt;Comience con consultas simples y vaya aumentando la complejidad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;graphql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Consulta básica&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;first&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    nodes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      slug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Consulta avanzada con filtros&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ArticulosPorCategoria&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;$slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;categoryName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;$slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    nodes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      excerpt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      featuredImage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          sourceUrl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; MEDIUM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-4-integrar-con-su-frontend&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-integrar-con-su-frontend&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Integrar con su frontend&lt;/h3&gt;
&lt;p&gt;Con Astro 5:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://su-wp.com/graphql&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  headers: { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;application/json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  body: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    query: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`query { posts(first: 10) { nodes { title slug } } }`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{data.posts.nodes.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`/blog/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&gt;{post.title}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;))}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-la-recomendación-2026-elija-graphql-para-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-la-recomendación-2026-elija-graphql-para-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. La recomendación 2026: Elija GraphQL para calidad&lt;/h2&gt;
&lt;p&gt;Si esta construyendo un sitio moderno y desacoplado usando &lt;strong&gt;React, Astro o Next.js&lt;/strong&gt;, GraphQL es el ganador. La capacidad de solicitar exactamente lo que se necesita produce un frontend más ligero, rápido y mantenible.&lt;/p&gt;
&lt;p&gt;Sin embargo, no ignore REST. Para integraciones simples, apps móviles que solo necesitan un feed de posts o automatizacion interna, la API REST nativa sigue siendo la forma más rápida de lograr resultados.&lt;/p&gt;
&lt;p&gt;La decision no es binaria. Las arquitecturas más sofisticadas de 2026 usan ambas APIs estrategicamente, aprovechando las fortalezas de cada una donde son más relevantes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Todavia obtiene el objeto completo del post solo para un título? Mejore su arquitectura con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; hoy.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Arquitecturas API empresariales&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Frontends modernos con GraphQL&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento de APIs&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - APIs de comercio electronico&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; - SEO para sitios headless&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category domain="tag">headless</category><category domain="tag">graphql</category><category domain="tag">rest-api</category><category domain="tag">javascript</category><category domain="tag">architecture</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>Construyendo sistemas de diseño escalables en WordPress con Gutenberg 2026</title><link>https://wppoland.com/es/building-scalable-design-systems-wordpress-gutenberg-2026-guide/</link><guid isPermaLink="true">https://wppoland.com/es/building-scalable-design-systems-wordpress-gutenberg-2026-guide/</guid><description>Los sistemas de diseño son la columna vertebral del branding empresarial. En 2026, no construimos páginas, construimos sistemas. Aprenda a dominar theme.json y Block Patterns.</description><pubDate>Tue, 23 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, el desarrollo web empresarial ha superado la era de las “páginas a medida”. Hoy construimos &lt;strong&gt;ecosistemas&lt;/strong&gt;. Un sistema de diseño en WordPress ya no es solo un kit de UI en Figma; es un conjunto vivo y dinámico de reglas aplicadas por el &lt;strong&gt;editor Gutenberg&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Para las grandes organizaciónes, mantener la consistencia visual a través de cientos de páginas y multiples subdominios es una tarea herculea. El desarrollo WordPress tradicional, con su dependencia de plantillas codificadas y CSS disperso, es una receta para la “deuda de diseño”.&lt;/p&gt;
&lt;p&gt;En esta guía exhaustiva de más de 2500 palabras, exploramos como aprovechar &lt;strong&gt;theme.json&lt;/strong&gt;, &lt;strong&gt;Block Patterns&lt;/strong&gt; y &lt;strong&gt;Design Tokens&lt;/strong&gt; para construir un sistema de diseño que escale a miles de nodos sin perder su esencia.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-fuente-única-de-verdad-themejson-v4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-fuente-única-de-verdad-themejson-v4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La fuente única de verdad: Theme.json v4&lt;/h2&gt;
&lt;p&gt;El archivo &lt;code&gt;theme.json&lt;/code&gt; es el cerebro de su tema WordPress en 2026. Es el documento que gobierna cada aspecto visual de su sitio, desde la tipografia hasta el espaciado, garantizando consistencia absoluta.&lt;/p&gt;
&lt;h3 id=&quot;gobernanza-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gobernanza-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gobernanza global&lt;/h3&gt;
&lt;p&gt;En lugar de definir códigos hexadecimales en veinte archivos CSS diferentes, define su paleta una vez. Gutenberg genera automáticamente las variables CSS y los controles del editor. Este enfoque centralizado elimina la posibilidad de inconsistencias visuales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estructura de theme.json v4:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schemas.wp.org/trunk/theme.json&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;versión&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;settings&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;custom&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;palette&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#1a1a2e&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Primario&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;secondary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#16213e&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Secundario&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;accent&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#0f3460&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Acento&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;highlight&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#e94560&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Destacado&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;typography&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;customFontSize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;fontSizes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;small&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0.875rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Pequeno&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;medium&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Medio&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Grande&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;x-large&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2.25rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Extra Grande&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;spacing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;customSpacingSize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;spacingSizes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;10&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;XS&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;20&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;S&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;30&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;M&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;40&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2.5rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;L&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;50&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;4rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;XL&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;controles-estrictos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#controles-estrictos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Controles estrictos&lt;/h3&gt;
&lt;p&gt;En 2026, los equipos empresariales usan &lt;code&gt;theme.json&lt;/code&gt; para bloquear el editor. Puede deshabilitar colores personalizados, forzar tamaños de fuente específicos y prevenir que los usuarios anadan margenes no autorizados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Restricciones comunes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deshabilitar el selector de color personalizado&lt;/li&gt;
&lt;li&gt;Limitar fuentes a la familia tipografica corporativa&lt;/li&gt;
&lt;li&gt;Restringir opciones de espaciado a valores predefinidos&lt;/li&gt;
&lt;li&gt;Bloquear ciertos tipos de bloques para editores no autorizados&lt;/li&gt;
&lt;li&gt;Forzar el uso de patrones aprobados en lugar de bloques libres&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;organización-modular-de-themejson&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#organización-modular-de-themejson&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Organización modular de theme.json&lt;/h3&gt;
&lt;p&gt;Para sitios empresariales con cientos de configuraciónes, dividimos &lt;code&gt;theme.json&lt;/code&gt; en parciales modulares:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;theme/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── theme.json (compilado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── config/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── colors.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── typography.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── spacing.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── layout.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── custom.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── build-theme-json.js (script de compilacion)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta estructura permite que diferentes equipos (diseño, desarrollo, marketing) gestiónen sus areas de configuración sin conflictos, y el script de compilacion fusiona todo en el &lt;code&gt;theme.json&lt;/code&gt; final.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-block-patterns-el-fin-de-las-páginas-vacias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-block-patterns-el-fin-de-las-páginas-vacias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Block Patterns: El fin de las páginas vacias&lt;/h2&gt;
&lt;p&gt;En el pasado, dar a un editor una página en blanco era una invitacion al desastre. En 2026, le damos una &lt;strong&gt;Biblioteca de Patrones&lt;/strong&gt; que guía la creación de contenido dentro de parametros de marca predefinidos.&lt;/p&gt;
&lt;h3 id=&quot;patrones-atomicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-atomicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones atomicos&lt;/h3&gt;
&lt;p&gt;Componentes pequeños y reutilizables como un “Header Hero” o una “Tarjeta de Funcionalidad”. Estos son los bloques de construccion básicos del sistema de diseño.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplos de patrones atomicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hero Header&lt;/strong&gt;: Título, subtitulo, CTA y imagen de fondo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tarjeta de servicio&lt;/strong&gt;: Icono, título, descripción y enlace&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testimonio&lt;/strong&gt;: Foto, cita, nombre y cargo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estadística&lt;/strong&gt;: Número grande, etiqueta y contexto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CTA Banner&lt;/strong&gt;: Título, descripción y boton de accion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;patrones-de-página-completa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-de-página-completa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones de página completa&lt;/h3&gt;
&lt;p&gt;Layouts completos para landing pages, casos de estudio o whitepapers que pueden insertarse con un solo clic. Los editores seleccionan un patron y simplemente reemplazan el contenido de ejemplo con su contenido real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Biblioteca de patrones de página tipica:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Landing page de servicio&lt;/li&gt;
&lt;li&gt;Caso de estudio con metricas&lt;/li&gt;
&lt;li&gt;Página de producto con especificaciones&lt;/li&gt;
&lt;li&gt;Página de equipo con biografias&lt;/li&gt;
&lt;li&gt;Página de FAQ con schema automático&lt;/li&gt;
&lt;li&gt;Página de contacto con formulario y mapa&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;patrones-sincronizados-synced-patterns&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-sincronizados-synced-patterns&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones sincronizados (Synced Patterns)&lt;/h3&gt;
&lt;p&gt;Si el equipo legal cambia el patron de “Disclaimer”, se actualiza en cada página del sitio instantaneamente. Esta es una de las funcionalidades más poderosas de Gutenberg en 2026 para organizaciónes con requisitos de cumplimiento estrictos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Casos de uso para patrones sincronizados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avisos legales y disclaimers&lt;/li&gt;
&lt;li&gt;Barras de cookies y consentimiento&lt;/li&gt;
&lt;li&gt;Banners de promocion temporales&lt;/li&gt;
&lt;li&gt;Bloques de información corporativa (dirección, telefono)&lt;/li&gt;
&lt;li&gt;CTAs globales con mensajes de campana actuales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;versionado-de-patrones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#versionado-de-patrones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Versionado de patrones&lt;/h3&gt;
&lt;p&gt;En entornos empresariales, los patrones tienen ciclo de vida:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Borrador&lt;/strong&gt;: Diseño nuevo en desarrollo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision&lt;/strong&gt;: Aprobacion por equipo de marca/legal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicado&lt;/strong&gt;: Disponible para editores en toda la red&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;: Reemplazado por versión nueva, con migración automática&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archivado&lt;/strong&gt;: Removido de la biblioteca pero preservado en historial&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-design-tokens-conectando-código-y-creatividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-design-tokens-conectando-código-y-creatividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Design Tokens: Conectando código y creatividad&lt;/h2&gt;
&lt;p&gt;Los design tokens representan las piezas más pequeñas de su marca (colores, unidades de espaciado, profundidades de sombra). Son el lenguaje compartido entre disenadores y desarrolladores.&lt;/p&gt;
&lt;h3 id=&quot;implementación-nativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-nativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación nativa&lt;/h3&gt;
&lt;p&gt;Gutenberg usa propiedades personalizadas CSS (&lt;code&gt;--wp--preset--color--primary&lt;/code&gt;) que se mapean directamente a su sistema de diseño. Esto significa que cualquier cambio en los tokens se propaga automáticamente a todos los componentes que los utilizan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tokens tipicos de un sistema de diseño empresarial:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Colores de marca */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--color--primary: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic&quot;&gt;#1a1a2e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--color--secondary: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic&quot;&gt;#16213e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--color--accent: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic&quot;&gt;#0f3460&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Tipografia */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--font-family--heading: &apos;Inter&apos;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sans-serif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--font-family--body: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;Source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Sans Pro&apos;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sans-serif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Espaciado */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--spacing--10: 0.5rem;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--spacing--20: 1rem;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--preset--spacing--30: 1.5rem;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Sombras */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--custom--shadow--sm: 0 1px 2px rgba(0,0,0,0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--custom--shadow--md: 0 4px 6px rgba(0,0,0,0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--custom--shadow--lg: 0 10px 15px rgba(0,0,0,0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Bordes */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--custom--border-radius--sm: 4px;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--custom--border-radius--md: 8px;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;--wp--custom--border-radius--lg: 16px;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;cambio-de-tema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambio-de-tema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cambio de tema&lt;/h3&gt;
&lt;p&gt;Quiere implementar un “Modo Oscuro” o una paleta de “Venta de Verano”? Actualiza los tokens en &lt;code&gt;theme.json&lt;/code&gt;, y todo el sitio se transforma sin una sola linea de cambios CSS tradicionales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación de modo oscuro:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;elements&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;background&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--color--dark-bg)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;var(--wp--preset--color--dark-text)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;tokens-multi-marca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tokens-multi-marca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tokens multi-marca&lt;/h3&gt;
&lt;p&gt;Para organizaciónes con multiples marcas bajo un mismo paraguas corporativo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tokens base compartidos (espaciado, grid, sombras)&lt;/li&gt;
&lt;li&gt;Tokens de marca específicos (colores, tipografia, iconografia)&lt;/li&gt;
&lt;li&gt;Tokens de contexto (variaciones por página o sección)&lt;/li&gt;
&lt;li&gt;Tokens de estado (hover, activo, deshabilitado)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-gobernanza-de-bloques-personalizados-con-react&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-gobernanza-de-bloques-personalizados-con-react&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Gobernanza de bloques personalizados con React&lt;/h2&gt;
&lt;p&gt;Los bloques nativos de Gutenberg son poderosos, pero a veces necesita un “Grid de Comparación de Productos” que debe seguir lógica rigida. Aqui es donde entran los bloques personalizados con React.&lt;/p&gt;
&lt;h3 id=&quot;componentes-react-avanzados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#componentes-react-avanzados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Componentes React avanzados&lt;/h3&gt;
&lt;p&gt;Construimos bloques personalizados usando el paquete &lt;code&gt;@wordpress/scripts&lt;/code&gt;, asegurando que se integren perfectamente con el inspector de bloques.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estructura de un bloque personalizado empresarial:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;blocks/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── product-comparison/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── block.json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── edit.js (interfaz del editor)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── save.js (salida del frontend)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── style.scss (estilos del frontend)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── editor.scss (estilos del editor)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── transforms.js (conversiones entre bloques)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;validación-de-atributos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#validación-de-atributos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Validación de atributos&lt;/h3&gt;
&lt;p&gt;Forzamos tipos de datos estrictos para los atributos de bloques, previniendo que los editores rompan el frontend con entradas invalidas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de validación:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    heading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        maxLength&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    price&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        minimum&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        maximum&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;999999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    variant&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        enum&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;primary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;secondary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;accent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;primary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;bloques-compuestos-con-bloqueo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloques-compuestos-con-bloqueo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloques compuestos con bloqueo&lt;/h3&gt;
&lt;p&gt;Para layouts complejos que deben mantener su estructura:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bloquear la estructura interna del patron&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;InnerBlocks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    template&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;TEMPLATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    templateLock&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;all&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    allowedBlocks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;core/heading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;core/paragraph&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;core/button&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los editores pueden cambiar el texto y las imágenes, pero no pueden reorganizar, eliminar o agregar bloques fuera de la estructura definida. Esta restriccion es esencial para mantener la integridad visual de la marca.&lt;/p&gt;
&lt;h3 id=&quot;sistema-de-iconografia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sistema-de-iconografia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sistema de iconografia&lt;/h3&gt;
&lt;p&gt;Un sistema de diseño completo incluye una biblioteca de iconos consistente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Iconos SVG integrados como bloques personalizados&lt;/li&gt;
&lt;li&gt;Tamaños y colores controlados por design tokens&lt;/li&gt;
&lt;li&gt;Búsqueda y filtrado en el editor&lt;/li&gt;
&lt;li&gt;Exportacion automática desde Figma&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-cerrando-la-brecha-sincronizacion-figma-a-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-cerrando-la-brecha-sincronizacion-figma-a-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Cerrando la brecha: Sincronizacion Figma a WordPress&lt;/h2&gt;
&lt;p&gt;En 2026, el flujo de trabajo entre diseño y desarrollo es fluido. La desconexión histórica entre “lo que el disenador creo” y “lo que el desarrollador construyo” ha desaparecido gracias a herramientas de sincronizacion automática.&lt;/p&gt;
&lt;h3 id=&quot;exportacion-json&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#exportacion-json&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Exportacion JSON&lt;/h3&gt;
&lt;p&gt;Los disenadores exportan sus estilos de Figma como un objeto JSON que coincide con la estructura de &lt;code&gt;theme.json&lt;/code&gt;. Este proceso puede ser manual (una exportacion periodica) o automatizado (sincronizacion continua).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flujo de trabajo de sincronizacion:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El disenador actualiza un color en Figma&lt;/li&gt;
&lt;li&gt;Un plugin de Figma exporta los tokens actualizados como JSON&lt;/li&gt;
&lt;li&gt;Un webhook dispara el pipeline CI/CD&lt;/li&gt;
&lt;li&gt;El script de compilacion actualiza &lt;code&gt;theme.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Las pruebas visuales automáticas verifican que nada se rompio&lt;/li&gt;
&lt;li&gt;El cambio se despliega a producción&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;despliegues-automatizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despliegues-automatizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despliegues automatizados&lt;/h3&gt;
&lt;p&gt;Cuando un disenador actualiza un token de color en Figma, un pipeline CI/CD puede automáticamente enviar el cambio al tema WordPress, manteniendo el sitio de producción sincronizado con el prototipo de diseño.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-sincronizacion-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-sincronizacion-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de sincronizacion 2026&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Herramienta&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Función&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Integración&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Figma Tokens Studio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Exportacion de tokens&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;JSON compatible con theme.json&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Style Dictionary&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Transformación de tokens&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Multi-plataforma (web, iOS, Android)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;CI/CD automático&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Despliegue tras cambio de tokens&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Chromatic&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pruebas visuales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Verificación post-actualización&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;documentación-viva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#documentación-viva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Documentación viva&lt;/h3&gt;
&lt;p&gt;El sistema de diseño genera automáticamente su propia documentación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Página de catálogo de componentes dentro de WordPress&lt;/li&gt;
&lt;li&gt;Guia de uso para cada patron con ejemplos interactivos&lt;/li&gt;
&lt;li&gt;Changelog automático de cambios visuales&lt;/li&gt;
&lt;li&gt;Comparaciones visuales antes/despues de cada actualización&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-accesibilidad-como-pilar-del-sistema-de-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-accesibilidad-como-pilar-del-sistema-de-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Accesibilidad como pilar del sistema de diseño&lt;/h2&gt;
&lt;p&gt;Un sistema de diseño en 2026 no esta completo sin accesibilidad integrada desde la base. Cada componente debe ser accesible por defecto, no como un complemento posterior.&lt;/p&gt;
&lt;h3 id=&quot;contraste-de-color-automático&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contraste-de-color-automático&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contraste de color automático&lt;/h3&gt;
&lt;p&gt;Los design tokens incluyen verificación automática de contraste WCAG:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada combinación de color de texto/fondo se verifica&lt;/li&gt;
&lt;li&gt;Alertas automáticas si el contraste es insuficiente&lt;/li&gt;
&lt;li&gt;Sugerencias de colores alternativos que mantienen la identidad de marca&lt;/li&gt;
&lt;li&gt;Modo de alto contraste generado automáticamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;componentes-accesibles-por-defecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#componentes-accesibles-por-defecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Componentes accesibles por defecto&lt;/h3&gt;
&lt;p&gt;Cada bloque personalizado incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Roles ARIA apropiados&lt;/li&gt;
&lt;li&gt;Navegación por teclado completa&lt;/li&gt;
&lt;li&gt;Textos alternativos obligatorios para imágenes&lt;/li&gt;
&lt;li&gt;Etiquetas descriptivas para elementos interactivos&lt;/li&gt;
&lt;li&gt;Skip links integrados en la navegación&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pruebas-de-accesibilidad-automatizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-accesibilidad-automatizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de accesibilidad automatizadas&lt;/h3&gt;
&lt;p&gt;Integradas en el pipeline de CI/CD:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lighthouse Accessibility audit en cada despliegue&lt;/li&gt;
&lt;li&gt;axe-core para deteccion de problemas ARIA&lt;/li&gt;
&lt;li&gt;Pruebas de navegación por teclado automatizadas&lt;/li&gt;
&lt;li&gt;Verificación de contraste en todos los temas (claro, oscuro, alto contraste)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-rendimiento-del-sistema-de-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-rendimiento-del-sistema-de-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Rendimiento del sistema de diseño&lt;/h2&gt;
&lt;p&gt;Un sistema de diseño mal optimizado puede ser más lento que el desarrollo ad-hoc. La eficiencia de rendimiento debe ser un requisito no negociable.&lt;/p&gt;
&lt;h3 id=&quot;css-crítico-automático&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-crítico-automático&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS crítico automático&lt;/h3&gt;
&lt;p&gt;Gutenberg en 2026 genera CSS crítico automáticamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo los estilos de los bloques presentes en la página se cargan&lt;/li&gt;
&lt;li&gt;CSS crítico inlineado en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; para render instantaneo&lt;/li&gt;
&lt;li&gt;CSS restante cargado de forma asincrona&lt;/li&gt;
&lt;li&gt;Eliminacion automática de estilos no utilizados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;carga-de-bloques-bajo-demanda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#carga-de-bloques-bajo-demanda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Carga de bloques bajo demanda&lt;/h3&gt;
&lt;p&gt;Los bloques personalizados se cargan solo cuando son necesarios:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Solo cargar el JS del bloque si esta presente en la página&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; conditionally_load_block_assets&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/product-comparison&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product-comparison-block&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;enqueue_block_assets&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;conditionally_load_block_assets&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;presupuesto-de-rendimiento-por-componente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#presupuesto-de-rendimiento-por-componente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Presupuesto de rendimiento por componente&lt;/h3&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Componente&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CSS max&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;JS max&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Imágenes&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Hero Header&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1 imagen optimizada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tarjeta de servicio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1 icono SVG&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Carrusel&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.5KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3KB (lazy)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;N imágenes lazy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tabla comparativa&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;FAQ Accordion&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.5KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-por-que-wppoland-es-su-socio-de-sistemas-de-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-por-que-wppoland-es-su-socio-de-sistemas-de-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Por que WPPoland es su socio de sistemas de diseño&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, no solo “disenamos temas”. Arquitectamos sistemas que escalan y perduran.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura modular de theme.json&lt;/strong&gt;: Construimos archivos de configuración complejos que son fáciles de mantener para su equipo interno. Cada aspecto del sistema esta documentado y organizado para independencia operativa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bibliotecas de patrones personalizados&lt;/strong&gt;: Creamos bibliotecas exhaustivas de componentes de marca que empoderan a su equipo de marketing para construir páginas en minutos sin comprometer la calidad visual.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Auditorias de Gutenberg empresarial&lt;/strong&gt;: Ayudamos a organizaciónes a migrar de Page Builders pesados como Elementor a la arquitectura limpia y escalable de Gutenberg moderno. El resultado es un sitio más rápido, más seguro y más fácil de mantener.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Capacitacion de equipos&lt;/strong&gt;: Entrenamos a sus editores y desarrolladores en el uso efectivo del sistema de diseño, asegurando adopcion completa y uso consistente.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-escalar-sin-comprometer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-escalar-sin-comprometer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: Escalar sin comprometer&lt;/h2&gt;
&lt;p&gt;Un sistema de diseño escalable es la diferencia entre una presencia digital fragmentada y una experiencia de marca unificada. En 2026, WordPress y Gutenberg proporcionan las herramientas para hacer cumplir la consistencia mientras permiten la flexibilidad creativa.&lt;/p&gt;
&lt;p&gt;Al dominar el flujo de trabajo &lt;strong&gt;theme.json + Patterns&lt;/strong&gt;, asegura que el futuro digital de su organización sea tanto bello como gestionable. La inversión en un sistema de diseño solido se paga sola a través de mayor velocidad de ejecucion, menor deuda de diseño y una experiencia de marca consistente que construye confianza con cada interacción.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para construir su sistema de diseño en WordPress? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para arquitectar su futuro Gutenberg hoy.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Arquitectura empresarial de temas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Modernizacion de sistemas visuales&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento de sistemas de diseño&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Mantenimiento continuo de componentes&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Sistemas de diseño en arquitecturas headless&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>design</category><category domain="tag">design-systems</category><category domain="tag">gutenberg</category><category domain="tag">theme-json</category><category domain="tag">block-patterns</category><category domain="tag">enterprise-wordpress</category><enclosure url="https://wppoland.com/images/og/software-developers-networking.jpg" type="image/jpeg"/></item><item><title>Los 7 mejores constructores web SaaS en 2026: Clasificados y analizados</title><link>https://wppoland.com/es/best-saas-website-builders-2026-comparison/</link><guid isPermaLink="true">https://wppoland.com/es/best-saas-website-builders-2026-comparison/</guid><description>Busca el mejor constructor de sitios web SaaS en 2026? Esta comparación de más de 2500 palabras analiza Framer, Webflow, WordPress y más basandose en necesidades específicas de SaaS.</description><pubDate>Mon, 15 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, el sitio web de marketing de una empresa SaaS ya no es un “folleto digital” estatico. Es un motor de conversión dinámico. Necesita cargar en milisegundos, integrarse con su CRM (HubSpot/Salesforce) y proporcionar un camino fluido de “visitante” a “usuario de prueba”.&lt;/p&gt;
&lt;p&gt;Elegir el constructor equivocado puede generar “Deuda Técnica” que frena a su equipo de marketing durante años. En &lt;strong&gt;WPPoland&lt;/strong&gt;, hemos analizado el panorama de 2026 para clasificar los 7 mejores constructores específicamente para las necesidades de empresas de software como servicio.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-framer-el-campeon-de-velocidad-de-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-framer-el-campeon-de-velocidad-de-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Framer (El campeon de velocidad de diseño)&lt;/h2&gt;
&lt;p&gt;Framer ha tomado por asalto el mundo SaaS en 2026, convirtiendose en la opción predilecta de startups en etapas tempranas que priorizan la velocidad de lanzamiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortaleza principal&lt;/strong&gt;: Importacion directa desde Figma. La mayoria de los disenadores SaaS ya trabajan en Figma; Framer les permite publicar sus diseños sin un desarrollador intermediario. Esta eliminación de friccion entre diseño e implementación es revolucionaria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja SaaS&lt;/strong&gt;: Velocidad de llegada al mercado. Si necesita probar una nueva página de precios para un lanzamiento Serie B, puede hacerlo en horas, no en dias. La iteracion rápida es la moneda de las startups, y Framer la maximiza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Alojado en el edge por defecto, asegurando entrega global rápida sin configuración adicional. Los sitios Framer tipicamente alcanzan puntuaciones Lighthouse de 85-95 sin optimización manual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: Funcionalidades CMS limitadas, sin e-commerce nativo, opciones de SEO avanzado restringidas, y dependencia total de la plataforma (vendor lock-in).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-webflow-la-potencia-del-desarrollador-visual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-webflow-la-potencia-del-desarrollador-visual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Webflow (La potencia del desarrollador visual)&lt;/h2&gt;
&lt;p&gt;Webflow es la opción madura para empresas SaaS que han superado la etapa “semilla” y necesitan capacidades más sofisticadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortaleza principal&lt;/strong&gt;: CMS y lógica robustos. A diferencia de constructores más simples, Webflow permite construir relaciones complejas entre tipos de contenido (ej., vincular Funcionalidades a Casos de Uso específicos). Esta flexibilidad de modelado de datos es invaluable para sitios de marketing SaaS complejos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja SaaS&lt;/strong&gt;: Interacciones de alta gama. Si su SaaS requiere animaciones complejas basadas en scroll para explicar conceptos técnicos, Webflow es la mejor herramienta para el trabajo. Las posibilidades de storytelling visual son practicamente ilimitadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Bueno para sitios de tamaño medio, pero puede degradarse con sitios muy grandes o con muchas interacciones. El JS generado puede ser pesado si no se gestiona cuidadosamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: Costo alto a escala, curva de aprendizaje pronunciada, ecosistema de integraciones limitado comparado con WordPress, y migración costosa si decide cambiar de plataforma.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-wordpress--gutenberg-el-lider-en-seo-y-escalabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-wordpress--gutenberg-el-lider-en-seo-y-escalabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. WordPress + Gutenberg (El lider en SEO y escalabilidad)&lt;/h2&gt;
&lt;p&gt;WordPress en 2026 esta muy lejos de sus raices como plataforma de “blogging”. Es ahora un framework modular de construccion de sitios que combina flexibilidad total con rendimiento excepcional.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortaleza principal&lt;/strong&gt;: Propiedad y ecosistema. Usted es dueno de su código al 100%. Sin dependencia de plataforma SaaS. Este control total permite optimizaciones que simplemente no son posibles en plataformas cerradas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja SaaS&lt;/strong&gt;: Autoridad de contenido. Si su estrategia de crecimiento SaaS se basa en SEO dominante y experiencia de largo formato (E-E-A-T), WordPress es imbatible. Ningun otro constructor ofrece el mismo nivel de control sobre cada señal SEO.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion WPPoland&lt;/strong&gt;: Usamos un stack “WordPress Lean” que supera a Framer y Webflow en Core Web Vitals. Combinando WordPress headless con Astro 5, logramos tiempos de carga de 0.5 segundos con 100/100 en todas las metricas de Lighthouse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Con la arquitectura correcta, WordPress es la opción más rápida. El control total sobre el stack permite optimizaciones que las plataformas cerradas no pueden igualar.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-typedream-el-constructor-simple-tipo-notion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-typedream-el-constructor-simple-tipo-notion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Typedream (El constructor simple tipo Notion)&lt;/h2&gt;
&lt;p&gt;Para equipos SaaS en etapas muy tempranas o aquellos construyendo landing pages especializadas que necesitan velocidad de ejecucion sobre todo lo demas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortaleza principal&lt;/strong&gt;: Velocidad. Se siente como escribir en Notion. La interfaz es tan intuitiva que literalmente cualquier persona puede crear una página funcional en minutos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja SaaS&lt;/strong&gt;: Perfecto para páginas de “Lista de espera” o sitios MVP simples donde la complejidad de diseño es secundaria al testing de mensajes. Si necesita validar una idea antes de invertir en un sitio completo, Typedream es ideal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: Sin CMS real, sin capacidades avanzadas de SEO, sin integraciones profundas. Es una herramienta temporal, no una solución a largo plazo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-hubspot-cms-hub-la-opción-todo-en-uno-para-crecimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-hubspot-cms-hub-la-opción-todo-en-uno-para-crecimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. HubSpot CMS Hub (La opción todo-en-uno para crecimiento)&lt;/h2&gt;
&lt;p&gt;Si su SaaS esta fuertemente invertido en el ecosistema HubSpot, esta es una opción lógica, aunque costosa, que maximiza la sinergia entre marketing y ventas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortaleza principal&lt;/strong&gt;: Integración de datos. Su sitio web sabe exactamente lo que su CRM sabe. Esta bidireccionalidad de datos permite niveles de personalización que requeririan integraciones costosas en otras plataformas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja SaaS&lt;/strong&gt;: Personalización nativa. Puede mostrar contenido diferente a “Clientes Existentes” versus “Leads Calientes” automáticamente, sin necesidad de herramientas de terceros ni desarrollo personalizado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: Extremadamente costoso a escala ($800-$3600/mes para planes empresariales), flexibilidad de diseño limitada, vendor lock-in significativo, y SEO técnico restringido.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-squarespace-la-opción-nivel-entrada-para-micro-saas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-squarespace-la-opción-nivel-entrada-para-micro-saas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Squarespace (La opción “nivel entrada” para micro-SaaS)&lt;/h2&gt;
&lt;p&gt;Squarespace 2026 ha mejorado sus herramientas de desarrollo, pero sigue siendo una herramienta para operaciones pequeñas que priorizan estetica sobre funcionalidad avanzada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortaleza principal&lt;/strong&gt;: Estetica lista para usar. Los templates de Squarespace son visualmente atractivos desde el primer momento, sin necesidad de personalización significativa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja SaaS&lt;/strong&gt;: Sin mantenimiento. Nunca tiene que preocuparse por una actualización de plugin rompiendo su sitio. Excelente para fundadores solitarios que necesitan un sitio profesional sin la carga de mantenimiento técnico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: Opciones de personalización muy limitadas, sin API robusta, rendimiento mediocre bajo carga, y opciones de SEO básicas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-dora-el-especialista-en-interacciones-3d&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-dora-el-especialista-en-interacciones-3d&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Dora (El especialista en interacciones 3D)&lt;/h2&gt;
&lt;p&gt;Un recién llegado que gana equipos SaaS que quieren una superficie de marketing 3D-first para diferenciarse del look de plantilla Webflow que domina las landing pages de Series A en 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortaleza principal&lt;/strong&gt;: Animaciones 3D e inmersivas. Para productos que son visualmente complejos, Dora permite crear experiencias de producto directamente en el sitio de marketing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventaja SaaS&lt;/strong&gt;: Si su SaaS es IA-nativo o proporciona visualización 3D, Dora le permite mostrar esa experiencia de producto directamente en el sitio de marketing de una manera inmersiva que ninguna otra herramienta puede igualar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: SEO básico, curva de aprendizaje alta, ecosistema inmaduro, y no adecuado para sitios con mucho contenido textual.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;matriz-de-comparación-técnica-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#matriz-de-comparación-técnica-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Matriz de comparación técnica 2026&lt;/h2&gt;





























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Constructor&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Etapa objetivo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Poder SEO&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Profundidad interactiva&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;TCO (3 años)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Framer&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Semilla / Serie A&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio/Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Webflow&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Serie B / Crecimiento&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extrema&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WordPress&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Crecimiento / Empresa&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extremo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo/Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;HubSpot&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;SaaS impulsado por ventas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Typedream&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pre-semilla / MVP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Squarespace&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Micro-SaaS / Solo founder&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Dora&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;IA / SaaS 3D&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo/Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Inmersiva&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-claves-para-el-éxito-de-un-sitio-web-saas-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-claves-para-el-éxito-de-un-sitio-web-saas-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4 claves para el éxito de un sitio web SaaS en 2026&lt;/h2&gt;
&lt;h3 id=&quot;1-el-factor-interaction-to-next-paint-inp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-factor-interaction-to-next-paint-inp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El factor Interaction to Next Paint (INP)&lt;/h3&gt;
&lt;p&gt;Google no solo se preocupa por lo rápido que carga su página, sino por lo rápido que &lt;em&gt;reacciona&lt;/em&gt;. Si un usuario hace clic en su boton “Iniciar prueba gratuita” y hay un retraso de 200ms mientras se ejecuta un script del constructor, su tasa de conversión cae significativamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparativa de INP:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Webflow&lt;/strong&gt; y &lt;strong&gt;Framer&lt;/strong&gt; han mejorado, pero un setup &lt;strong&gt;WordPress Lean&lt;/strong&gt; todavia ofrece el control más ajustado sobre INP gracias al control total del JavaScript ejecutado.&lt;/li&gt;
&lt;li&gt;INP objetivo para maxima conversión: &amp;#x3C; 100ms&lt;/li&gt;
&lt;li&gt;Cada 50ms adicionales de INP reducen la conversión en aproximadamente un 3%&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-e-e-a-t-y-autoridad-de-búsqueda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-e-e-a-t-y-autoridad-de-búsqueda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. E-E-A-T y autoridad de búsqueda&lt;/h3&gt;
&lt;p&gt;El marketing SaaS ya no se trata de palabras clave; se trata de &lt;strong&gt;Autoridad&lt;/strong&gt;. Los motores de búsqueda en 2026 evaluan la credibilidad de su marca antes de posicionar su contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requisitos para autoridad SEO en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Su constructor debe soportar integración profunda de schema&lt;/li&gt;
&lt;li&gt;Perfiles de autor, citaciones primarias y señales de “Verificado por” son ahora obligatorios para SEO SaaS&lt;/li&gt;
&lt;li&gt;Contenido largo y profundo que demuestre experiencia real&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO semántico&lt;/a&gt; con entidades y grafos de conocimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-personalización-y-capas-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-personalización-y-capas-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Personalización y capas de IA&lt;/h3&gt;
&lt;p&gt;La mayoria de los constructores en 2026 ofrecen una “Capa de IA” que permite personalizar la experiencia del usuario en tiempo real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo&lt;/strong&gt;: Un visitante desde una IP de “Salud” deberia ver automáticamente el “Caso de Uso de Salud” en su página principal. Esta personalización contextual puede aumentar las conversiones en un 20-40%.&lt;/p&gt;
&lt;p&gt;WordPress maneja esto mejor via integraciones de código abierto (ej., Logic Hop), mientras que Webflow/Framer frecuentemente requieren herramientas de terceros costosas como Mutiny que pueden costar $30K+ anuales.&lt;/p&gt;
&lt;h3 id=&quot;4-propiedad-de-datos-la-pesadilla-del-re-platforming&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-propiedad-de-datos-la-pesadilla-del-re-platforming&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Propiedad de datos (La pesadilla del re-platforming)&lt;/h3&gt;
&lt;p&gt;El mayor error que cometen los fundadores SaaS es elegir un constructor propietario (SaaS) y luego necesitar “graduarse” a un sistema más poderoso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El costo real del re-platforming:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mover de &lt;strong&gt;Webflow a WordPress&lt;/strong&gt; es un proceso costoso y manual ($15K - $50K)&lt;/li&gt;
&lt;li&gt;Se pierden semanas o meses de productividad del equipo de marketing&lt;/li&gt;
&lt;li&gt;Hay riesgo de perdida de SEO durante la transicion&lt;/li&gt;
&lt;li&gt;Comenzar en &lt;strong&gt;WordPress&lt;/strong&gt; significa que puede escalar de $1M ARR a $100M ARR en la misma plataforma sin necesidad de una re-plataformizacion completa&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;análisis-de-costos-a-3-años&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-de-costos-a-3-años&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis de costos a 3 años&lt;/h2&gt;
&lt;h3 id=&quot;escenario-saas-en-crecimiento-serie-a-a-serie-b&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-saas-en-crecimiento-serie-a-a-serie-b&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario: SaaS en crecimiento (Serie A a Serie B)&lt;/h3&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Framer&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Webflow&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plataforma&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$3,600&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$7,200&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Hosting/CDN&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$3,600&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Desarrollo inicial&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$5,000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$15,000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$20,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Mantenimiento anual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$2,000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$5,000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$6,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Herramientas SEO&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$3,600&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$3,600&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$1,200&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Re-platform (si necesario)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$25,000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$30,000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total 3 años&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$39,200&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$60,800&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$30,800&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El ahorro con WordPress se amplifica significativamente si consideramos que no hay riesgo de re-platforming y que el crecimiento del SEO es significativamente mayor gracias al control total sobre la arquitectura técnica.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-que-wppoland-se-especializa-en-wordpress-para-saas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-wppoland-se-especializa-en-wordpress-para-saas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que WPPoland se especializa en WordPress para SaaS&lt;/h2&gt;
&lt;p&gt;Mientras admiramos la velocidad de diseño de Framer, construimos exclusivamente en &lt;strong&gt;WordPress Optimizado&lt;/strong&gt; por razones fundamentales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Usamos Astro 5 con WordPress para obtener tiempos de carga de 0.5s, superando consistentemente a Framer y Webflow en benchmarks reales.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SEO&lt;/strong&gt;: WordPress sigue siendo la única plataforma con 100% de control sobre cada señal SEO. Para SaaS cuyo crecimiento depende del tráfico organico, esto es invaluable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Costo&lt;/strong&gt;: Ahorramos a nuestros clientes decenas de miles de dolares en tarifas SaaS anuales, dinero que puede invertirse en crecimiento real.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Integración&lt;/strong&gt;: Podemos conectar su sitio a cualquier backend personalizado, cualquier sistema de facturacion europeo y cualquier CRM de nicho. Las plataformas cerradas simplemente no ofrecen esta flexibilidad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Escalabilidad&lt;/strong&gt;: Nuestros clientes SaaS nunca necesitan re-plataformizar. Desde el primer dia, la arquitectura soporta crecimiento ilimitado.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion-el-veredicto-final&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-el-veredicto-final&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: El veredicto final&lt;/h2&gt;
&lt;p&gt;El “mejor” constructor depende de su etapa. Si esta en &lt;strong&gt;Pre-Semilla&lt;/strong&gt;, vaya con &lt;strong&gt;Framer&lt;/strong&gt; para velocidad maxima. Si esta en &lt;strong&gt;Serie A o Crecimiento&lt;/strong&gt;, muevase a &lt;strong&gt;WordPress&lt;/strong&gt; para construir una base solida y escalable.&lt;/p&gt;
&lt;p&gt;No permita que su tecnología de marketing se convierta en un cuello de botella. Construya sobre un sistema que recompense sus esfuerzos SEO, sea dueno de sus datos y proporcione la velocidad que sus usuarios esperan en 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para mejorar su motor de marketing SaaS? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para disenar su estrategia web.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - WordPress optimizado para SaaS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento de clase mundial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; - Autoridad de búsqueda para SaaS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Arquitecturas headless para SaaS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - E-commerce SaaS integrado&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">saas-website-builder</category><category domain="tag">startup-tools-2026</category><category domain="tag">framer-vs-webflow</category><category domain="tag">wordpress-for-saas</category><category domain="tag">conversión-optimization</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Modernizando códigos base WordPress legacy: Estrategia 2026 para sitios corporativos</title><link>https://wppoland.com/es/modernizing-legacy-wordpress-codebases-2026-strategy-guide/</link><guid isPermaLink="true">https://wppoland.com/es/modernizing-legacy-wordpress-codebases-2026-strategy-guide/</guid><description>Su sitio WordPress todavia funciona con código legacy? Esta guía de más de 2500 palabras explora estrategias de refactorizacion, estándares PHP modernos y migración a Gutenberg.</description><pubDate>Sun, 14 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, muchos sitios WordPress empresariales son “dinosaurios digitales”. Construidos entre 2015 y 2020, dependen de bibliotecas jQuery pesadas, funciones PHP obsoletas y constructores de páginas rigidos que ahora son cuellos de botella de rendimiento. Estos “códigos base legacy” no son solo lentos; son responsabilidades de seguridad y pesadillas para los desarrolladores.&lt;/p&gt;
&lt;p&gt;Sin embargo, una reconstruccion total frecuentemente es demasiado arriesgada o costosa. Aqui es donde entra la &lt;strong&gt;Orquestacion de Modernizacion&lt;/strong&gt;. En esta guía de más de 2500 palabras, analizamos el camino para tomar un sitio WordPress legacy y convertirlo en una bestia de alto rendimiento de 2026 sin perder sus datos ni su cordura.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-definiendo-la-deuda-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-definiendo-la-deuda-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Definiendo la deuda técnica&lt;/h2&gt;
&lt;p&gt;Antes de tocar una sola linea de código, debe auditar la deuda. Comprender exactamente donde se encuentran los problemas permite priorizar las intervenciones de mayor impacto.&lt;/p&gt;
&lt;h3 id=&quot;la-brecha-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-brecha-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La brecha PHP&lt;/h3&gt;
&lt;p&gt;Si todavia esta en PHP 7.4 u 8.0, esta perdiendo las ganancias masivas de rendimiento de PHP 8.3+. Cada versión mayor de PHP trae mejoras significativas en velocidad de ejecucion, uso de memoria y seguridad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejoras de rendimiento por versión PHP:&lt;/strong&gt;&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Versión PHP&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejora vs. 7.4&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Caracteristicas clave&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;8.0&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+15%&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Union types, Named arguments&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;8.1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+25%&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Enums, Fibers, readonly properties&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;8.2&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+30%&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;readonly classes, DNF types&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;8.3&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+35%&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Typed class constants, json_validate&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;la-trampa-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-trampa-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La trampa jQuery&lt;/h3&gt;
&lt;p&gt;Los sitios legacy frecuentemente cargan 5 versiones diferentes de jQuery. En 2026, el objetivo es &lt;strong&gt;Vanilla JS&lt;/strong&gt; o interacciones basadas en React. Cada kilobyte de jQuery que elimine mejora directamente su INP y LCP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problemás comunes de jQuery legacy:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiples versiones cargadas simultaneamente (conflictos)&lt;/li&gt;
&lt;li&gt;Plugins jQuery que no se usan en páginas donde se cargan&lt;/li&gt;
&lt;li&gt;Event handlers que bloquean el hilo principal&lt;/li&gt;
&lt;li&gt;Manipulación DOM ineficiente que causa layout shifts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;plugin-bloat&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugin-bloat&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugin bloat&lt;/h3&gt;
&lt;p&gt;Los sitios con 50+ plugins rara vez son eficientes. La modernizacion 2026 comienza con una “Purga de Plugins”. Frecuentemente encontramos que el 40-60% de los plugins instalados son redundantes, obsoletos o pueden reemplazarse con funcionalidad nativa de WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Auditoria de plugins:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Categoria          | Tipico | Recomendado | Ahorro&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;─────────────────────────────────────────────────────&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;SEO                | 3-4    | 1           | 70%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cache              | 2-3    | 1           | 60%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Seguridad          | 3-4    | 1-2         | 50%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Formularios        | 2-3    | 1           | 60%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Social media       | 3-5    | 0-1         | 80%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Funcionalidad misc | 15-20  | 3-5         | 75%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;─────────────────────────────────────────────────────&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Total              | 30-40  | 8-12        | 70%&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-estrategia-de-refactorizacion-el-patron-strangler-fig&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-estrategia-de-refactorizacion-el-patron-strangler-fig&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Estrategia de refactorizacion: El patron Strangler Fig&lt;/h2&gt;
&lt;p&gt;No intente cambiar todo de una vez. Use el &lt;strong&gt;Patron Strangler Fig&lt;/strong&gt; (Higuera Estranguladora), una técnica de modernizacion incremental que permite actualizar su sitio pieza por pieza sin interrumpir el funcionamiento actual.&lt;/p&gt;
&lt;h3 id=&quot;fase-1-la-actualización-del-nucleo-semanas-1-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-la-actualización-del-nucleo-semanas-1-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: La actualización del nucleo (Semanas 1-4)&lt;/h3&gt;
&lt;p&gt;Asegure que el nucleo de WordPress y toda la infraestructura esencial esten a estándares 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Checklist de actualización del nucleo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar PHP a 8.3+&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar WordPress a la última versión estable&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar MySQL a 8.0+ o MariaDB 11+&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar Redis como object cache&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Implementar HTTPS y headers de seguridad modernos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar backups automatizados y verificados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-el-cambio-progresivo-de-ui-semanas-5-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-el-cambio-progresivo-de-ui-semanas-5-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: El cambio progresivo de UI (Semanas 5-12)&lt;/h3&gt;
&lt;p&gt;Reemplace una sección de su sitio (ej., el Blog o la página de Contacto) con una arquitectura moderna basada en Gutenberg mientras el resto del sitio permanece en el sistema antiguo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de reemplazo progresivo:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Identificar la sección de menor riesgo para modernizar primero&lt;/li&gt;
&lt;li&gt;Construir la versión moderna en paralelo&lt;/li&gt;
&lt;li&gt;Probar exhaustivamente la nueva sección&lt;/li&gt;
&lt;li&gt;Activar con feature flag para control gradual&lt;/li&gt;
&lt;li&gt;Monitorear metricas de rendimiento y usuario&lt;/li&gt;
&lt;li&gt;Proceder a la siguiente sección&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-3-toma-de-control-total-semanas-13-24&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-toma-de-control-total-semanas-13-24&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Toma de control total (Semanas 13-24)&lt;/h3&gt;
&lt;p&gt;Gradualmente “estrangule” las plantillas PHP antiguas hasta que todo el sitio funcióne en el stack moderno.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-modernizacion-de-base-de-datos-el-borrón-y-cuenta-nueva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-modernizacion-de-base-de-datos-el-borrón-y-cuenta-nueva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Modernizacion de base de datos: El borrón y cuenta nueva&lt;/h2&gt;
&lt;p&gt;Una base de datos WordPress de 10 años esta llena de “basura” acumulada que degrada el rendimiento de forma significativa.&lt;/p&gt;
&lt;h3 id=&quot;limpieza-de-meta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limpieza-de-meta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limpieza de meta&lt;/h3&gt;
&lt;p&gt;Eliminamos millones de filas huerfanas en &lt;code&gt;wp_postmeta&lt;/code&gt; dejadas por plugins antiguos. Cada plugin que alguna vez estuvo instalado probablemente dejo datos residuales que nunca se limpiaron.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proceso de limpieza:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Identificar meta huerfana (sin post asociado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; COUNT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; IN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ID &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Identificar meta de plugins desinstalados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;COUNT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; count&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;GROUP BY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_key&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ORDER BY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DESC&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Limpiar revisiones excesivas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;revision&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_date &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DATE_SUB(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;NOW&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), INTERVAL &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; MONTH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;motores-de-almacenamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#motores-de-almacenamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Motores de almacenamiento&lt;/h3&gt;
&lt;p&gt;Aseguramos que todas las tablas usen &lt;strong&gt;InnoDB&lt;/strong&gt; con indexacion moderna para velocidades de consulta de sub-segundo. Tablas MyISAM antiguas se convierten con cuidado, verificando integridad de datos.&lt;/p&gt;
&lt;h3 id=&quot;gestión-de-autoload&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-autoload&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de autoload&lt;/h3&gt;
&lt;p&gt;Podamos la tabla &lt;code&gt;wp_options&lt;/code&gt; para asegurar que solo datos esenciales se carguen en cada solicitud de página. Un wp_options con 5MB de datos autoload es un problema crítico de rendimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Objetivo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;autoload = yes&lt;/code&gt; total: &amp;#x3C; 500KB (idealmente &amp;#x3C; 200KB)&lt;/li&gt;
&lt;li&gt;Transients expirados: 0&lt;/li&gt;
&lt;li&gt;Opciones de plugins desinstalados: 0&lt;/li&gt;
&lt;li&gt;Datos serializados innecesarios: eliminados&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-migración-a-css-y-js-modernos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-migración-a-css-y-js-modernos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Migración a CSS y JS modernos&lt;/h2&gt;
&lt;p&gt;Refactorizar sus activos frontend es la forma más rápida de mejorar Core Web Vitals.&lt;/p&gt;
&lt;h3 id=&quot;de-css-monolitico-a-modular&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#de-css-monolitico-a-modular&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;De CSS monolitico a modular&lt;/h3&gt;
&lt;p&gt;Reemplazamos archivos &lt;code&gt;style.css&lt;/code&gt; masivos y no optimizados con CSS moderno y con scope.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Antes (legacy):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* style.css - 500KB, todo cargado en cada página */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ... }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ... }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.blog-post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ... }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.product-grid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ... }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.contact-form&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ... }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* 10,000+ lineas... */&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Despues (moderno):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;styles/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── critical.css (5KB - inline en &amp;#x3C;head&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── components/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── header.css (cargado en todas las páginas)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── blog.css (solo en páginas de blog)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── product.css (solo en páginas de producto)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── utilities.css (clases utilitarias compartidas)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;module-bundling&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#module-bundling&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Module bundling&lt;/h3&gt;
&lt;p&gt;Usamos Vite o Webpack para empaquetar activos en chunks limpios y cacheados, eliminando el efecto “Cascada” de la carga de scripts legacy. Solo se cargan los scripts necesarios para la página actual.&lt;/p&gt;
&lt;h3 id=&quot;eliminacion-de-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminacion-de-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminacion de jQuery&lt;/h3&gt;
&lt;p&gt;El proceso de eliminación de jQuery es gradual:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Inventariar todos los usos de jQuery en el sitio&lt;/li&gt;
&lt;li&gt;Identificar plugins que dependen de jQuery&lt;/li&gt;
&lt;li&gt;Reemplazar funcionalidades simples con Vanilla JS&lt;/li&gt;
&lt;li&gt;Migrar componentes complejos a bloques React&lt;/li&gt;
&lt;li&gt;Eliminar jQuery de las dependencias&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-fortalecimiento-de-seguridad-para-sitios-antiguos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-fortalecimiento-de-seguridad-para-sitios-antiguos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Fortalecimiento de seguridad para sitios antiguos&lt;/h2&gt;
&lt;p&gt;El código legacy frecuentemente esta “agujereado”. Las vulnerabilidades de seguridad en código antiguo son uno de los vectores de ataque más comunes.&lt;/p&gt;
&lt;h3 id=&quot;escaneo-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escaneo-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escaneo automatizado&lt;/h3&gt;
&lt;p&gt;Implementamos monitoreo de seguridad de grado 2026 para detectar patrones de código legacy explotado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas de escaneo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PHPStan para análisis estatico de código PHP&lt;/li&gt;
&lt;li&gt;npm audit para dependencias JavaScript&lt;/li&gt;
&lt;li&gt;WPScan para vulnerabilidades conocidas de WordPress&lt;/li&gt;
&lt;li&gt;OWASP ZAP para pruebas de penetracion automatizadas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;bloqueo-de-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloqueo-de-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloqueo de API&lt;/h3&gt;
&lt;p&gt;Los sitios legacy frecuentemente tienen la API REST completamente abierta. Implementamos autenticación con alcance limitado para proteger sus datos.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Restringir acceso API para sitios legacy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_authentication_errors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($result) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_user_logged_in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_api_key_valid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;rest_not_authorized&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;Autenticacion requerida.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 401&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;actualización-de-dependencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualización-de-dependencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualización de dependencias&lt;/h3&gt;
&lt;p&gt;Cada biblioteca de terceros debe actualizarse o reemplazarse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Librerias PHP con vulnerabilidades conocidas&lt;/li&gt;
&lt;li&gt;Componentes JavaScript con CVEs activos&lt;/li&gt;
&lt;li&gt;Fuentes y assets cargados desde CDNs no confiables&lt;/li&gt;
&lt;li&gt;Integraciones con APIs deprecadas&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-migración-gradual-a-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-migración-gradual-a-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Migración gradual a Gutenberg&lt;/h2&gt;
&lt;h3 id=&quot;compatibilidad-tema-legacy--gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#compatibilidad-tema-legacy--gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Compatibilidad tema legacy + Gutenberg&lt;/h3&gt;
&lt;p&gt;Para temas construidos en 2015-2018, habilitamos soporte de Gutenberg incrementalmente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Habilitar soporte de bloques gradualmente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Soporte básico de bloques&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-block-styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;align-wide&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;responsive-embeds&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Paleta de colores del tema legacy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor-color-palette&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Primario&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;primary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;color&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;#1a1a2e&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Secundario&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;secondary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;color&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;#16213e&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;reemplazo-de-page-builders&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reemplazo-de-page-builders&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reemplazo de page builders&lt;/h3&gt;
&lt;p&gt;La migración desde Elementor, Divi o Visual Composer a Gutenberg sigue un proceso estructurado:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inventario&lt;/strong&gt;: Documentar cada página y su constructor actual&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Priorizacion&lt;/strong&gt;: Comenzar con páginas de mayor tráfico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversión&lt;/strong&gt;: Recrear layouts usando patrones de bloques&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación&lt;/strong&gt;: Comparar visual y funcionalmente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activacion&lt;/strong&gt;: Cambiar página por página con redirects de prueba&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpieza&lt;/strong&gt;: Desactivar el page builder legacy cuando todas las páginas esten migradas&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-metricas-de-éxito-de-modernizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-metricas-de-éxito-de-modernizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Metricas de éxito de modernizacion&lt;/h2&gt;
&lt;h3 id=&quot;kpis-técnicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kpis-técnicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;KPIs técnicos&lt;/h3&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Antes&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Objetivo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Medicion&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Lighthouse Performance&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30-50&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;90+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;PageSpeed Insights&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TTFB&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;800ms+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 200ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WebPageTest&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Consultas SQL/página&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 50&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Query Monitor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tamaño de página&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5MB+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 500KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;DevTools&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;PHP errors/dia&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Error logging&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plugins activos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;40+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10-15&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WP Admin&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;kpis-de-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kpis-de-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;KPIs de negocio&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejora esperada&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tráfico organico&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+25-40% en 6 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tasa de conversión&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+15-30%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tasa de rebote&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-20-35%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo de mantenimiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-40-60%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tiempo de desarrollo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-30-50%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-por-que-wppoland-es-su-experto-en-modernizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-por-que-wppoland-es-su-experto-en-modernizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Por que WPPoland es su experto en modernizacion&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, nos especializamos en “Rescate WordPress”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Due diligence y auditorias&lt;/strong&gt;: Proporcionamos un informe técnico profundo sobre donde su sitio legacy esta fallando, con prioridades claras y estimaciones de impacto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Despliegues incrementales&lt;/strong&gt;: Modernizamos su sitio por etapas, asegurando cero tiempo de inactividad para su negocio. Cada fase tiene sus propias metricas de éxito y criterios de aceptacion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Garantias de rendimiento&lt;/strong&gt;: No solo “arreglamos el código”; garantizamos un salto significativo en velocidad y seguridad. Si no cumplimos los objetivos acordados, trabajamos hasta lograrlo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transferencia de conocimiento&lt;/strong&gt;: Documentamos todo el proceso y capacitamos a su equipo para mantener el código modernizado de forma autonoma.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-no-deje-que-el-pasado-lo-detenga&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-no-deje-que-el-pasado-lo-detenga&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: No deje que el pasado lo detenga&lt;/h2&gt;
&lt;p&gt;Un sitio WordPress legacy es una cadena alrededor del cuello de su negocio. En 2026, el panorama competitivo se mueve demasiado rápido para sitios web lentos e inseguros. Al seguir una estrategia de modernizacion estructurada, puede proteger su inversión mientras obtiene todos los beneficios de la web moderna.&lt;/p&gt;
&lt;p&gt;La alternativa, no hacer nada, es la opción más costosa de todas. Cada dia que su sitio funciona con código legacy, pierde posiciones en búsqueda, conversiones, y credibilidad ante usuarios que esperan experiencias de 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Su sitio corporativo esta atrapado en 2018? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para una auditoria y comience su viaje hacia un código base WordPress listo para 2026.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Modernizacion empresarial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento post-modernizacion&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad para código legacy&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Modernizacion visual completa&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Arquitecturas modernas post-refactorizacion&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>enterprise</category><category domain="tag">legacy-code</category><category domain="tag">refactoring</category><category domain="tag">php-8-3</category><category domain="tag">wordpress-modernization</category><category domain="tag">technical-debt</category><enclosure url="https://wppoland.com/images/og/wordpress-debloat-optimization-guide.jpg" type="image/jpeg"/></item><item><title>Formacion de WordPress para principiantes</title><link>https://wppoland.com/es/wordpress-training-beginners-ppnt-gdynia/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-training-beginners-ppnt-gdynia/</guid><description>Unase a una formacion de 2 dias (10h) sobre los fundamentos de WordPress en PPNT Gdynia.</description><pubDate>Sun, 07 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Unase a una formacion de 2 dias (10 horas) sobre los fundamentos de WordPress realizada en PPNT Gdynia los dias 20-21 de octubre.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/dla-poczatkujacych-szkolenie-warsztat-0110-wprowadzenie-wordpressa.avif&quot; alt=&quot;Formacion de WordPress para principiantes - Introduccion&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;por-que-aprender-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-aprender-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que aprender WordPress en 2026&lt;/h2&gt;
&lt;p&gt;WordPress impulsa más del 43% de todos los sitios web del mundo. Esto no es solo una estadística: significa que las habilidades de WordPress son relevantes para casí la mitad de internet. Ya sea que quiera crear un blog personal, lanzar un negocio en linea, o iniciar una carrera en desarrollo web, WordPress es el punto de partida más lógico.&lt;/p&gt;
&lt;h3 id=&quot;ventajas-de-wordpress-sobre-otras-plataformas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-de-wordpress-sobre-otras-plataformas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas de WordPress sobre otras plataformas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Código abierto y gratuito&lt;/strong&gt;: Sin costos de licencia, con acceso completo al código fuente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosistema masivo&lt;/strong&gt;: Mas de 60,000 plugins y miles de temas disponibles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidad global&lt;/strong&gt;: Millones de desarrolladores y usuarios que comparten conocimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexibilidad&lt;/strong&gt;: Desde blogs simples hasta tiendas de comercio electronico complejas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demanda laboral&lt;/strong&gt;: Las habilidades de WordPress son constantemente solicitadas en el mercado&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;temás-de-la-formacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#temás-de-la-formacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Temás de la formacion&lt;/h2&gt;
&lt;p&gt;Los temas cubiertos en esta formacion incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Introduccion a WordPress&lt;/strong&gt; - Que es y como navegar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Front-end/back-end&lt;/strong&gt; - Entender los elementos estándar de un sitio web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creando su primer blog&lt;/strong&gt; - Jerarquía de páginas, plantillas, optimización de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construyendo menús, agregando medios&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sidebars y widgets, CSS, temas responsivos, plugins&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;agenda-del-dia-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agenda-del-dia-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agenda del dia 1&lt;/h2&gt;









































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Hora&lt;/th&gt;&lt;th&gt;Tema&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;15:00-15:45&lt;/td&gt;&lt;td&gt;Sobre mi, Objetivos de la formacion, Que aprendera&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Parte I: Introduccion a WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Que es CMS, Que es WordPress, Historia de WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Por que elegir WordPress? WordPress en números&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;WordPress vs la competencia, WordPress.org vs WordPress.com&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16:00-16:45&lt;/td&gt;&lt;td&gt;La vida del webmaster comienza - WordPress en su propio hosting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Que necesitamos? Arquitectura simplificada de WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;7 pecados capitales durante la instalación de WP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;17:00-17:45&lt;/td&gt;&lt;td&gt;Que es que y como navegar WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Pasos de instalación, Instalando en su propio hosting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Configurando FTP con Total Commander&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;18:00-18:45&lt;/td&gt;&lt;td&gt;Optimizando nuestro sitio!&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Nombre de dominio, nombre del blog y subtitulo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Fundamentos de copywriting, Poder de los enlaces, Plugins SEO&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;19:00-20:00&lt;/td&gt;&lt;td&gt;Configuración + Medios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Construccion de menús, Agregar fotos, Crear galerias&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;agenda-del-dia-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agenda-del-dia-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agenda del dia 2&lt;/h2&gt;









































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Hora&lt;/th&gt;&lt;th&gt;Tema&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;15:00-15:45&lt;/td&gt;&lt;td&gt;Interior, Plantillas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Posts, categorías, como agrupar posts efectivamente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Páginas - jerarquía, plantillas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Donde conseguir su primera plantilla&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16:00-16:45&lt;/td&gt;&lt;td&gt;Sidebars, Widgets, Temas, HTML5+CSS3, Responsividad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Como elegir el mejor tema?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;17:00-17:45&lt;/td&gt;&lt;td&gt;Plugins&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Resena de los plugins más populares&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Donde conseguir plugins, Vale la pena gastar $$$?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Pantalla blanca de la muerte&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;18:00-18:45&lt;/td&gt;&lt;td&gt;Diferentes casos de CMS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Migrando de wordpress.com a autoalojado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Temás hijo, Respaldos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;19:00-20:00&lt;/td&gt;&lt;td&gt;Uso intermedio de WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Tipos de post personalizados, Taxonomías, Campos personalizados&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Seguridad, Analiticas, Optimización&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;lo-que-aprendera-en-detalle&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-aprendera-en-detalle&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que aprendera en detalle&lt;/h2&gt;
&lt;h3 id=&quot;dia-1-fundamentos-solidos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dia-1-fundamentos-solidos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dia 1: Fundamentos solidos&lt;/h3&gt;
&lt;p&gt;El primer dia se centra en construir una base solida. Comenzaremos entendiendo que es WordPress y por que domina el mercado de CMS. Luego pasaremos a la práctica con la instalación en su propio hosting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instalación profesional de WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La instalación correcta es fundamental. Muchos problemas futuros se originan en una instalación mal configurada. Cubriremos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Eleccion de hosting&lt;/strong&gt;: Que buscar en un proveedor de hosting para WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuración de dominio&lt;/strong&gt;: Como conectar su dominio con su hosting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instalación limpia&lt;/strong&gt;: Paso a paso, sin atajos que causen problemas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuración inicial&lt;/strong&gt;: Permalinks, zona horaria, idioma, roles de usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Primeros plugins esenciales&lt;/strong&gt;: Seguridad, SEO, respaldos&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;los-7-pecados-capitales-de-la-instalación-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-7-pecados-capitales-de-la-instalación-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los 7 pecados capitales de la instalación de WordPress&lt;/h3&gt;
&lt;p&gt;Errores que vemos constantemente en sitios nuevos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prefijo de tabla predeterminado&lt;/strong&gt;: Usar &lt;code&gt;wp_&lt;/code&gt; facilita los ataques SQL injection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usuario “admin”&lt;/strong&gt;: El primer nombre que los bots intentan al atacar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasena debil&lt;/strong&gt;: “password123” sigue siendo sorprendentemente comun&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin SSL&lt;/strong&gt;: Un sitio sin HTTPS en 2026 es inaceptable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permalinks por defecto&lt;/strong&gt;: Las URLs con &lt;code&gt;?p=123&lt;/code&gt; perjudican el SEO&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin respaldo inicial&lt;/strong&gt;: Comenzar sin plan de respaldos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demasiados plugins&lt;/strong&gt;: Instalar 30 plugins sin evaluar la necesidad&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;dia-2-crecimiento-y-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dia-2-crecimiento-y-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dia 2: Crecimiento y optimización&lt;/h3&gt;
&lt;p&gt;El segundo dia eleva el nivel. Aprenderemos a personalizar WordPress más alla de los ajustes básicos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seleccion de temas profesionales:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No todos los temas son iguales. Evaluaremos temas basandonos en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Velocidad de carga y optimización de código&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones&lt;/strong&gt;: Frecuencia de actualizaciones y soporte activo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compatibilidad&lt;/strong&gt;: Con plugins populares como WooCommerce y Elementor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responsividad&lt;/strong&gt;: Comportamiento en dispositivos móviles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accesibilidad&lt;/strong&gt;: Cumplimiento de estándares WCAG&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Plugins esenciales para cada sitio WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Wordfence o Solid Security&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: Yoast SEO o Rank Math&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: WP Rocket o LiteSpeed Cache&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respaldos&lt;/strong&gt;: UpdraftPlus o Duplicator&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios&lt;/strong&gt;: Contact Form 7 o WPForms&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;temás-intermedios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#temás-intermedios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Temás intermedios&lt;/h3&gt;
&lt;p&gt;Para los participantes que avanzan más rápido, cubriremos conceptos intermedios:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de post personalizados (CPT):&lt;/strong&gt;
Los CPT permiten crear estructuras de contenido más alla de posts y páginas. Por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Portfolios&lt;/li&gt;
&lt;li&gt;Testimonios&lt;/li&gt;
&lt;li&gt;Productos&lt;/li&gt;
&lt;li&gt;Eventos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Taxonomías personalizadas:&lt;/strong&gt;
Formás adicionales de organizar contenido, como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Industrias&lt;/li&gt;
&lt;li&gt;Ubicaciones&lt;/li&gt;
&lt;li&gt;Niveles de habilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Campos personalizados con ACF:&lt;/strong&gt;
Advanced Custom Fields (ACF) permite agregar campos de datos específicos a cualquier tipo de contenido, como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precios&lt;/li&gt;
&lt;li&gt;Fechas de evento&lt;/li&gt;
&lt;li&gt;Coordenadas de mapa&lt;/li&gt;
&lt;li&gt;Galerias de imágenes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;quien-deberia-asistir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#quien-deberia-asistir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Quien deberia asistir&lt;/h2&gt;
&lt;p&gt;Esta formacion es ideal para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Emprendedores&lt;/strong&gt; que quieren crear su propio sitio web sin depender de desarrolladores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profesionales de marketing&lt;/strong&gt; que necesitan gestionar contenido web de forma autonoma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blogueros&lt;/strong&gt; que quieren iniciar con el pie derecho&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disenadores graficos&lt;/strong&gt; que quieren expandir sus servicios al desarrollo web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estudiantes&lt;/strong&gt; interesados en iniciar una carrera en desarrollo web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Propietarios de pequeñas empresas&lt;/strong&gt; que necesitan una presencia web profesional&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;despues-de-la-formacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despues-de-la-formacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despues de la formacion&lt;/h2&gt;
&lt;p&gt;Al completar la formacion, estará equipado para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instalar y configurar WordPress de forma profesional&lt;/li&gt;
&lt;li&gt;Crear y gestionar contenido efectivamente&lt;/li&gt;
&lt;li&gt;Elegir e instalar temas y plugins adecuados&lt;/li&gt;
&lt;li&gt;Implementar optimización básica de SEO&lt;/li&gt;
&lt;li&gt;Mantener su sitio seguro y actualizado&lt;/li&gt;
&lt;li&gt;Soluciónar problemas comunes de forma independiente&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;recursos-de-aprendizaje-continuo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-de-aprendizaje-continuo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos de aprendizaje continuo&lt;/h3&gt;
&lt;p&gt;El aprendizaje no termina con la formacion. Recomendamos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress.org/documentation&lt;/strong&gt;: Documentación oficial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress Developer Handbook&lt;/strong&gt; (developer.wordpress.org): Manual oficial para desarrolladores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress.tv&lt;/strong&gt;: Videos de WordCamps y conferencias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nuestro blog&lt;/strong&gt;: Artículos técnicos y guías avanzadas en &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;WPPoland&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;comunidad-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comunidad-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comunidad WordPress&lt;/h3&gt;
&lt;p&gt;WordPress tiene una de las comunidades más activas y acogedoras en tecnología:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordCamps&lt;/strong&gt;: Conferencias locales y regionales en todo el mundo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meetups&lt;/strong&gt;: Encuentros mensuales de la comunidad WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foros de soporte&lt;/strong&gt;: Ayuda gratuita de la comunidad en WordPress.org&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grupos de Slack&lt;/strong&gt;: Canales dedicados por idioma y tema&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;proximos-pasos-despues-de-dominar-los-fundamentos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proximos-pasos-despues-de-dominar-los-fundamentos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proximos pasos despues de dominar los fundamentos&lt;/h2&gt;
&lt;p&gt;Una vez que domine los fundamentos de WordPress, puede especializarse en areas de alta demanda:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Desarrollo de temas&lt;/strong&gt;: Crear temas personalizados desde cero&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrollo de plugins&lt;/strong&gt;: Construir funcionalidades personalizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WooCommerce&lt;/strong&gt;: Comercio electronico con WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO avanzado&lt;/strong&gt;: Optimización técnica y de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Optimización de velocidad y Core Web Vitals&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esta formacion integral es perfecta para principiantes que quieren comenzar su viaje con WordPress con una base solida y las herramientas necesarias para seguir creciendo.&lt;/p&gt;</content:encoded><category>wordpress</category><category domain="tag">ai</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/ppnt-szkolenie-dla-poczatkujacych.jpg" type="image/jpeg"/></item><item><title>Construir y monetizar una comunidad WordPress</title><link>https://wppoland.com/es/blueprint-business-growth-wordpress-community/</link><guid isPermaLink="true">https://wppoland.com/es/blueprint-business-growth-wordpress-community/</guid><description>Aprenda a construir una comunidad WordPress para el crecimiento empresarial con BuddyBoss, FluentCommunity y estrategias de monetizacion probadas. Sea dueno de su audiencia y escape de los cambios de algoritmo.</description><pubDate>Fri, 05 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En el panorama digital actual, los sitios web estaticos estan perdiendo terreno frente a centros dinámicos e interactivos. Para desarrolladores, agencias y propietarios de negocios, la siguiente frontera no es solo publicar contenido, sino cultivar una tribu. Construir una comunidad WordPress para el crecimiento empresarial le permite ser dueno de su audiencia, escapar de los cambios de algoritmo de las redes sociales y crear un modelo de ingresos recurrentes sostenible.&lt;/p&gt;
&lt;p&gt;Esta guía explora los plugins específicos, estrategias y “brechas de contenido” que puede explotar para construir un ecosistema prospero en WordPress.&lt;/p&gt;
&lt;h2 id=&quot;por-que-cambiar-de-redes-sociales-a-una-comunidad-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-cambiar-de-redes-sociales-a-una-comunidad-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que cambiar de redes sociales a una comunidad WordPress?&lt;/h2&gt;
&lt;p&gt;Antes de sumergirnos en el “como”, es crucial entender el “por que” para su caso de negocio. Mientras que plataformas como Facebook o LinkedIn ofrecen alcance, carecen de propiedad. Una comunidad de membresia WordPress ofrece tres ventajas distintas para escalar negocios:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Propiedad de datos y control:&lt;/strong&gt; Usted es dueno de los datos de miembros, la lista de correo electronico y la experiencia del usuario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flexibilidad de monetizacion:&lt;/strong&gt; A diferencia de los grupos sociales donde la monetizacion se limita a anuncios o enlaces externos, WordPress permite ventas directas de cursos, membresias y productos digitales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEO y tráfico:&lt;/strong&gt; El contenido generado por usuarios (UGC) de foros y discusiones crea una huella masiva de palabras clave de cola larga, ayudandole a posicionarse para terminos como “mejores plugins para comunidades WordPress”.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Perspectiva clave:&lt;/strong&gt; Los AI Overviews de Google priorizan contenido que ofrece respuestas directas y autorizadas. Al alojar discusiones en su propio sitio, posiciona su marca como la fuente principal de verdad para su nicho.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;el-stack-tecnológico-mejores-plugins-para-comunidades-online&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-stack-tecnológico-mejores-plugins-para-comunidades-online&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El stack tecnológico: Mejores plugins para comunidades online&lt;/h2&gt;
&lt;p&gt;Elegir la infraestructura correcta es el obstaculo más comun. Basado en clasificaciónes actuales y rendimiento, estos son los principales contendientes para transformar un sitio estándar en una potencia social.&lt;/p&gt;
&lt;h3 id=&quot;buddyboss-el-estándar-de-la-industria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#buddyboss-el-estándar-de-la-industria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;BuddyBoss: El estándar de la industria&lt;/h3&gt;
&lt;p&gt;BuddyBoss se clasifica como la principal plataforma para cursos y comunidades WordPress. Esencialmente convierte su instalación WordPress en una red social funcional similar a Facebook.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejor para:&lt;/strong&gt; Vender cursos, programás de coaching e interacción social robusta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteristica destacada:&lt;/strong&gt; Se integra perfectamente con Sistemas de Gestión de Aprendizaje (LMS) como LearnDash.&lt;/p&gt;
&lt;h3 id=&quot;fluentcommunity-el-rey-de-la-velocidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fluentcommunity-el-rey-de-la-velocidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;FluentCommunity: El rey de la velocidad&lt;/h3&gt;
&lt;p&gt;Para aquellos preocupados por el engrosamiento del sitio, FluentCommunity.co es considerado un plugin &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;rápido de WordPress&lt;/a&gt; para comunidades y cursos online.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejor para:&lt;/strong&gt; Desarrolladores y agencias que necesitan una interfaz ligera y agil que no degrade las puntuaciones de PageSpeed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteristica destacada:&lt;/strong&gt; Su arquitectura moderna es a menudo preferida por usuarios técnicos que quieren evitar la “pesadez” a veces asociada con plugins de comunidad más antiguos.&lt;/p&gt;
&lt;h2 id=&quot;implementación-estrategica-como-construir-una-comunidad-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-estrategica-como-construir-una-comunidad-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación estrategica: Como construir una comunidad WordPress&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-estructura-y-configuración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-estructura-y-configuración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Estructura y configuración&lt;/h3&gt;
&lt;p&gt;No solo instale un plugin y espere lo mejor. Debe estructurar su sitio alrededor de recorridos de usuario específicos.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Definir el alcance:&lt;/strong&gt; Esta construyendo un foro de soporte, un grupo mastermind o una red social?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instalación:&lt;/strong&gt; Instale su plugin elegido (ej. BuddyBoss o FluentCommunity).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración:&lt;/strong&gt; Conecte su comunidad a su CRM. Si esta apuntando a mercados europeos específicos, asegurese de que su cumplimiento GDPR y configuración de idioma sean impecables.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-2-siembra-de-contenido-y-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-siembra-de-contenido-y-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Siembra de contenido y SEO&lt;/h3&gt;
&lt;p&gt;Una estrategia integral implica apuntar a clusters de palabras clave para impulsar el tráfico inicial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de clusters:&lt;/strong&gt; Cree contenido alrededor de terminos como “construir sitio de comunidad WordPress”, “plugins WP para comunidades online” y “hacer crecer negocio con foros WordPress”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consejo de herramientas:&lt;/strong&gt; Use herramientas como SlimSEO para apuntar a estas palabras clave específicas. SlimSEO es particularmente efectivo para automatizar meta tags y schema markup, lo que ayuda a Google a entender la relación entre los temas de su foro y sus páginas principales de negocio.&lt;/p&gt;
&lt;h2 id=&quot;monetizacion-convertir-engagement-en-ingresos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monetizacion-convertir-engagement-en-ingresos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monetizacion: Convertir engagement en ingresos&lt;/h2&gt;
&lt;p&gt;Una de las preguntas más frecuentes es “Como monetizar una comunidad WordPress?”. Aqui hay tres modelos probados para hacer crecer los ingresos del negocio a través de su comunidad.&lt;/p&gt;
&lt;h3 id=&quot;1-el-modelo-de-membresia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-modelo-de-membresia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El modelo de membresia&lt;/h3&gt;
&lt;p&gt;Bloquee su comunidad detras de un muro de pago. Puede ofrecer un area de “Vestibulo” gratuita para preguntas generales y un “Circulo Interno” premium para networking de alto nivel. Esto es ideal para agencias que ofrecen mentoria.&lt;/p&gt;
&lt;h3 id=&quot;2-integración-de-cursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-integración-de-cursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Integración de cursos&lt;/h3&gt;
&lt;p&gt;Use la comunidad como mecanismo de soporte para sus cursos. Si esta usando BuddyBoss, la integración con plugins LMS permite hacer upsell de paquetes de cursos directamente dentro del feed social.&lt;/p&gt;
&lt;h3 id=&quot;3-upsells-de-servicios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-upsells-de-servicios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Upsells de servicios&lt;/h3&gt;
&lt;p&gt;Para agencias, una comunidad es una maquina de cultivo de leads. Al responder preguntas en su propio foro, establece autoridad. Cuando un usuario tiene un problema demasiado complejo para resolver por si mismo, su agencia es el siguiente paso natural para “ajustes personalizados de WP”.&lt;/p&gt;
&lt;h2 id=&quot;conectando-mundos-estrategias-offline-y-crecimiento-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conectando-mundos-estrategias-offline-y-crecimiento-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conectando mundos: Estrategias offline y crecimiento avanzado&lt;/h2&gt;
&lt;p&gt;Para verdaderamente superar los listados genericos, necesita conectar los mundos online y offline.&lt;/p&gt;
&lt;h3 id=&quot;aprovechando-wordcamps-y-meetups&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aprovechando-wordcamps-y-meetups&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aprovechando WordCamps y meetups&lt;/h3&gt;
&lt;p&gt;Un angulo único para el crecimiento es aprovechar los recursos oficiales de Make WordPress Community para mentoria y crecimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia:&lt;/strong&gt; Organice un meetup local o hable en un WordCamp. Use su comunidad digital como “base de operaciones” para que los asistentes se mantengan conectados despues del evento.&lt;/p&gt;
&lt;h3 id=&quot;enfoque-de-caso-de-estudio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-de-caso-de-estudio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque de caso de estudio&lt;/h3&gt;
&lt;p&gt;No solo escriba tutoriales; escriba casos de estudio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El problema:&lt;/strong&gt; Un negocio generico lucha con la retencion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La solución:&lt;/strong&gt; Implementaron una estrategia de “hacer crecer negocio con foros WordPress”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El resultado:&lt;/strong&gt; Aumento del 20% en LTV (Valor de Vida del Cliente).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;optimización-para-ai-overviews-de-google-sge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-para-ai-overviews-de-google-sge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización para AI Overviews de Google (SGE)&lt;/h2&gt;
&lt;p&gt;Para asegurar que su contenido sea recogido por las instantaneas de IA de Google, estructure su contenido para responder directamente las preguntas de “People Also Ask”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pregunta:&lt;/strong&gt; “Cuales son los beneficios de una comunidad WordPress para el crecimiento empresarial?”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Respuesta:&lt;/strong&gt; Una comunidad WordPress aumenta la retencion de clientes, reduce los costos de soporte a través de asistencia entre pares y proporciona propiedad de los datos de usuario, a diferencia de las plataformas sociales de terceros.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pregunta:&lt;/strong&gt; “Cual es el mejor plugin para comunidades online?”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Respuesta:&lt;/strong&gt; BuddyBoss es la plataforma mejor clasificada para redes sociales integrales e integración de cursos, mientras que FluentCommunity es una alternativa fuerte para usuarios que priorizan la velocidad y la arquitectura ligera.&lt;/p&gt;
&lt;h2 id=&quot;conclusion-y-proximos-pasos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-y-proximos-pasos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion y proximos pasos&lt;/h2&gt;
&lt;p&gt;Construir una comunidad en WordPress ya no se trata solo de instalar un foro; es un activo estrategico para el crecimiento empresarial. Al aprovechar herramientas como FluentCommunity o BuddyBoss, optimizar con SlimSEO y llenar brechas de contenido con casos de estudio específicos (como estrategias de WordCamp o guías regionales para desarrolladores), puede construir un motor sostenible de leads e ingresos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para empezar?&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Audite:&lt;/strong&gt; Revise su tráfico actual. Si tiene alto engagement pero baja retencion, una comunidad es su siguiente paso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seleccione:&lt;/strong&gt; Elija entre BuddyBoss (funciones) o FluentCommunity (velocidad).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimice:&lt;/strong&gt; Use los clusters de palabras clave mencionados arriba para mapear sus primeros 10 artículos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y el &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio IA con WordPress&lt;/a&gt; en WPPoland. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactenos&lt;/a&gt; para construir su comunidad.&lt;/p&gt;</content:encoded><category>wordpress</category><category>business</category><category>community</category><category domain="tag">buddyboss</category><category domain="tag">fluentcommunity</category><category domain="tag">membresia</category><category domain="tag">comunidad-wordpress</category><category domain="tag">monetizacion</category><category domain="tag">crecimiento-empresarial</category><enclosure url="https://wppoland.com/images/og/wordpress-community-blueprint-growth.jpg" type="image/jpeg"/></item><item><title>ROI de WordPress headless vs. tradicional: Análisis financiero 2026</title><link>https://wppoland.com/es/headless-wordpress-vs-traditional-roi-analysis-2026/</link><guid isPermaLink="true">https://wppoland.com/es/headless-wordpress-vs-traditional-roi-analysis-2026/</guid><description>Headless esta de moda, pero es rentable? Desglosamos los costes reales de Next.js + WordPress vs. temas PHP. Una guía pensada para CFOs.</description><pubDate>Fri, 05 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;WordPress headless es la tendencia más discutida en el ecosistema WordPress en 2026. Pero detras del entusiasmo tecnológico hay una pregunta que todo CFO y CTO deberia hacer: es realmente rentable? Esta guía proporciona un análisis financiero riguroso comparando WordPress headless (con Next.js o Astro como frontend) contra WordPress tradicional (con temas PHP clásicos).&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a arquitecturas modernas&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;1-que-es-wordpress-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-que-es-wordpress-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Que es WordPress Headless&lt;/h2&gt;
&lt;p&gt;En una arquitectura headless, WordPress funciona exclusivamente como backend de contenido. No genera HTML para los visitantes. En su lugar, expone contenido a través de su REST API o WPGraphQL, y un frontend separado (construido con Next.js, Astro, Nuxt o similar) consume esos datos y genera las páginas que ven los usuarios.&lt;/p&gt;
&lt;h3 id=&quot;arquitectura-tradicional-vs-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-tradicional-vs-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura tradicional vs. headless&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;WordPress tradicional:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Usuario -&gt; CDN -&gt; WordPress (PHP genera HTML) -&gt; Base de datos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;WordPress headless:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Usuario -&gt; CDN -&gt; Frontend (Astro/Next.js genera HTML) -&gt; WordPress API -&gt; Base de datos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La separacion del frontend y el backend ofrece ventajas de rendimiento, seguridad y flexibilidad, pero anade complejidad y coste.&lt;/p&gt;
&lt;h2 id=&quot;2-análisis-de-costes-detallado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-análisis-de-costes-detallado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Análisis de costes detallado&lt;/h2&gt;
&lt;h3 id=&quot;coste-de-desarrollo-inicial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#coste-de-desarrollo-inicial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Coste de desarrollo inicial&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Componente&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress tradicional&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress headless&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tema/Frontend&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5.000-30.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;15.000-80.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Backend WordPress&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3.000-15.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5.000-20.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Integraciones&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.000-10.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5.000-25.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Testing y QA&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.000-5.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3.000-15.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total desarrollo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;11.000-60.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;28.000-140.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Multiplicador&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1x&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;2.3x&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El coste de desarrollo headless es consistentemente 2-3x mayor porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requiere dos repositorios de código separados (backend + frontend)&lt;/li&gt;
&lt;li&gt;Las integraciones API necesitan desarrollo personalizado&lt;/li&gt;
&lt;li&gt;La vista previa de contenido requiere implementación adicional&lt;/li&gt;
&lt;li&gt;El testing es más complejo (dos sistemas que deben funcionar juntos)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;coste-de-hosting-anual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#coste-de-hosting-anual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Coste de hosting anual&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Componente&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress tradicional&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress headless&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Servidor WordPress&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.200-12.000 EUR/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;600-6.000 EUR/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Frontend hosting&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;N/A&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-3.600 EUR/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;CDN&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-1.200 EUR/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-600 EUR/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total hosting&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1.200-13.200 EUR/año&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;600-10.200 EUR/año&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El hosting headless puede ser más barato porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El frontend estatico (Astro) se despliega en Vercel, Netlify o Cloudflare Pages a coste minimo o gratuito&lt;/li&gt;
&lt;li&gt;WordPress como backend solo maneja solicitudes API (menos carga)&lt;/li&gt;
&lt;li&gt;Los sitios estaticos son extremadamente baratos de servir globalmente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;coste-de-mantenimiento-anual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#coste-de-mantenimiento-anual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Coste de mantenimiento anual&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Componente&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress tradicional&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress headless&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Actualizaciones WordPress&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.000-8.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.000-8.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Actualizaciones frontend&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido en WP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3.000-12.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Seguridad y monitoreo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.000-4.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.500-6.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Correcciones de bugs&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.000-5.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.000-10.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total mantenimiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;4.000-17.000 EUR/año&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;8.500-36.000 EUR/año&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El mantenimiento headless es más costoso porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dos sistemas que actualizar y mantener&lt;/li&gt;
&lt;li&gt;Dependencias de framework frontend (Next.js, Astro) que evolucionan rápidamente&lt;/li&gt;
&lt;li&gt;Los desarrolladores fullstack que dominan tanto WordPress como React/Astro son más caros&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-análisis-de-beneficios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-análisis-de-beneficios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Análisis de beneficios&lt;/h2&gt;
&lt;h3 id=&quot;rendimiento-y-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-y-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento y Core Web Vitals&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress tradicional&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress headless (Astro)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;PageSpeed móvil&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;70-90&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;95-100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;LCP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.5-3.0s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5-1.5s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;INP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-300ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30-100ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;CLS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.05-0.2&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-0.05&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;TTFB global&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-500ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;20-50ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Este diferencial de rendimiento se traduce en beneficios medibles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: Mejores Core Web Vitals = mejores posiciones en búsqueda móvil&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversión&lt;/strong&gt;: Cada 100ms de mejora en velocidad aumenta las conversiones un 0.5-1%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Engagement&lt;/strong&gt;: Usuarios permanecen más tiempo en sitios rápidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bounce rate&lt;/strong&gt;: Reduccion del 10-30% en tasa de rebote&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;impacto-financiero-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-financiero-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto financiero del rendimiento&lt;/h3&gt;
&lt;p&gt;Para un sitio con 100.000 visitas mensuales y una tasa de conversión del 2%:&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Escenario&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Conversión&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Leads/mes&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Valor estimado (50 EUR/lead)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;WordPress tradicional (LCP 2.5s)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.0%&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;WordPress headless (LCP 1.0s)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.5% (+25%)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.500&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;125.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Diferencia mensual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;+500 leads&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;+25.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Diferencia anual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;+6.000 leads&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;+300.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad&lt;/h3&gt;
&lt;p&gt;La arquitectura headless ofrece ventajas de seguridad significativas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress no esta expuesto publicamente (solo API interna)&lt;/li&gt;
&lt;li&gt;El frontend estatico no tiene vulnerabilidades de servidor&lt;/li&gt;
&lt;li&gt;La superficie de ataque se reduce dramaticamente&lt;/li&gt;
&lt;li&gt;Los costes de &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;seguridad&lt;/a&gt; se reducen a largo plazo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-calculo-de-roi-a-3-años&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-calculo-de-roi-a-3-años&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Calculo de ROI a 3 años&lt;/h2&gt;
&lt;h3 id=&quot;sitio-corporativo-mediano-100k-visitasmes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitio-corporativo-mediano-100k-visitasmes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitio corporativo mediano (100K visitas/mes)&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress tradicional&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress headless&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Desarrollo inicial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;35.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;80.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting (3 años)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;24.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;18.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mantenimiento (3 años)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;60.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Coste total 3 años&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;89.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;158.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Ingresos adicionales (rendimiento)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Referencia&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+900.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;ROI neto&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Referencia&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;+831.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El ROI de headless es positivo cuando el sitio tiene suficiente tráfico para que la mejora de rendimiento genere ingresos adicionales significativos. Para sitios con menos de 50.000 visitas mensuales, el diferencial de ingresos puede no justificar el coste adicional.&lt;/p&gt;
&lt;h2 id=&quot;5-arbol-de-decision-tradicional-vs-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-arbol-de-decision-tradicional-vs-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Arbol de decision: Tradicional vs. Headless&lt;/h2&gt;
&lt;h3 id=&quot;elija-wordpress-tradicional-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-wordpress-tradicional-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija WordPress tradicional si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Presupuesto de desarrollo limitado (&amp;#x3C; 50.000 EUR)&lt;/li&gt;
&lt;li&gt;Equipo editorial necesita vista previa WYSIWYG en tiempo real&lt;/li&gt;
&lt;li&gt;Dependencia fuerte de plugins WordPress con funcionalidad frontend&lt;/li&gt;
&lt;li&gt;Sitio con menos de 50.000 visitas/mes&lt;/li&gt;
&lt;li&gt;Equipo interno es PHP/WordPress (no React/JavaScript)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-wordpress-headless-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-wordpress-headless-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija WordPress headless si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Rendimiento es crítico para SEO y conversiones&lt;/li&gt;
&lt;li&gt;Sitio con más de 100.000 visitas/mes donde el rendimiento impacta ingresos&lt;/li&gt;
&lt;li&gt;Necesita multiples frontends (web + app móvil + kiosco)&lt;/li&gt;
&lt;li&gt;Equipo tiene experiencia en React/Next.js o frameworks modernos&lt;/li&gt;
&lt;li&gt;Seguridad del backend es una preocupacion principal&lt;/li&gt;
&lt;li&gt;Planea integrar con multiples APIs y servicios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-opción-intermedia-wordpress--astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-opción-intermedia-wordpress--astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La opción intermedia: WordPress + Astro&lt;/h3&gt;
&lt;p&gt;Astro ofrece una ruta intermedia interesante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Componentes en HTML/CSS (sin necesidad de React)&lt;/li&gt;
&lt;li&gt;Curva de aprendizaje menor que Next.js&lt;/li&gt;
&lt;li&gt;Rendimiento comparable al mejor headless&lt;/li&gt;
&lt;li&gt;Soporte nativo para WordPress como fuente de datos&lt;/li&gt;
&lt;li&gt;Menor coste de mantenimiento que Next.js&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WPPoland utiliza esta arquitectura para wppoland.com, combinando WordPress como backend con Astro como frontend para maxima velocidad y flexibilidad.&lt;/p&gt;
&lt;h2 id=&quot;6-frameworks-frontend-para-headless-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-frameworks-frontend-para-headless-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Frameworks frontend para headless WordPress&lt;/h2&gt;
&lt;h3 id=&quot;nextjs-react&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nextjs-react&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Next.js (React)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mejor para&lt;/strong&gt;: Aplicaciones interactivas, dashboards, e-commerce con auth&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: 90-98 PageSpeed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste de talento&lt;/strong&gt;: Alto (desarrolladores React senior)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosistema&lt;/strong&gt;: El más grande del mundo React&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Astro&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mejor para&lt;/strong&gt;: Sitios de contenido, blogs, corporativos, documentación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: 98-100 PageSpeed (cero JS por defecto)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste de talento&lt;/strong&gt;: Medio (HTML/CSS + JS básico)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosistema&lt;/strong&gt;: Creciente, 100+ integraciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;nuxt-vue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nuxt-vue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nuxt (Vue)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mejor para&lt;/strong&gt;: Equipos que prefieren Vue sobre React&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: 90-98 PageSpeed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste de talento&lt;/strong&gt;: Medio-alto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosistema&lt;/strong&gt;: Maduro en el mundo Vue&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;7-caso-real-migración-a-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-caso-real-migración-a-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Caso real: Migración a headless&lt;/h2&gt;
&lt;p&gt;Un clientes de WPPoland migro su sitio corporativo de WordPress tradicional (tema PHP + Elementor) a WordPress headless + Astro:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Antes (tradicional):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PageSpeed móvil: 62&lt;/li&gt;
&lt;li&gt;LCP: 3.2s&lt;/li&gt;
&lt;li&gt;Posición media keywords principales: 8.4&lt;/li&gt;
&lt;li&gt;Leads orgânicos/mes: 340&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Despues (headless con Astro):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PageSpeed móvil: 99&lt;/li&gt;
&lt;li&gt;LCP: 0.8s&lt;/li&gt;
&lt;li&gt;Posición media keywords principales: 4.1&lt;/li&gt;
&lt;li&gt;Leads organicos/mes: 890&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Inversión en migración:&lt;/strong&gt; 75.000 EUR
&lt;strong&gt;Incremento mensual en leads:&lt;/strong&gt; 550 leads x 45 EUR = 24.750 EUR/mes
&lt;strong&gt;ROI positivo:&lt;/strong&gt; Mes 4&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;WordPress headless no es universalmente mejor ni peor que WordPress tradicional. Es una decision financiera que debe evaluarse basandose en el tráfico del sitio, el potencial de ingresos por mejora de rendimiento, el presupuesto disponible y las capacidades del equipo. Para sitios con alto tráfico y potencial de conversión, el ROI de headless es claramente positivo. Para sitios más pequeños, WordPress tradicional bien optimizado sigue siendo la opción más sensata.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para evaluar si headless es adecuado para su caso o para implementar una &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración&lt;/a&gt;, contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; en ambas arquitecturas.&lt;/p&gt;
&lt;p&gt;Si Astro es su eleccion para el frontend headless, descubra &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;mis servicios de desarrollo con Astro&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro/Next.js&lt;/a&gt; - Implementación headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress&lt;/a&gt; - Arquitecturas tradicionales y headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Rendimiento en cualquier arquitectura&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - E-commerce headless&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>technology</category><category domain="tag">headless-wordpress</category><category domain="tag">roi</category><category domain="tag">nextjs</category><category domain="tag">total-cost-of-ownership</category><category domain="tag">business-strategy</category><enclosure url="https://wppoland.com/images/og/software-developers-networking.jpg" type="image/jpeg"/></item><item><title>WordPress debloat: 11 correcciones que uso para eliminar la hinchazón</title><link>https://wppoland.com/es/how-to-disable-wordpress-bloat-debloating-guide/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-disable-wordpress-bloat-debloating-guide/</guid><description>Llevo más de una decada construyendo sitios WordPress, y algo nunca cambia: la configuración &apos;de fabrica&apos; es demasiado pesada. Aqui te muestro como eliminar scripts y estilos innecesarios de forma segura.</description><pubDate>Thu, 04 Dec 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;WordPress es una potencia, pero sus valores predeterminados de “talla única” significan que a menudo viene con equipaje que la mayoria de los proyectos modernos no necesitan. A lo largo de los años, he refinado un conjunto específico de snippets para eliminar el exceso sin comprometer la experiencia central.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía no es simplemente una lista de cosas para eliminar; es un enfoque estrategico hacia el rendimiento. Esta inspirada en &lt;a href=&quot;https://shkspr.mobi/blog/2025/11/a-big-list-of-things-i-disable-in-wordpress/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;la excelente lista de Terence Eden&lt;/a&gt;, que he combinado con mis propias soluciones probadas en producción.&lt;/p&gt;
&lt;h2 id=&quot;el-caso-para-podar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-caso-para-podar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El caso para podar&lt;/h2&gt;
&lt;p&gt;Por que molestarse con estos pequeños scripts? Porque se acumulan. Cada linea innecesaria es un potencial conflicto, un pequeño retraso de renderizado o un byte desperdiciado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lo que estamos apuntando:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tamaño del DOM&lt;/strong&gt; - Eliminando estilos inline no usados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overhead HTTP&lt;/strong&gt; - Desencolando scripts que no deberian estar ahi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Superficie de seguridad&lt;/strong&gt; - Deshabilitando protocolos legacy como XML-RPC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core Web Vitals&lt;/strong&gt; - Impactando directamente LCP y CLS al eliminar elementos que bloquean el renderizado.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Usa precaucion:&lt;/strong&gt; No toda “hinchazón” es inutil. Si dependes del estilo específico del editor clásico o de emojis integrados para navegadores antiguos, algunas de estas correcciones pueden no ser para ti. Prueba en staging primero.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;el-script-completo-de-debloating&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-script-completo-de-debloating&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El script completo de debloating&lt;/h2&gt;
&lt;p&gt;Agrega lo siguiente al archivo &lt;code&gt;functions.php&lt;/code&gt; de tu tema. Cada sección esta comentada con explicaciones y enlaces a fuentes.&lt;/p&gt;
&lt;h3 id=&quot;1-eliminar-estilos-de-tema-clásico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-eliminar-estilos-de-tema-clásico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Eliminar estilos de tema clásico&lt;/h3&gt;
&lt;p&gt;WordPress agrega “classic-theme-styles” incluso en temas personalizados. Eliminalos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar tema clasico obligatorio.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; disable_classic_theme_styles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_deregister_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;classic-theme-styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;classic-theme-styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_enqueue_scripts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;disable_classic_theme_styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-eliminar-soporte-de-emojis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-eliminar-soporte-de-emojis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Eliminar soporte de emojis&lt;/h3&gt;
&lt;p&gt;WordPress convierte emojis de texto a imágenes y agrega scripts de deteccion. Si tus visitantes tienen soporte de emojis (lo cual tienen todos los navegadores modernos), esto es innecesario:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar WP Emoji.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_head&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,             &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;print_emoji_detection_script&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_print_styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,     &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;print_emoji_styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;admin_print_scripts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;print_emoji_detection_script&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;admin_print_styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;print_emoji_styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;              );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;emoji_svg_url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_false&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Detener reemplazo de emojis con imagenes en feeds RSS / Atom&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content_feed&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_staticize_emoji&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;comment_text_rss&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_staticize_emoji&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-deshabilitar-formato-automático-de-texto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-deshabilitar-formato-automático-de-texto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Deshabilitar formato automático de texto&lt;/h3&gt;
&lt;p&gt;WordPress “texturiza” tu contenido, convirtiendo comillas rectas en rizadas, guiones dobles en em-dashes, etc. Esto puede romper ejemplos de código y no siempre es deseado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar formato automático.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wptexturize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_excerpt&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wptexturize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;comment_text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wptexturize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wptexturize&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Mas cosas de formato.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;init&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;convert_smilies&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;document_title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $filter ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $filter, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;capital_P_dangit&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;comment_text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;capital_P_dangit&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;31&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;do_blocks&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-eliminar-estilos-y-scripts-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-eliminar-estilos-y-scripts-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Eliminar estilos y scripts Gutenberg&lt;/h3&gt;
&lt;p&gt;Si usas un tema personalizado y no dependes de los estilos frontend de Gutenberg, eliminalos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar estilos Gutenberg.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_enqueue_scripts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_enqueue_global_styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar widgets de edicion Gutenberg.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;gutenberg_use_widgets_block_editor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_false&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;use_widgets_block_editor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_false&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar CSS de Block Library de Gutenberg del frontend.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; remove_wp_block_library_css&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-library&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;       );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-block-library-theme&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp-components&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_enqueue_scripts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;remove_wp_block_library_css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;5-eliminar-meta-tags-del-header&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-eliminar-meta-tags-del-header&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Eliminar meta tags del header&lt;/h3&gt;
&lt;p&gt;Limpia tu sección &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; eliminando meta tags innecesarios:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar shortlink.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_head&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_shortlink_wp_head&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar RSD.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_head&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;rsd_link&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar feed links extra.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;feed_links_show_comments_feed&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_false&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;feed_links_show_posts_feed&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_false&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar enlace api.w.org.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_head&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;rest_output_link_wp_head&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;template_redirect&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;rest_output_link_header&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;6-eliminar-mejoras-de-imagen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-eliminar-mejoras-de-imagen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Eliminar mejoras de imagen&lt;/h3&gt;
&lt;p&gt;WordPress agrega atributos &lt;code&gt;sizes&lt;/code&gt; y otras mejoras a las imágenes. Si las manejas tu mismo, eliminalas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar tamaño de imagen forzado por WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_img_tag_add_auto_sizes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_false&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar mejoras de &amp;#x3C;img&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_filter_content_tags&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Dejar de reescribir URLs http:// para el dominio principal.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wp_replace_insecure_home_url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar la cosa de adjuntos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;prepend_attachment&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar el filtro de bloques&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;the_content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;apply_block_hooks_to_content_from_post_object&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;7-eliminar-verificación-de-navegador-y-otras-funciones-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-eliminar-verificación-de-navegador-y-otras-funciones-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Eliminar verificación de navegador y otras funciones admin&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar verificación de navegador del dashboard de Admin.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;HTTP_USER_AGENT&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;pre_site_transient_browser_&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;HTTP_USER_AGENT&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_null&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//  Eliminar hovercards en enlaces de comentarios en area admin.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;akismet_enable_mshots&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;__return_false&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mis-recomendaciónes-adicionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mis-recomendaciónes-adicionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mis recomendaciónes adicionales&lt;/h2&gt;
&lt;p&gt;Mas alla de las técnicas anteriores, aquí estan mis propias soluciones para optimización adicional:&lt;/p&gt;
&lt;h3 id=&quot;8-deshabilitar-xml-rpc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-deshabilitar-xml-rpc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Deshabilitar XML-RPC&lt;/h3&gt;
&lt;p&gt;Si no usas apps externas para publicar en WordPress, deshabilita XML-RPC para mejorar la seguridad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar XML-RPC completamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;xmlrpc_enabled&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar enlace XML-RPC del head&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rsd_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;9-eliminar-jquery-migrate&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-eliminar-jquery-migrate&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Eliminar jQuery Migrate&lt;/h3&gt;
&lt;p&gt;Los temas y plugins modernos de WordPress raramente necesitan jQuery Migrate. Si tu sitio funciona sin el, eliminalo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; remove_jquery_migrate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $scripts ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $scripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;registered[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $script &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $scripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;registered[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deps ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deps &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_diff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deps, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery-migrate&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_default_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;remove_jquery_migrate&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;10-deshabilitar-oembed&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-deshabilitar-oembed&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Deshabilitar oEmbed&lt;/h3&gt;
&lt;p&gt;Si no incrustas contenido de otros sitios (YouTube, Twitter, etc.), deshabilita oEmbed:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar enlaces de descubrimiento oEmbed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_oembed_add_discovery_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_oembed_add_host_js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar endpoint REST API de oEmbed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_api_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_oembed_register_route&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar auto descubrimiento oEmbed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;embed_oembed_discover&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;11-diferir-la-carga-de-javascript&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-diferir-la-carga-de-javascript&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;11. Diferir la carga de JavaScript&lt;/h3&gt;
&lt;p&gt;Agrega &lt;code&gt;defer&lt;/code&gt; a scripts no críticos para mejor rendimiento:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_defer_attribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $tag, $handle ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Scripts que NO deben diferirse&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $scripts_to_not_defer &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery-core&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $handle, $scripts_to_not_defer ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tag;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; defer src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $tag );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script_loader_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_defer_attribute&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;midiendo-el-impacto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-el-impacto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo el impacto&lt;/h2&gt;
&lt;p&gt;Despues de implementar estos cambios, prueba tu sitio usando:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Google PageSpeed Insights&lt;/strong&gt; - Verifica tus Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GTmetrix&lt;/strong&gt; - Análisis detallado de cascada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebPageTest&lt;/strong&gt; - Multiples ubicaciones de prueba y velocidades de conexión&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Deberias ver:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Peso de página reducido (menos bytes CSS/JS)&lt;/li&gt;
&lt;li&gt;Menos solicitudes HTTP&lt;/li&gt;
&lt;li&gt;Mejor Time to First Byte (TTFB)&lt;/li&gt;
&lt;li&gt;Mejor Largest Contentful Paint (LCP)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;El enfoque de WordPress de “baterias incluidas” es genial para principiantes, pero los desarrolladores que buscan maximo rendimiento necesitan podar el exceso. Las técnicas en esta guía, inspiradas en &lt;a href=&quot;https://shkspr.mobi/blog/2025/11/a-big-list-of-things-i-disable-in-wordpress/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;el excelente script de debloating de Terence Eden&lt;/a&gt;, te ayudaran a lograr una instalación WordPress mas ligera y rápida.&lt;/p&gt;
&lt;p&gt;Recuerda: &lt;strong&gt;menos es mas&lt;/strong&gt;. Cada linea de código que eliminas es un punto de fallo potencial menos, un byte menos para descargar y un paso más cerca de una puntuacion PageSpeed perfecta.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;servicios de optimización de velocidad WordPress&lt;/a&gt; para llevar el rendimiento de tu sitio al siguiente nivel.&lt;/p&gt;</content:encoded><category>wordpress</category><category domain="tag">wordpress</category><category domain="tag">rendimiento</category><category domain="tag">optimización</category><enclosure url="https://wppoland.com/images/og/wordpress-developer.jpg" type="image/jpeg"/></item><item><title>Accesibilidad (WCAG 2.2) en 2026: Es legal tu sitio WordPress?</title><link>https://wppoland.com/es/wordpress-accessibility-wcag-2-2-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-accessibility-wcag-2-2-guide-2026/</guid><description>Con la Ley Europea de Accesibilidad (EAA) plenamente en vigor desde 2025, los sitios no conformes enfrentan multas masivas. Aqui esta tu guía de desarrollador sobre WCAG 2.2, Focus Appearance y ARIA en WordPress.</description><pubDate>Thu, 27 Nov 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;En junio de 2025, el panorama digital cambio para siempre. La &lt;strong&gt;Ley Europea de Accesibilidad (EAA)&lt;/strong&gt; entro en plena aplicación, convirtiendo la accesibilidad web en un requisito legal para casí todas las empresas digitales que operan en la UE.&lt;/p&gt;
&lt;p&gt;Ya no es algo “bueno de tener”. Es similar al RGPD. El incumplimiento arriesga multas significativas y demandas judiciales.&lt;/p&gt;
&lt;p&gt;Para los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores WordPress&lt;/a&gt; y propietarios de sitios, el estándar es &lt;strong&gt;WCAG 2.2 Nivel AA&lt;/strong&gt;. Esta guía de más de 2500 palabras desglosa exactamente que cambio en 2026 y como asegurar que tu tema no este infringiendo la ley.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-eaa-por-que-2025-fue-el-punto-de-inflexion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-eaa-por-que-2025-fue-el-punto-de-inflexion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La EAA: Por que 2025 fue el punto de inflexion&lt;/h2&gt;
&lt;p&gt;Anteriormente, las leyes de accesibilidad se aplicaban principalmente al sector público (gobierno y universidades). La EAA expandio esto al &lt;strong&gt;comercio electronico, banca, transporte y libros electronicos&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alcance&lt;/strong&gt;: Si vendes una camiseta a un clientes en Francia, tu flujo de checkout debe ser accesible. Si ofreces servicios de consultoria a empresas en Alemania, tu sitio web debe cumplir. No importa donde este ubicado tu servidor - lo que importa es donde estan tus clientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La penalizacion&lt;/strong&gt;: Las multas varian por pais, pero pueden ser severas, sumadas al daño reputacional de excluir al 15% de la poblacion global. En España, las multas pueden alcanzar los 100.000 euros para infracciones graves.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;que-empresas-estan-obligadas-a-cumplir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-empresas-estan-obligadas-a-cumplir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que empresas estan obligadas a cumplir?&lt;/h3&gt;
&lt;p&gt;La EAA se aplica a practicamente cualquier empresa que ofrezca productos o servicios digitales a consumidores europeos. Esto incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tiendas online&lt;/strong&gt; (WooCommerce, Shopify, cualquier e-commerce)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servicios bancarios y financieros&lt;/strong&gt; en linea&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plataformás de reserva&lt;/strong&gt; de transporte y alojamiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editoriales digitales&lt;/strong&gt; y plataformas de e-learning&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servicios de telecomunicaciones&lt;/strong&gt; y streaming&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las únicas excepciones son las microempresas con menos de 10 empleados y menos de 2 millones de euros de facturacion anual. Pero incluso estas empresas son animadas a cumplir voluntariamente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-wcag-22-los-nuevos-criterios-explicados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-wcag-22-los-nuevos-criterios-explicados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. WCAG 2.2: Los nuevos criterios explicados&lt;/h2&gt;
&lt;p&gt;WCAG 2.2 construyo sobre 2.1, añadiendo 9 nuevos criterios. Los más críticos para temas WordPress son:&lt;/p&gt;
&lt;h3 id=&quot;2411-foco-no-oscurecido-minimo-aa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2411-foco-no-oscurecido-minimo-aa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2.4.11 Foco No Oscurecido (Minimo) (AA)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El problema&lt;/strong&gt;: Navegas con Tab por una página. Un elemento recibe el foco, pero tu “cabecera fija” o “banner de cookies” lo cubre. El usuario sabe que esta &lt;em&gt;en algun lugar&lt;/em&gt;, pero no puede ver &lt;em&gt;donde&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La solución&lt;/strong&gt;: Usa CSS &lt;code&gt;scroll-padding-top&lt;/code&gt; en el elemento &lt;code&gt;html&lt;/code&gt; para asegurar que los elementos enfocados se desplacen al area visible &lt;em&gt;debajo&lt;/em&gt; de tu cabecera fija.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  scroll-padding-top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Altura de tu cabecera fija */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este ajuste aparentemente simple tiene un impacto enorme en la usabilidad para personas que dependen del teclado para navegar. En WordPress, asegurate de que tu tema aplique esta propiedad y la ajuste dinamicamente si la altura de la cabecera cambia (por ejemplo, cuando aparece una barra de notificación).&lt;/p&gt;
&lt;h3 id=&quot;258-tamaño-de-objetivo-minimo-aa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#258-tamaño-de-objetivo-minimo-aa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2.5.8 Tamaño de Objetivo (Minimo) (AA)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La regla&lt;/strong&gt;: Los objetivos interactivos (botones) deben tener al menos 24x24 pixeles CSS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La realidad&lt;/strong&gt;: Esos pequeños botones “X” de cierre en tus popups? Son ilegales. Hazlos más grandes. Los toques con el dedo son imprecisos, y las personas con discapacidades motoras necesitan areas de toque generosas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En la práctica, esto significa revisar cada elemento interactivo de tu sitio WordPress: botones de formulario, enlaces de navegación, checkboxes, selectores de fecha, controles de carrusel y botones de cierre de modales. Todos deben tener un tamaño minimo de 24x24px con separacion adecuada entre elementos adyacentes.&lt;/p&gt;
&lt;h3 id=&quot;326-ayuda-consistente-a&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#326-ayuda-consistente-a&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3.2.6 Ayuda Consistente (A)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La regla&lt;/strong&gt;: Si ofreces mecanismos de ayuda (como un enlace de contacto o un chatbot), deben aparecer en la misma ubicacion relativa en todas las páginas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El impacto WordPress&lt;/strong&gt;: Los widgets de pie de página con información de contacto deben mantenerse consistentes en todo el sitio. No muevas el enlace de “Soporte” del footer a la barra lateral en diferentes secciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;337-entrada-redundante-a&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#337-entrada-redundante-a&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3.3.7 Entrada Redundante (A)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La regla&lt;/strong&gt;: No obligues al usuario a ingresar la misma información dos veces en el mismo proceso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El impacto WordPress&lt;/strong&gt;: En WooCommerce, si la dirección de envio es la misma que la de facturacion, no obligues al usuario a escribirla dos veces. Usa un checkbox “Misma que la dirección de facturacion” o auto-rellena los campos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;338-autenticación-accesible-aa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#338-autenticación-accesible-aa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3.3.8 Autenticación Accesible (AA)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La regla&lt;/strong&gt;: No fuerces a los usuarios a resolver puzzles (CAPTCHAs) o memorizar contrasenas sin ayuda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El impacto WordPress&lt;/strong&gt;: Soporta gestores de contrasenas (no bloquees el pegado en campos de contrasena) y usa “Magic Links” o WebAuthn (Biometria) cuando sea posible. Los CAPTCHAs visuales son una barrera crítica para usuarios ciegos - usa alternativas como reCAPTCHA v3 que funciona sin interacción visible del usuario.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-html-semántico-la-base-de-todo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-html-semántico-la-base-de-todo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. HTML semántico: La base de todo&lt;/h2&gt;
&lt;p&gt;El 90% de los problemas de accesibilidad se resuelven escribiendo HTML correcto. No se necesitan plugins magicos ni overlays - solo marcado semántico apropiado.&lt;/p&gt;
&lt;h3 id=&quot;landmarks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#landmarks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Landmarks&lt;/h3&gt;
&lt;p&gt;Usa &lt;code&gt;&amp;#x3C;main&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;nav&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;aside&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;footer&gt;&lt;/code&gt;. Los usuarios de lectores de pantalla saltan entre estas regiones para navegar eficientemente. No ahogues todo en una sopa de &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt;. Un sitio WordPress bien estructurado deberia tener exactamente un &lt;code&gt;&amp;#x3C;main&gt;&lt;/code&gt;, una &lt;code&gt;&amp;#x3C;nav&gt;&lt;/code&gt; primaria, y landmarks claramente definidos.&lt;/p&gt;
&lt;h3 id=&quot;jerarquía-de-encabezados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#jerarquía-de-encabezados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Jerarquía de encabezados&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;h1&lt;/code&gt; a &lt;code&gt;h6&lt;/code&gt; es una jerarquía, no una eleccion de estilo. No saltes de &lt;code&gt;h2&lt;/code&gt; a &lt;code&gt;h4&lt;/code&gt; solo porque quieres una fuente más pequeña. Usa CSS para el dimensionamiento. En WordPress, esto es especialmente problematico cuando los editores de contenido usan encabezados para dar estilo visual al texto en lugar de estructurar la información logicamente.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h3 id=&quot;botones-vs-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#botones-vs-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Botones vs. Enlaces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Va a una nueva URL? Usa &lt;code&gt;&amp;#x3C;a&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Cambia algo en la página actual (abre un menú)? Usa &lt;code&gt;&amp;#x3C;button&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Nunca&lt;/em&gt; uses &lt;code&gt;&amp;#x3C;div onClick=&quot;...&quot;&gt;&lt;/code&gt;. Es invisible para los teclados y los lectores de pantalla no lo anuncian como elemento interactivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta distincion puede parecer trivial para desarrolladores visuales, pero es fundamental para la accesibilidad. Un lector de pantalla anuncia links y botones de forma diferente, y los usuarios confian en estas distinciones para entender la estructura de la página.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-la-trampa-del-overlay&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-la-trampa-del-overlay&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. La trampa del “Overlay”&lt;/h2&gt;
&lt;p&gt;Los has visto. El pequeño icono de “persona en circulo” en la esquina que abre un menú para cambiar contraste o tamaño de fuente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Evitalos.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Falsa seguridad&lt;/strong&gt;: Afirman hacerte cumplir instantaneamente con una linea de JavaScript. No lo hacen. No pueden corregir errores de HTML semántico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Friccion del usuario&lt;/strong&gt;: Los usuarios ciegos ya tienen lectores de pantalla. No necesitan tu overlay interfiriendo con sus herramientas configuradas y personalizadas durante años.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Riesgo legal&lt;/strong&gt;: En EE.UU., empresas que usan overlays han sido demandadas &lt;em&gt;con más frecuencia&lt;/em&gt; porque demuestra que sabian que tenian un problema pero eligieron una solución de “curita” en lugar de corregir el código subyacente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflictos técnicos&lt;/strong&gt;: Los overlays frecuentemente entran en conflicto con tecnologías de asistencia existentes, creando una experiencia peor, no mejor, para los usuarios que más necesitan accesibilidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La única solución real es escribir código accesible desde el principio o remediar el código existente para cumplir con los estándares. No hay atajos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-pruebas-automatizadas-vs-manuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-pruebas-automatizadas-vs-manuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Pruebas: Automatizadas vs. manuales&lt;/h2&gt;
&lt;p&gt;No puedes automatizar la accesibilidad al 100%. Las herramientas automatizadas son un punto de partida, pero nunca un sustituto de las pruebas humanas.&lt;/p&gt;
&lt;h3 id=&quot;el-flujo-de-trabajo-de-pruebas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-flujo-de-trabajo-de-pruebas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El flujo de trabajo de pruebas&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automatizado (30%)&lt;/strong&gt;: Usa &lt;code&gt;axe-core&lt;/code&gt; o la auditoria de “Accesibilidad” de Lighthouse. Esto detecta texto alternativo faltante, bajo contraste, etiquetas ARIA invalidas y roles duplicados. Es rápido y debe ejecutarse en cada despliegue como parte de tu pipeline de CI/CD.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Teclado manual (50%)&lt;/strong&gt;: Desconecta tu raton. Puedes navegar todo el menú, abrir los submenus y llenar el formulario de contacto usando &lt;em&gt;solo&lt;/em&gt; las teclas Tab, Enter y Espacio? Si no, no apruebas. Presta atención especial a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los indicadores de foco son visibles?&lt;/li&gt;
&lt;li&gt;El orden de tabulacion es lógico?&lt;/li&gt;
&lt;li&gt;Los modales y dropdowns atrapan el foco correctamente?&lt;/li&gt;
&lt;li&gt;Puedes cerrar modales con la tecla Escape?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lector de pantalla (20%)&lt;/strong&gt;: Activa VoiceOver (Mac) o NVDA (Windows). Cierra los ojos. Puedes entender que esta pasando? Los formularios tienen etiquetas descriptivas? Las imágenes tienen textos alternativos significativos? Los cambios de estado se anuncian correctamente?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;herramientas-recomendadas-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-recomendadas-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas recomendadas para WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;axe DevTools&lt;/strong&gt;: Extension de navegador que analiza la página actual y ofrece correcciones específicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wave&lt;/strong&gt;: Herramienta web de WebAIM que proporciona una visualización clara de los problemas de accesibilidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pa11y&lt;/strong&gt;: Herramienta de linea de comandos ideal para integrar en pipelines de CI/CD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accessibility Checker (Plugin WP)&lt;/strong&gt;: Audita el contenido directamente desde el editor de WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-formularios-accesibles-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-formularios-accesibles-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Formularios accesibles en WordPress&lt;/h2&gt;
&lt;p&gt;Contact Form 7 y Gravity Forms son populares, pero frecuentemente estan mal configurados desde el punto de vista de accesibilidad.&lt;/p&gt;
&lt;h3 id=&quot;etiquetas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#etiquetas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Etiquetas&lt;/h3&gt;
&lt;p&gt;Cada campo de entrada necesita un &lt;code&gt;&amp;#x3C;label&gt;&lt;/code&gt; asociado programaticamente. Los placeholders NO son etiquetas - desaparecen cuando escribes, dejando al usuario sin referencia de que información se solicita.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Correcto --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Correo electronico&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Incorrecto --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; placeholder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Correo electronico&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;mensajes-de-error&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mensajes-de-error&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mensajes de error&lt;/h3&gt;
&lt;p&gt;“Error encontrado” es inutil. “La dirección de correo electronico no contiene el símbolo @” es accesible. Los mensajes de error deben ser específicos, estar asociados programaticamente al campo correspondiente usando &lt;code&gt;aria-describedby&lt;/code&gt;, y aparecer cerca del campo con error.&lt;/p&gt;
&lt;h3 id=&quot;gestión-de-foco&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-foco&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de foco&lt;/h3&gt;
&lt;p&gt;Cuando un usuario envia un formulario y hay un error, mueve programaticamente el foco del teclado al primer campo con error para que puedan corregirlo inmediatamente. No obligues al usuario a buscar donde esta el problema.&lt;/p&gt;
&lt;h3 id=&quot;indicadores-de-campo-obligatorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-de-campo-obligatorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores de campo obligatorio&lt;/h3&gt;
&lt;p&gt;No dependas solo del asterisco rojo (*) para indicar campos obligatorios. Usa el atributo &lt;code&gt;required&lt;/code&gt;, proporciona texto explicativo (“Los campos marcados con * son obligatorios”) y asegurate de que los lectores de pantalla anuncien el estado requerido.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-accesibilidad-en-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-accesibilidad-en-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Accesibilidad en WooCommerce&lt;/h2&gt;
&lt;p&gt;Las tiendas WooCommerce tienen desafios adicionales de accesibilidad que deben abordarse:&lt;/p&gt;
&lt;h3 id=&quot;flujo-de-compra&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-compra&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de compra&lt;/h3&gt;
&lt;p&gt;Todo el proceso desde la seleccion del producto hasta la confirmacion del pago debe ser navegable por teclado. Esto incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agregar productos al carrito&lt;/li&gt;
&lt;li&gt;Modificar cantidades&lt;/li&gt;
&lt;li&gt;Aplicar cupones&lt;/li&gt;
&lt;li&gt;Completar el checkout&lt;/li&gt;
&lt;li&gt;Recibir confirmacion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;desarrollo WooCommerce&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h3 id=&quot;tablas-de-productos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tablas-de-productos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tablas de productos&lt;/h3&gt;
&lt;p&gt;Las tablas de comparación de productos y las listas de variaciones deben usar &lt;code&gt;&amp;#x3C;table&gt;&lt;/code&gt; semántico con encabezados &lt;code&gt;&amp;#x3C;th&gt;&lt;/code&gt; apropiados y atributos &lt;code&gt;scope&lt;/code&gt; para que los lectores de pantalla puedan interpretar la relación entre celdas.&lt;/p&gt;
&lt;h3 id=&quot;notificaciones-dinámicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#notificaciones-dinámicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Notificaciones dinámicas&lt;/h3&gt;
&lt;p&gt;Cuando se agrega un producto al carrito o se aplica un descuento, usa &lt;code&gt;aria-live=&quot;polite&quot;&lt;/code&gt; para anunciar el cambio a los lectores de pantalla sin interrumpir la actividad actual del usuario.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-accesibilidad-en-wordpress-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-accesibilidad-en-wordpress-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Accesibilidad en WordPress Headless&lt;/h2&gt;
&lt;p&gt;Los sitios WordPress Headless que usan React, Next.js o Astro como frontend enfrentan desafios únicos de accesibilidad:&lt;/p&gt;
&lt;h3 id=&quot;gestión-de-foco-en-cambios-de-ruta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-foco-en-cambios-de-ruta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de foco en cambios de ruta&lt;/h3&gt;
&lt;p&gt;En una Single Page Application (SPA), los cambios de ruta no provocan una recarga de página. Esto significa que el foco del teclado y los anuncios del lector de pantalla no se actualizan automáticamente. Debes implementar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mover el foco al contenido principal despues de cada cambio de ruta&lt;/li&gt;
&lt;li&gt;Anunciar el título de la nueva página usando una region &lt;code&gt;aria-live&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Actualizar el &lt;code&gt;document.title&lt;/code&gt; con el título de la nueva página&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;renderizado-del-lado-del-servidor-para-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#renderizado-del-lado-del-servidor-para-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Renderizado del lado del servidor para accesibilidad&lt;/h3&gt;
&lt;p&gt;El SSR (Server-Side Rendering) es crucial para la accesibilidad porque asegura que el contenido este disponible inmediatamente cuando la página carga, sin esperar a que JavaScript se ejecute. Los usuarios de lectores de pantalla que navegan rápidamente necesitan contenido en el HTML inicial.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-la-accesibilidad-como-indicador-de-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-la-accesibilidad-como-indicador-de-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: La accesibilidad como indicador de calidad&lt;/h2&gt;
&lt;p&gt;La accesibilidad a menudo se enmarca como una restriccion. En realidad, es un indicador de calidad. El código accesible es más limpio, más robusto y mejor para SEO. En 2026, construir una web inclusiva no es solo la ley - es la única forma profesional de trabajar.&lt;/p&gt;
&lt;p&gt;Los beneficios van más alla del cumplimiento legal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mejor SEO&lt;/strong&gt;: Los motores de búsqueda interpretan las señales de accesibilidad como indicadores de calidad del sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mayor audiencia&lt;/strong&gt;: El 15% de la poblacion mundial tiene alguna discapacidad. Eso son mil millones de personas que podrias estar excluyendo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejor UX para todos&lt;/strong&gt;: Las mejoras de accesibilidad (contraste claro, botones grandes, navegación lógica) benefician a todos los usuarios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menor riesgo legal&lt;/strong&gt;: El cumplimiento proactivo es infinitamente más barato que la remediacion despues de una demanda.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Necesitas una auditoria de accesibilidad? WPPoland ofrece servicios de remediacion WCAG 2.2 para empresas. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt; para una evaluación de tu sitio.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>accessibility</category><category domain="tag">a11y</category><category domain="tag">wcag-2.2</category><category domain="tag">eaa-compliance</category><category domain="tag">aria</category><category domain="tag">inclusive-design</category><enclosure url="https://wppoland.com/images/og/debugging-complex-wordpress-site.jpg" type="image/jpeg"/></item><item><title>SEO programatico con WordPress: Escalando su alcance en 2026</title><link>https://wppoland.com/es/programmatic-seo-wordpress-scale-2026/</link><guid isPermaLink="true">https://wppoland.com/es/programmatic-seo-wordpress-scale-2026/</guid><description>Por que construir una página a la vez cuando puede construir 10.000? Aprenda a dominar el SEO Programatico en WordPress para dominar nichos de cola larga en 2026.</description><pubDate>Wed, 12 Nov 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En la era del contenido escalable, construir páginas web una por una es como escribir cartas a mano en la era del correo electronico. El SEO Programatico (pSEO) le permite generar miles de páginas de destino altamente segmentadas a partir de datos estructurados, dominando nichos de cola larga que sus competidores ni siquiera consideran.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO para WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía le muestra como construir un motor de pSEO en WordPress que genere tráfico organico masivo sin sacrificar la calidad del contenido.&lt;/p&gt;
&lt;h2 id=&quot;cuando-el-seo-programatico-realmente-funciona-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-el-seo-programatico-realmente-funciona-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando el SEO programatico realmente funciona en WordPress&lt;/h2&gt;
&lt;p&gt;El SEO programatico es un patron de generacion, no una estrategia. Eliges una plantilla, la multiplicas por un dataset y envias N páginas a partir de una sola decision. En WordPress eso suele significar un CPT más campos ACF Pro, renderizado por una plantilla &lt;code&gt;single-{cpt}.php&lt;/code&gt; que tira datos estructurados a los headings, schema y cuerpo.&lt;/p&gt;
&lt;p&gt;Funciona en dos condiciones estrechas: cada página generada debe responder a una pregunta que alguien realmente escribe, y cada página debe llevar datos que la siguiente página no tiene. Si fallas una, ya no estás haciendo SEO programatico, estás operando una fábrica de thin content que el clasificador de commodity de Google acabará marcando como una sola superficie y demoviendo en conjunto.&lt;/p&gt;
&lt;p&gt;El test commodity vs no-commodity de Danny Sullivan es la vara. Si tu página „servicios SEO en Madrid” es intercambiable con cinco versiones de la competencia, es commodity por definicion, y ningún templating lo arregla. Las páginas wppoland.com para Tricity, Varsovia y Wroclaw funcionan porque cada una lleva case studies específicos de la ciudad, contexto regional de precios e integraciones disponibles localmente. El equivalente español es claro: lookup contra el directorio de empresas del registro mercantil, integracion Bizum y Redsys para páginas de comerciantes, datos del INE por comunidad autonoma para granularidad de paginas locales, sucesores estructurales del patron Páginas Amarillas para listados B2B.&lt;/p&gt;
&lt;p&gt;Patrones que sobreviven a la barra de calidad 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plantillas localidad más servicio&lt;/strong&gt; con datos locales reales por ciudad o comunidad autonoma (case studies, regulacion regional, integraciones disponibles localmente como Bizum, Redsys o pasarelas locales tipo Adyen para comercio peninsular vs canario). WordPress: CPT &lt;code&gt;area-servicio&lt;/code&gt;, &lt;code&gt;tax_query&lt;/code&gt; que une taxonomia de servicio con taxonomia de ciudad, ACF Repeater para pruebas locales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comparaciones de productos&lt;/strong&gt; donde cada par tiene un diferenciador no trivial. CPT &lt;code&gt;comparacion&lt;/code&gt;, ACF Relationship, schema &lt;code&gt;Product&lt;/code&gt; más &lt;code&gt;Review&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variantes de receta o especificacion&lt;/strong&gt; donde la variable cambia la respuesta, no solo el encabezado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calculadoras y páginas de lookup&lt;/strong&gt; que devuelven un numero, por ejemplo IRPF por comunidad autonoma, IVA por categoria, comerciantes Bizum por provincia. El dato unico es la respuesta misma.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que no sobrevive: 50.000 páginas de ciudad generadas del mismo párrafo con el nombre de la ciudad cambiado, „mejor X en Y” sin rankings propios, cualquier plantilla que produce body copy idéntico entre permutaciones.&lt;/p&gt;
&lt;p&gt;El resto de esta guia asume que ya pasaste esa puerta.&lt;/p&gt;
&lt;h2 id=&quot;la-arquitectura-técnica-wordpress-como-motor-de-pseo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-arquitectura-técnica-wordpress-como-motor-de-pseo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La arquitectura técnica: WordPress como motor de pSEO&lt;/h2&gt;
&lt;p&gt;WordPress, con su sistema de Custom Post Types (CPTs) y su API flexible, es una plataforma ideal para pSEO cuando se configura correctamente.&lt;/p&gt;
&lt;h3 id=&quot;paso-1-disenar-la-estructura-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-disenar-la-estructura-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Disenar la estructura de datos&lt;/h3&gt;
&lt;p&gt;Antes de escribir una sola linea de código, defina su modelo de datos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar Custom Post Type para páginas programaticas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; registrar_cpt_ubicaciones&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;labels&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Ubicaciones&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;singular_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;has_archive&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;rewrite&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;servicios-en&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;supports&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom-fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;show_in_rest&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;registrar_cpt_ubicaciones&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-2-importar-datos-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-importar-datos-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Importar datos a escala&lt;/h3&gt;
&lt;p&gt;Para importar miles de registros, use WP-CLI o scripts personalizados en lugar de plugins basados en interfaz web que pueden agotarse por tiempo de espera:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Importar ubicaciones desde CSV via WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; eval-file&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; importar-ubicaciones.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// importar-ubicaciones.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$csv &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;str_getcsv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ubicaciones.csv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$headers &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_shift&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($csv);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($csv &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $row) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_combine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($headers, $row);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_insert_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; sprintf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Servicios WordPress en %s&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ciudad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ciudad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ciudad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pais&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pais&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;poblacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;poblacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-3-plantillas-dinámicas-con-contenido-único&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-plantillas-dinámicas-con-contenido-único&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Plantillas dinámicas con contenido único&lt;/h3&gt;
&lt;p&gt;La clave para evitar penalizaciones de contenido delgado es asegurar que cada página tenga contenido único y valioso. En 2026, combinamos datos estructurados con generación de contenido asistida por IA:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Datos base&lt;/strong&gt;: Información factual de la base de datos (poblacion, coordenadas, estadísticas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido enriquecido&lt;/strong&gt;: Texto único generado o revisado por humanos para cada página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elementos dinámicos&lt;/strong&gt;: Mapas, graficos, comparaciones que varian por ubicacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testimonios locales&lt;/strong&gt;: Resenas y casos de estudio específicos de la region&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;optimización-de-rendimiento-para-miles-de-páginas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-rendimiento-para-miles-de-páginas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de rendimiento para miles de páginas&lt;/h2&gt;
&lt;p&gt;Un sitio con 10.000+ páginas programaticas necesita optimización especial:&lt;/p&gt;
&lt;h3 id=&quot;base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Base de datos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Indices personalizados&lt;/strong&gt;: Agregue indices a las columnas de &lt;code&gt;wp_postmeta&lt;/code&gt; más consultadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis/Memcached&lt;/strong&gt;: Cache de consultas de base de datos para reducir carga&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MariaDB 11&lt;/strong&gt;: Motor de base de datos optimizado para lecturas masivas&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Agregar indice para consultas frecuentes de meta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; idx_meta_ciudad&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta (meta_key, meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ciudad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;cache-y-cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cache-y-cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cache y CDN&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cache de página completa&lt;/strong&gt;: Cada página programatica debe estar cacheada como HTML estatico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN global&lt;/strong&gt;: Distribuya el contenido en servidores de borde para reducir latencia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invalidacion selectiva&lt;/strong&gt;: Cuando actualice datos, invalide solo las páginas afectadas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sitemap-xml&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitemap-xml&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitemap XML&lt;/h3&gt;
&lt;p&gt;Con miles de páginas, necesita sitemaps segmentados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Generar sitemaps por lotes de 1000 URLs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; generar_sitemaps_pseo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sitemap_provider) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $total &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_count_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;publish;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $lotes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ceil&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($total &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $lotes; $i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $sitemap_provider&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/sitemap-ubicaciones-{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}.xml&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;estrategia-de-palabras-clave-para-pseo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-palabras-clave-para-pseo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de palabras clave para pSEO&lt;/h2&gt;
&lt;p&gt;El pSEO funciona mejor con patrones de palabras clave predecibles:&lt;/p&gt;
&lt;h3 id=&quot;patron-de-modificadores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patron-de-modificadores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patron de modificadores&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Patron&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ejemplo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Volumen tipico&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;[Servicio] en [Ciudad]&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;“Desarrollo WordPress en Madrid”&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-200/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mejor [Producto] para [Industria]&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;“Mejor CMS para hospitales”&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-500/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;[Servicio] vs [Servicio]&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;“WordPress vs Webflow”&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-1000/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Costo de [Servicio] en [Pais]&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;“Costo de diseño web en Espana”&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-300/mes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;investigacion-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#investigacion-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Investigacion a escala&lt;/h3&gt;
&lt;p&gt;Use herramientas como Ahrefs o SEMrush para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Identificar patrones de búsqueda repetitivos en su nicho&lt;/li&gt;
&lt;li&gt;Estimar el volumen agregado de todas las variaciones&lt;/li&gt;
&lt;li&gt;Analizar la competencia actual para cada patron&lt;/li&gt;
&lt;li&gt;Priorizar los patrones con mejor relación esfuerzo/impacto&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;como-las-superficies-programaticas-fallan-en-produccion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-las-superficies-programaticas-fallan-en-produccion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como las superficies programaticas fallan en produccion&lt;/h2&gt;
&lt;p&gt;Estos son los modos de fallo que vemos auditando sites WordPress españoles que escalaron plantillas programaticas sin puerta de calidad. Ninguno es teorico.&lt;/p&gt;
&lt;h3 id=&quot;indexed-but-thin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indexed-but-thin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indexed-but-thin&lt;/h3&gt;
&lt;p&gt;Google indexa las primeras 5.000 páginas generadas y luego se detiene silenciosamente, mientras demueve las que ya tenia indexadas. Search Console muestra „Rastreada, actualmente sin indexar” subiendo y las impresiones en URLs ya indexadas bajan. El disparador suele ser similitud de body copy por encima del 70 por ciento aproximadamente a lo largo de la plantilla. Fix: forzar un threshold de tokens unicos en la generacion y &lt;code&gt;noindex&lt;/code&gt; para cualquier página cuyo bloque de datos ACF caiga por debajo del minimo (por ejemplo, menos de tres campos de prueba local rellenos).&lt;/p&gt;
&lt;h3 id=&quot;sitemap-bloat-y-quema-de-crawl-budget&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitemap-bloat-y-quema-de-crawl-budget&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitemap bloat y quema de crawl-budget&lt;/h3&gt;
&lt;p&gt;El sitio envia 200.000 URLs al sitemap. La mayoria son permutaciones que nadie busca. Googlebot quema su presupuesto recrawleando basura combinatoria mientras las money-pages esperan semanas al recrawl. Fix: dividir sitemaps por plantilla, excluir permutaciones sin demanda del indice, usar filtros &lt;code&gt;wp_sitemaps_add_provider&lt;/code&gt; para controlar qué entradas CPT van a &lt;code&gt;sitemap.xml&lt;/code&gt;. Validar contra Crawl Stats en GSC, no por tamaño de archivo.&lt;/p&gt;
&lt;h3 id=&quot;duplicate-content-por-diferenciacion-insuficiente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#duplicate-content-por-diferenciacion-insuficiente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Duplicate content por diferenciacion insuficiente&lt;/h3&gt;
&lt;p&gt;Las páginas „Madrid” y „Barcelona” comparten el 90 por ciento del HTML porque la plantilla solo varia el nombre de la ciudad en encabezados y un parrafo. Google las clusteriza y rankea una URL por cada query variante, ignorando el resto. Fix: cada plantilla debe tener al menos tres bloques variables alimentados por campos ACF por página (case study local, integraciones regionales, FAQ especifico de la ciudad). Si no puedes rellenarlos con datos reales, no generes la página.&lt;/p&gt;
&lt;h3 id=&quot;colapso-de-core-web-vitals-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#colapso-de-core-web-vitals-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Colapso de Core Web Vitals a escala&lt;/h3&gt;
&lt;p&gt;La página de indice de categoria renderiza 500 enlaces hijos con thumbnails, golpea 4MB de transferencia, CLS dispara por widgets de reseñas que cargan tarde. INP colapsa en mobile. Fix: paginar agresivamente a nivel de plantilla, lazy-load para bloques bajo el fold, correr Lighthouse contra una permutacion representativa, no solo la home. No confiar en numeros desktop.&lt;/p&gt;
&lt;h3 id=&quot;clasificador-de-commodity-content-marca-toda-la-superficie&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#clasificador-de-commodity-content-marca-toda-la-superficie&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Clasificador de commodity-content marca toda la superficie&lt;/h3&gt;
&lt;p&gt;Cuando el clasificador de Google decide que tu patron &lt;code&gt;/servicios/{servicio}/{ciudad}/&lt;/code&gt; es commodity, la democion aplica path-wise, no página a página. La recuperacion es lenta porque la señal es estructural. La prevencion es la unica opcion realista: forzar la puerta Sullivan antes de generar. Si tu página es intercambiable con tres competidores, consolida la plantilla en una página hub con UI de filtros en vez de N permutaciones indexadas.&lt;/p&gt;
&lt;h3 id=&quot;pudricion-de-la-fuente-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pudricion-de-la-fuente-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pudricion de la fuente de datos&lt;/h3&gt;
&lt;p&gt;El CSV que alimentaba tus 8.000 páginas quedo obsoleto hace 14 meses. Precios incorrectos, locales cerrados, NIFs/CIFs ya extinguidos en el registro. Los usuarios bouncean, los rankings se desploman. Fix: vincular la generacion a una fuente viva (registros mercantiles abiertos, datos del INE), versionar el dataset en git, fijar un SLA duro de frescura por plantilla. Mostrar &lt;code&gt;dateModified&lt;/code&gt; en schema honestamente.&lt;/p&gt;
&lt;h3 id=&quot;brechas-de-licencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#brechas-de-licencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Brechas de licencias&lt;/h3&gt;
&lt;p&gt;Hiciste scraping al directorio de un competidor o usaste output de API de pago fuera de los terminos de licencia. En España aplican también la Ley de Propiedad Intelectual y el RGPD para datos personales identificables del registro mercantil. Fix: documentar la procedencia de datos por plantilla, preferir public-domain o first-party, nunca hornear texto de terceros en campos ACF.&lt;/p&gt;
&lt;h2 id=&quot;linking-interno-para-superficies-programaticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#linking-interno-para-superficies-programaticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Linking interno para superficies programaticas&lt;/h2&gt;
&lt;p&gt;Los enlaces internos en una superficie programatica no son un „boost”. Son la forma en que los motores de busqueda entienden qué permutaciones pertenecen al mismo cluster y cuáles van solas. Cruzar enlaces de cada página de ciudad a cada otra es el error más común: aplana el grafo y le dice a Google que los 500 nodos son equivalentes.&lt;/p&gt;
&lt;p&gt;Un patron que funciona usa tres roles por plantilla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas hub&lt;/strong&gt; (una por término de taxonomia de servicio) cargan la introduccion tematica y enlazan a un subconjunto curado de páginas leaf. En WordPress: override del archive de categoria o un CPT hub propio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas bridge&lt;/strong&gt; conectan leafs cuando la conexion tiene un caso de uso real para el lector. Una página „mantenimiento WordPress en Sevilla” puentea con „mantenimiento WordPress en Valencia” solo si un lector plausiblemente compara los dos mercados. Si no, no enlaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas leaf&lt;/strong&gt; enlazan hacia arriba al hub y lateralmente a dos o tres hermanas más cercanas, escogidas por similitud de datos (mismo tier de servicio, region adyacente, cases comparables), no alfabeticamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El anchor text sigue la misma regla que el contenido: variable segun la intencion del lector, no exact-match. Un leaf que enlaza a su hub usa contexto descriptivo, no el H1 del destino. Usa campos ACF Relationship más un similarity scorer determinista (terminos de taxonomia compartidos ponderados por profundidad) para escoger hermanas en el momento de la generacion. Nunca dejes que la plantilla itere &lt;code&gt;get_posts()&lt;/code&gt; sin constraints.&lt;/p&gt;
&lt;h2 id=&quot;performance-a-escala-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#performance-a-escala-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Performance a escala en WordPress&lt;/h2&gt;
&lt;p&gt;Las plantillas programaticas fallan en Core Web Vitals antes que en SEO. El patron es predecible: &lt;code&gt;WP_Query&lt;/code&gt; con cadena pesada de &lt;code&gt;tax_query&lt;/code&gt; o &lt;code&gt;meta_query&lt;/code&gt; en el archive renderiza lento sin cache, el planner SQL escoge el indice equivocado, TTFB en la página de listado cruza dos segundos.&lt;/p&gt;
&lt;p&gt;Lo que sobrevive a 50.000+ páginas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reemplaza joins de &lt;code&gt;meta_query&lt;/code&gt; con una tabla de lookup indexada propia, poblada en save. El meta serializado de ACF no escala más allá de unos cientos de requests de filtro concurrentes.&lt;/li&gt;
&lt;li&gt;Cachea HTML completo en el edge (Cloudflare, Bunny CDN; en setups españoles también es comun ver Sered o Webempresa con un Varnish delante) con TTL largo y hook de purge ligado a &lt;code&gt;save_post_{cpt}&lt;/code&gt;. Object caching solo no basta en shared hosting.&lt;/li&gt;
&lt;li&gt;Precalcula listas de páginas relacionadas en write, no en cada render. Guarda como array post-meta serializado o como archivo JSON en &lt;code&gt;/wp-content/uploads/pseo-links/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Corre Lighthouse contra una URL leaf representativa en cada cambio de plantilla, no solo el hub. 75 mobile como suelo. Plantillas que no llegan, rediseña antes de generar, no optimices despues.&lt;/li&gt;
&lt;li&gt;Para variantes multilingues, renderiza &lt;code&gt;hreflang&lt;/code&gt; desde el mismo mapa de traduccion ACF que usa el generador, para que las traducciones faltantes nunca produzcan crosslinks rotos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;comparacion-de-plantillas-pseo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparacion-de-plantillas-pseo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparacion de plantillas pSEO&lt;/h2&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Plantilla&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Escala realista&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Riesgo de indexacion&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Cuando funciona&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Localidad más servicio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100 a 5.000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Datos locales reales por ciudad, no cambio de nombre&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Comparacion de productos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;500 a 5.000 pares&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada par tiene diferenciador no trivial&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Calculadora o lookup&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50 a 500&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;La respuesta misma es el valor unico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Directorios y listings (Páginas Amarillas sucesores)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10.000+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Datos first-party y curacion activa&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Variante de receta o spec&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200 a 2.000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;La variable cambia la respuesta, no solo el encabezado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Cluster puro de contenido IA&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ilimitada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Casi nunca sobrevive la puerta de commodity&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;integración-con-estrategia-de-seo-más-amplia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-estrategia-de-seo-más-amplia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con estrategia de SEO más amplia&lt;/h2&gt;
&lt;p&gt;El pSEO no existe en aislamiento. Debe integrarse con su estrategia general de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt;:&lt;/p&gt;
&lt;h3 id=&quot;autoridad-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autoridad-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autoridad temática&lt;/h3&gt;
&lt;p&gt;Las páginas programaticas alimentan la autoridad temática de su sitio cuando estan correctamente interenlazadas con contenido pilar de alta calidad. Cada página de ubicacion debe enlazar a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guias completas sobre el servicio&lt;/li&gt;
&lt;li&gt;Casos de estudio relevantes&lt;/li&gt;
&lt;li&gt;Páginas de servicio principales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;enlazado-interno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enlazado-interno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enlazado interno&lt;/h3&gt;
&lt;p&gt;Implemente una estrategia de enlazado interno que conecte:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Páginas programaticas entre si (ciudades cercanas, servicios relacionados)&lt;/li&gt;
&lt;li&gt;Páginas programaticas con contenido pilar&lt;/li&gt;
&lt;li&gt;Contenido pilar con páginas de conversión&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;medicion-y-optimización-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-y-optimización-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion y optimización continua&lt;/h2&gt;
&lt;h3 id=&quot;metricas-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas clave&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas indexadas&lt;/strong&gt;: Porcentaje de páginas programaticas indexadas por Google&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impresiones por página&lt;/strong&gt;: Visibilidad promedio en resultados de búsqueda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CTR&lt;/strong&gt;: Tasa de clics desde resultados de búsqueda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico organico agregado&lt;/strong&gt;: Tráfico total generado por todas las páginas programaticas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversiones&lt;/strong&gt;: Leads o ventas generadas por páginas programaticas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;iteracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#iteracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Iteracion&lt;/h3&gt;
&lt;p&gt;Revise mensualmente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Que patrones de páginas generan más tráfico&lt;/li&gt;
&lt;li&gt;Cuales tienen tasas de rebote altas (necesitan mejora de contenido)&lt;/li&gt;
&lt;li&gt;Que páginas no se indexan (problemas técnicos)&lt;/li&gt;
&lt;li&gt;Oportunidades para nuevos patrones de palabras clave&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;El SEO Programatico con WordPress en 2026 no se trata de generar páginas en masa. Se trata de crear valor escalable a través de datos únicos, contenido enriquecido y una experiencia de usuario excepcional en cada página generada.&lt;/p&gt;
&lt;p&gt;La clave del éxito es el equilibrio entre escala y calidad. WordPress, con sus CPTs, API REST y ecosistema de herramientas, proporciona la base perfecta para construir motores de contenido programatico que generan tráfico sostenible.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; y el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress personalizado&lt;/a&gt; en WPPoland. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactenos&lt;/a&gt; para discutir su estrategia de pSEO.&lt;/p&gt;</content:encoded><category>seo</category><category>development</category><category domain="tag">seo-programatico</category><category domain="tag">automatizacion</category><category domain="tag">cpt</category><category domain="tag">escalabilidad</category><category domain="tag">meta-data</category><enclosure url="https://wppoland.com/images/og/tech-community-engagement.jpg" type="image/jpeg"/></item><item><title>Rendimiento Mobile-First: Estrategias de optimización para el indice móvil 2026</title><link>https://wppoland.com/es/mobile-first-performance-strategies-2026-mobile-index-guide/</link><guid isPermaLink="true">https://wppoland.com/es/mobile-first-performance-strategies-2026-mobile-index-guide/</guid><description>En 2026, la velocidad móvil es la única que importa. Esta guía explora estrategias avanzadas para lograr Core Web Vitals perfectos en dispositivos móviles.</description><pubDate>Fri, 07 Nov 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, la velocidad móvil es la única velocidad que importa. Google utiliza exclusivamente el indice móvil para determinar rankings de búsqueda, y la referencia ya no es un iPhone de gama alta, sino un smartphone de gama media con CPU limitada, 4GB de RAM y conexión 4G. Si su sitio WordPress no ofrece una experiencia móvil excepcional, esta perdiendo posiciones, tráfico e ingresos.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía cubre las estrategias avanzadas necesarias para lograr Core Web Vitals perfectos en dispositivos móviles, desde la carga adaptativa por dispositivo hasta la optimización del Back-Forward Cache.&lt;/p&gt;
&lt;h2 id=&quot;1-el-indice-móvil-2026-lo-que-ha-cambiado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-indice-móvil-2026-lo-que-ha-cambiado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El indice móvil 2026: Lo que ha cambiado&lt;/h2&gt;
&lt;p&gt;El indice móvil de Google ha evolucionado significativamente desde su introduccion. En 2026, los cambios clave incluyen:&lt;/p&gt;
&lt;h3 id=&quot;dispositivo-de-referencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dispositivo-de-referencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dispositivo de referencia&lt;/h3&gt;
&lt;p&gt;Google ya no evalua su sitio con un iPhone Pro Max o un Pixel premium. La referencia es un &lt;strong&gt;dispositivo de gama media&lt;/strong&gt; con estas especificaciones aproximadas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: Snapdragon 695 o equivalente (2.2 GHz)&lt;/li&gt;
&lt;li&gt;RAM: 4-6 GB&lt;/li&gt;
&lt;li&gt;Pantalla: 6.5” Full HD&lt;/li&gt;
&lt;li&gt;Conexión: 4G con 10 Mbps de bajada&lt;/li&gt;
&lt;li&gt;GPU: Adreno 619&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto significa que las animaciones suaves y las transiciones que funcionan perfectamente en un iPhone 16 Pro pueden causar problemas de INP en el dispositivo que Google usa como referencia. La optimización móvil en 2026 es optimización para la gama media.&lt;/p&gt;
&lt;h3 id=&quot;core-web-vitals-móviles-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#core-web-vitals-móviles-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Core Web Vitals móviles en 2026&lt;/h3&gt;
&lt;p&gt;Los umbrales actuales son:&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Bueno&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Necesita mejora&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Malo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;LCP (Largest Contentful Paint)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 2.5s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.5-4.0s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&gt; 4.0s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;INP (Interaction to Next Paint)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 200ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-500ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&gt; 500ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;CLS (Cumulative Layout Shift)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 0.1&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.1-0.25&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&gt; 0.25&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para competir en nichos competitivos, los objetivos reales deben ser:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LCP &amp;#x3C; 1.5s&lt;/strong&gt; (no solo “bueno”, sino excelente)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INP &amp;#x3C; 100ms&lt;/strong&gt; (instantaneo al tacto)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLS &amp;#x3C; 0.05&lt;/strong&gt; (practicamente cero shift)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-carga-adaptativa-por-dispositivo-device-aware-loading&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-carga-adaptativa-por-dispositivo-device-aware-loading&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Carga adaptativa por dispositivo (Device-Aware Loading)&lt;/h2&gt;
&lt;p&gt;Una de las estrategias más avanzadas en 2026 es servir contenido diferente según las capacidades del dispositivo del usuario.&lt;/p&gt;
&lt;h3 id=&quot;deteccion-de-capacidades-del-dispositivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deteccion-de-capacidades-del-dispositivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deteccion de capacidades del dispositivo&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Detectar capacidades del dispositivo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getDeviceCapabilities&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Nucleos de CPU&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    cores: navigator.hardwareConcurrency &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Memoria disponible (en GB)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    memory: navigator.deviceMemory &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Conexion de red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    connection: navigator.connection?.effectiveType &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;4g&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Preferencia de datos reducidos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    saveData: navigator.connection?.saveData &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Soporte de formatos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    avif: document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;canvas&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toDataURL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image/avif&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;startsWith&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;data:image/avif&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;servir-contenido-adaptativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#servir-contenido-adaptativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Servir contenido adaptativo&lt;/h3&gt;
&lt;p&gt;Basandose en las capacidades detectadas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dispositivos de gama alta (8+ cores, 8+ GB RAM, 5G):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Imágenes AVIF de alta calidad&lt;/li&gt;
&lt;li&gt;JavaScript completo con animaciones&lt;/li&gt;
&lt;li&gt;Precarga agresiva con Speculation Rules&lt;/li&gt;
&lt;li&gt;Video backgrounds cuando aplique&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dispositivos de gama media (4-6 cores, 4-6 GB RAM, 4G):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Imágenes WebP de calidad media&lt;/li&gt;
&lt;li&gt;JavaScript reducido, animaciones CSS simples&lt;/li&gt;
&lt;li&gt;Precarga selectiva solo de enlaces principales&lt;/li&gt;
&lt;li&gt;Sin video backgrounds, imágenes estaticas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dispositivos de gama baja (2-4 cores, &amp;#x3C;4 GB RAM, 3G):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Imágenes JPEG comprimidas agresivamente&lt;/li&gt;
&lt;li&gt;JavaScript minimo (funcionalidad esencial)&lt;/li&gt;
&lt;li&gt;Sin precarga (preservar ancho de banda)&lt;/li&gt;
&lt;li&gt;Layout simplificado sin efectos visuales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación en WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Detectar dispositivo y adaptar contenido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; device_aware_content_strategy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Usar Client Hints cuando esten disponibles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $memory &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTTP_SEC_CH_DEVICE_MEMORY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        ?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;float&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)$_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTTP_SEC_CH_DEVICE_MEMORY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $ect &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTTP_ECT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        ?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTTP_ECT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Definir nivel de rendimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($memory &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $memory &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $ect &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;4g&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEVICE_TIER&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;high&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;elseif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($memory &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $memory &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEVICE_TIER&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;low&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEVICE_TIER&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;medium&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;device_aware_content_strategy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;3-optimización-de-lcp-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-optimización-de-lcp-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Optimización de LCP móvil&lt;/h2&gt;
&lt;p&gt;El Largest Contentful Paint (LCP) es tipicamente la metrica más dificil de optimizar en móvil porque depende de la red, la CPU y el tamaño del contenido.&lt;/p&gt;
&lt;h3 id=&quot;identificar-el-elemento-lcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#identificar-el-elemento-lcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Identificar el elemento LCP&lt;/h3&gt;
&lt;p&gt;En la mayoria de las páginas WordPress, el elemento LCP móvil es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La imagen hero/destacada del post&lt;/li&gt;
&lt;li&gt;Una imagen de banner del slider&lt;/li&gt;
&lt;li&gt;El primer bloque de texto largo (en páginas sin imágenes)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategias-de-optimización-lcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-optimización-lcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de optimización LCP&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Precargar el recurso LCP:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/images/hero-móvil.avif&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetchpriority&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;high&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Eliminar cadenas de descubrimiento:&lt;/strong&gt;
El navegador debe descubrir el recurso LCP lo antes posible:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El HTML se descarga (TTFB)&lt;/li&gt;
&lt;li&gt;Se descubre el recurso LCP en el HTML&lt;/li&gt;
&lt;li&gt;Se inicia la descarga del recurso&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si su imagen hero esta referenciada en una hoja CSS externa (background-image), el navegador no la descubrira hasta que descargue y parsee el CSS. Use &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt; directamente en el HTML con &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formato de imagen optimo:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/images/hero-400.avif 400w,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                  /images/hero-800.avif 800w&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sizes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;100vw&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/images/hero-400.webp 400w,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                  /images/hero-800.webp 800w&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sizes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;100vw&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/images/hero-800.jpg&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Descripcion relevante&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;800&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;450&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       fetchpriority&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;high&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       decoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;async&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Tamaños de imagen móvil-específicos:&lt;/strong&gt;
No sirva la misma imagen a móvil y escritorio. Una pantalla móvil de 400px de ancho no necesita una imagen de 1920px:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Anadir tamanos de imagen optimizados para móvil&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_mobile_image_sizes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mobile-hero&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;480&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;270&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mobile-thumbnail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;320&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;180&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_mobile_image_sizes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-optimización-de-inp-interaction-to-next-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-optimización-de-inp-interaction-to-next-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Optimización de INP (Interaction to Next Paint)&lt;/h2&gt;
&lt;p&gt;INP mide la responsividad del sitio al toque del usuario. En móvil, donde las interacciones son exclusivamente tactiles, el INP es crítico.&lt;/p&gt;
&lt;h3 id=&quot;principales-causas-de-mal-inp-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#principales-causas-de-mal-inp-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Principales causas de mal INP móvil&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;JavaScript pesado en el hilo principal&lt;/strong&gt;: Scripts de terceros (analytics, chat, ads) que bloquean la interacción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hidratacion de frameworks&lt;/strong&gt;: React/Vue/Angular hidratando componentes despues de la carga inicial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handlers de eventos costosos&lt;/strong&gt;: Event listeners que ejecutan calculos pesados al tocar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long tasks&lt;/strong&gt;: Tareas que ocupan el hilo principal por más de 50ms.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;estrategias-de-mejora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-mejora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de mejora&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Aplazar JavaScript no crítico:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Cargar analytics despues de la interaccion del usuario --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; analyticsLoaded &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loadAnalytics&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (analyticsLoaded) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    analyticsLoaded &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Cargar scripts de analytics aqui&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    script.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/analytics.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    document.head.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(script);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Cargar al primer toque, scroll o despues de 5 segundos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;touchstart&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;scroll&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;keydown&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(event, loadAnalytics, { once: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, passive: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  setTimeout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(loadAnalytics, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Usar requestIdleCallback para tareas no urgentes:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejecutar tareas no criticas cuando el navegador esta inactivo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;requestIdleCallback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;deadline&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (deadline.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;timeRemaining&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Ejecutar tarea no critica&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    processNonCriticalTask&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Optimizar event listeners:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mal: handler costoso sin debounce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;button.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, heavyCalculation);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bien: handler optimizado con requestAnimationFrame&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;button.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  requestAnimationFrame&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    heavyCalculation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-prevencion-de-cls-en-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-prevencion-de-cls-en-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Prevencion de CLS en móvil&lt;/h2&gt;
&lt;p&gt;El Cumulative Layout Shift (CLS) es especialmente problematico en móvil donde el espacio de pantalla es limitado y cualquier movimiento es muy visible y molesto.&lt;/p&gt;
&lt;h3 id=&quot;causas-principales-de-cls-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#causas-principales-de-cls-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Causas principales de CLS móvil&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Imágenes sin dimensiones explicitas&lt;/li&gt;
&lt;li&gt;Fuentes web que causan FOUT/FOIT&lt;/li&gt;
&lt;li&gt;Anuncios y contenido inyectado dinamicamente&lt;/li&gt;
&lt;li&gt;Barras de navegación que cambian de tamaño al hacer scroll&lt;/li&gt;
&lt;li&gt;Teclado virtual que empuja contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;soluciónes-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soluciónes-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soluciónes WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Reservar espacio para imágenes:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Aspect ratio boxes para imagenes */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.wp-post-image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  aspect-ratio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  object-fit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Precargar fuentes criticas:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/fonts/main-font.woff2&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;font&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;font/woff2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; crossorigin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Usar font-display: swap con fallback metrico similar */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@font-face&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  font-family&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;MainFont&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/fonts/main-font.woff2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woff2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  font-display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;swap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  size-adjust&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;98&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  ascent-override&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;95&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  descent-override&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;22&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Reservar espacio para anuncios:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.ad-slot&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  min-height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;250&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Altura del anuncio esperado */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f5f5f5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  contain&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: layout;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-back-forward-cache-bfcache-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-back-forward-cache-bfcache-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Back-Forward Cache (bfcache) para WordPress&lt;/h2&gt;
&lt;p&gt;El bfcache permite que el navegador almacene páginas completas en memoria cuando el usuario navega “atras” o “adelante”. En móvil, donde el boton “atras” es el patron de navegación más comun, optimizar el bfcache es crítico.&lt;/p&gt;
&lt;h3 id=&quot;que-impide-el-bfcache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-impide-el-bfcache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que impide el bfcache&lt;/h3&gt;
&lt;p&gt;Muchas prácticas comunes en WordPress impiden que las páginas se almacenen en bfcache:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;unload&lt;/code&gt; event listeners&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Cache-Control: no-store&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Conexiones WebSocket activas&lt;/li&gt;
&lt;li&gt;Service workers que interceptan la navegación&lt;/li&gt;
&lt;li&gt;&lt;code&gt;window.opener&lt;/code&gt; references&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;como-verificar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-verificar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como verificar&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificar si la página se restauro del bfcache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;window.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pageshow&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (event.persisted) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Página restaurada del bfcache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Actualizar contenido dinamico si es necesario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    refreshDynamicContent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;optimización-wordpress-para-bfcache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-wordpress-para-bfcache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización WordPress para bfcache&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar listeners problematicos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; optimize_for_bfcache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar unload handlers de scripts enqueue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_deregister_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;problematic-script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Asegurar headers compatibles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_user_logged_in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Cache-Control: public, max-age=300&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;optimize_for_bfcache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;99&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-touch-targets-y-accesibilidad-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-touch-targets-y-accesibilidad-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Touch targets y accesibilidad móvil&lt;/h2&gt;
&lt;p&gt;En 2026, los touch targets son una señal de ranking móvil. Google penaliza sitios donde los elementos tactiles son demasiado pequeños o estan demasiado juntos.&lt;/p&gt;
&lt;h3 id=&quot;requisitos-minimos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-minimos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos minimos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tamaño minimo&lt;/strong&gt;: 48x48px CSS pixels para todos los elementos interactivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Espaciado minimo&lt;/strong&gt;: 8px entre touch targets adyacentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zona de toque&lt;/strong&gt;: El area de toque debe ser al menos 44x44px incluso si el elemento visual es más pequeño&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Asegurar touch targets minimos */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;textarea&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  min-height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  min-width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Mejorar la experiencia tactil */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  -webkit-tap-highlight-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;transparent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  touch-action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;manipulation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;menús-móviles-optimizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#menús-móviles-optimizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Menús móviles optimizados&lt;/h3&gt;
&lt;p&gt;Los menús de navegación en móvil deben ser especialmente cuidadosos con los touch targets:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.mobile-nav&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 24&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  min-height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  font-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Minimo legible sin zoom */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  line-height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.mobile-nav&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; li&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; li&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  border-top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; #eee&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;8-herramientas-de-prueba-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-herramientas-de-prueba-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Herramientas de prueba móvil&lt;/h2&gt;
&lt;h3 id=&quot;pruebas-de-laboratorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-laboratorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de laboratorio&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lighthouse&lt;/strong&gt; (Chrome DevTools): Simulacion de dispositivo móvil con throttling de CPU y red&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PageSpeed Insights&lt;/strong&gt;: Datos reales (CrUX) + simulacion de laboratorio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebPageTest&lt;/strong&gt;: Pruebas en dispositivos reales con diferentes ubicaciones geograficas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pruebas-de-campo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-campo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de campo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chrome User Experience Report (CrUX)&lt;/strong&gt;: Datos reales de usuarios Chrome&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console (Core Web Vitals Report)&lt;/strong&gt;: Datos de rendimiento móvil de su sitio real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RUM (Real User Monitoring)&lt;/strong&gt;: Herramientas como Speedcurve, Calibre o New Relic para monitoreo continuo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pruebas-en-dispositivos-reales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-en-dispositivos-reales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas en dispositivos reales&lt;/h3&gt;
&lt;p&gt;Ningun simulador puede replicar completamente la experiencia en un dispositivo real. Mantenga al menos estos dispositivos para pruebas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un smartphone de gama media (Moto G o Samsung Galaxy A)&lt;/li&gt;
&lt;li&gt;Un smartphone de gama alta (iPhone/Pixel reciente)&lt;/li&gt;
&lt;li&gt;Una tablet (iPad o Samsung Tab)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;El rendimiento móvil en 2026 es el factor individual más importante para el éxito de un sitio WordPress en búsqueda organica. La optimización no se trata de trucos o plugins magicos, sino de decisiones arquitectonicas fundamentales: servir contenido adaptado al dispositivo, optimizar cada metrica de Core Web Vitals y asegurar que la experiencia tactil sea impecable.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para optimizar el rendimiento móvil de su sitio WordPress, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; ofrece servicios especializados de &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; que incluyen auditoria móvil completa, implementación de carga adaptativa y monitorización continua de Core Web Vitals.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Servicio completo de optimización&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación mobile-first&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; - Posicionamiento móvil&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad&lt;/a&gt; - Seguridad sin comprometer rendimiento&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>performance</category><category>seo</category><category domain="tag">mobile-first</category><category domain="tag">mobile-index-2026</category><category domain="tag">responsive-design</category><category domain="tag">device-aware-performance</category><category domain="tag">wordpress-mobile-speed</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>Modelos mentales para el desarrollo de WordPress: La guía completa</title><link>https://wppoland.com/es/wordpress-mental-models/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-mental-models/</guid><description>Una guía exhaustiva de modelos mentales para WordPress que ayudan a los desarrolladores a comprimir la complejidad, tomar mejores decisiones arquitectonicas y depurar de forma más efectiva.</description><pubDate>Mon, 27 Oct 2025 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Un modelo mental es una explicacion simplificada de como funciona algo. Es una representacion interna de la realidad externa. En el desarrollo de software, y específicamente en el desarrollo de WordPress, estos modelos nos ayudan a comprimir la complejidad en fragmentos manejables. Nos permiten construir mejores sitios web, escribir código más limpio y tomar decisiones arquitectonicas más inteligentes sin tener que mantener todo el codebase en nuestra memoria de trabajo.&lt;/p&gt;
&lt;p&gt;WordPress tiene más de 20 años. Lleva el legado de PHP 4, la revolucion de los tipos de post personalizados, la modernizacion de la API REST y el cambio de paradigma del Editor de Bloques (Gutenberg). Para navegar este ecosistema en expansion de manera efectiva, no puede depender de memorizar funciones. Necesita modelos mentales robustos.&lt;/p&gt;
&lt;p&gt;Ya sea que este depurando un conflicto de plugins, optimizando consultas de base de datos para una tienda WooCommerce de alto tráfico, o decidiendo entre tipos de post personalizados y taxonomías para una estructura de datos compleja, los modelos mentales sirven como su kit de herramientas cognitivo.&lt;/p&gt;
&lt;p&gt;Esta guía exhaustiva cubre los modelos mentales esenciales para convertirse en un ingeniero de WordPress de primer nivel.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;modelos-mentales-fundamentales-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modelos-mentales-fundamentales-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modelos mentales fundamentales de WordPress&lt;/h2&gt;
&lt;h3 id=&quot;1-el-sistema-de-hooks-arquitectura-basada-en-eventos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-sistema-de-hooks-arquitectura-basada-en-eventos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El sistema de hooks: arquitectura basada en eventos&lt;/h3&gt;
&lt;p&gt;En su corazon, WordPress es un sistema basado en eventos. El sistema de hooks (acciones y filtros) es el mecanismo que permite a WordPress ser extensible sin modificar el código core.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: Piense en el sistema de hooks como un &lt;strong&gt;bus de eventos&lt;/strong&gt; o una &lt;strong&gt;transmision de radio&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Acciones (&lt;code&gt;do_action&lt;/code&gt;)&lt;/strong&gt;: Son eventos sucediendo. “Oye, acabo de guardar un post!” o “Estoy a punto de renderizar el footer!”. Puede “sintonizar” estos eventos y ejecutar su propio código. Las acciones &lt;em&gt;hacen&lt;/em&gt; cosas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filtros (&lt;code&gt;apply_filters&lt;/code&gt;)&lt;/strong&gt;: Son datos pasando por una estacion de modificacion. “Aqui esta el título. Alguien quiere cambiarlo antes de que lo muestre?”. Usted captura los datos, los modifica, y &lt;em&gt;debe&lt;/em&gt; devolverlos. Los filtros &lt;em&gt;cambian&lt;/em&gt; cosas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Inmersion profunda&lt;/strong&gt;:
La secuencia importa. Los hooks se disparan en un orden específico durante el ciclo de vida de la solicitud.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;plugins_loaded&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;setup_theme&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;init&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wp_loaded&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;template_redirect&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si intenta acceder al usuario actual en &lt;code&gt;plugins_loaded&lt;/code&gt;, fallara porque la sesion del usuario aun no se ha inicializado. Su modelo mental debe incluir la &lt;strong&gt;dimension temporal&lt;/strong&gt; del ciclo de vida de la solicitud.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// MAL: Intentar redirigir despues de que los headers se enviaron&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_footer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;restringido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/login&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Error Fatal: Headers ya enviados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// CORRECTO: Engancharse lo suficientemente temprano para manejar redirecciones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;restringido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_user_logged_in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/login&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Principio clave&lt;/strong&gt;: Nunca modifique archivos core. Nunca modifique archivos del tema padre directamente. Use hooks para inyectar su lógica en el momento y lugar correctos.&lt;/p&gt;
&lt;h3 id=&quot;2-la-jerarquía-de-plantillas-el-arbol-de-decisiones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-la-jerarquía-de-plantillas-el-arbol-de-decisiones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. La jerarquía de plantillas: el arbol de decisiones&lt;/h3&gt;
&lt;p&gt;WordPress usa un arbol de decisiones estricto para determinar que archivo de plantilla cargar para cualquier URL dada. Esto no es aleatorio; es una cascada predecible de especificidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: Piense en ello como una &lt;strong&gt;cascada de especificidad&lt;/strong&gt;.
WordPress hace una serie de preguntas, desde la más específica a la más generica.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Es un post individual?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hay un &lt;code&gt;single-{post_type}-{slug}.php&lt;/code&gt;? (ej. &lt;code&gt;single-product-camisa-azul.php&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;No? Hay un &lt;code&gt;single-{post_type}.php&lt;/code&gt;? (ej. &lt;code&gt;single-product.php&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;No? Hay un &lt;code&gt;single.php&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;No? &lt;code&gt;singular.php&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;No? &lt;code&gt;index.php&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Es un archivo de categoría?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;category-{slug}.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;category-{id}.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;category.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;archive.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;index.php&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Aplicación práctica&lt;/strong&gt;:
Al depurar por que una página se ve de cierta manera, mire las clases del body (ej. &lt;code&gt;single-format-standard&lt;/code&gt;) o use una herramienta como “Show Current Template”. Su modelo mental deberia mapear instantaneamente la URL al archivo probable en disco.&lt;/p&gt;
&lt;h3 id=&quot;3-abstraccion-de-base-de-datos-el-modelo-objeto-relacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-abstraccion-de-base-de-datos-el-modelo-objeto-relacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Abstraccion de base de datos: el modelo objeto-relacional&lt;/h3&gt;
&lt;p&gt;WordPress tiene su propio ORM, accedido principalmente a través de &lt;code&gt;WP_Query&lt;/code&gt; y la clase &lt;code&gt;$wpdb&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: &lt;strong&gt;No toque el SQL&lt;/strong&gt;.
Piense en la base de datos como una caja negra con la que interactua via APIs de alto nivel. Escribir SQL crudo es una accion de “romper el vidrio en caso de emergencia”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;WP_Query&lt;/code&gt;&lt;/strong&gt;: La forma estándar de obtener posts. Maneja seguridad, cache y joins complejos automáticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;get_posts()&lt;/code&gt;&lt;/strong&gt;: Un wrapper más simple alrededor de &lt;code&gt;WP_Query&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;update_post_meta()&lt;/code&gt; / &lt;code&gt;get_post_meta()&lt;/code&gt;&lt;/strong&gt;: Almacenamiento clave-valor para objetos específicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;La trampa EAV (Entity-Attribute-Value)&lt;/strong&gt;:
WordPress usa un modelo EAV para metadata (&lt;code&gt;wp_postmeta&lt;/code&gt;, &lt;code&gt;wp_usermeta&lt;/code&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Flexibilidad infinita. Puede agregar cualquier campo a cualquier objeto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cons&lt;/strong&gt;: Rendimiento terrible para filtrar y ordenar en conjuntos de datos grandes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Modelo mental de rendimiento&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consultar por ID = Rápido (Clave primaria).&lt;/li&gt;
&lt;li&gt;Consultar por Taxonomía = Rápido (Tablas indexadas).&lt;/li&gt;
&lt;li&gt;Consultar por Meta Key = Lento (Escaneos completos de tabla o joins no optimizados).&lt;/li&gt;
&lt;li&gt;Consultar por Meta Value = Extremadamente lento.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// MAL: Meta Query en un sitio de alto tráfico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;meta_key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;color_favorito&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;meta_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;azul&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// BUENO: Tax Query&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;tax_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;taxonomy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;color&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;field&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;terms&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;azul&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-el-loop-el-patron-iterador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-el-loop-el-patron-iterador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. El Loop: el patron iterador&lt;/h3&gt;
&lt;p&gt;El Loop es el motor que procesa contenido. Es un patron &lt;strong&gt;iterador&lt;/strong&gt; estándar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: &lt;strong&gt;La maquina de estado global&lt;/strong&gt;.
Cuando llama a &lt;code&gt;the_post()&lt;/code&gt;, esta mutando el estado global. El objeto global &lt;code&gt;$post&lt;/code&gt; cambia al item actual en el loop. Esto afecta cada función que depende del “post actual” (como &lt;code&gt;the_title()&lt;/code&gt;, &lt;code&gt;get_the_ID()&lt;/code&gt;).&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// &amp;#x3C;--- Esta linea cambia el Estado Global!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // ... mostrar contenido ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// &amp;#x3C;--- CRITICO: Restaurar Estado Global&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Error comun&lt;/strong&gt;: Olvidar &lt;code&gt;wp_reset_postdata()&lt;/code&gt; despues de una consulta personalizada (loop secundario). Esto deja el objeto global &lt;code&gt;$post&lt;/code&gt; apuntando al último item de su consulta personalizada, lo que rompe la lógica de la página principal.&lt;/p&gt;
&lt;h2 id=&quot;modelos-de-arquitectura-avanzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modelos-de-arquitectura-avanzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modelos de arquitectura avanzada&lt;/h2&gt;
&lt;h3 id=&quot;5-el-editor-de-bloques-gutenberg-el-modelo-de-estado-de-componentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-el-editor-de-bloques-gutenberg-el-modelo-de-estado-de-componentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. El editor de bloques (Gutenberg): el modelo de estado de componentes&lt;/h3&gt;
&lt;p&gt;El desarrollo moderno de WordPress requiere un cambio de HTML renderizado por PHP a componentes basados en React.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: &lt;strong&gt;Serializacion vs. Hidratacion&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contexto de edicion (React)&lt;/strong&gt;: El editor es una aplicación React en vivo. El estado se gestiona en memoria. Los cambios suceden instantaneamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contexto de guardado (Serializacion)&lt;/strong&gt;: Cuando presiona “Actualizar”, el estado del bloque se serializa en comentarios HTML: &lt;code&gt;&amp;#x3C;!-- wp:my-block {&quot;color&quot;:&quot;rojo&quot;} /--&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frontend (HTML estatico)&lt;/strong&gt;: El navegador recibe el HTML estatico. No hay React en el frontend a menos que lo hidrate específicamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;6-seguridad-el-modelo-del-portero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-seguridad-el-modelo-del-portero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Seguridad: el modelo del portero&lt;/h3&gt;
&lt;p&gt;La seguridad no es una funcionalidad; es una mentalidad. En WordPress, debe adoptar el &lt;strong&gt;modelo del portero&lt;/strong&gt; en tres puntos de control específicos.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Entrada (La puerta)&lt;/strong&gt;: &lt;strong&gt;Validación&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Detenga datos malos en la puerta. Si espera un entero, conviertalo a &lt;code&gt;(int)&lt;/code&gt;. Si espera un email, use &lt;code&gt;is_email()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Procesamiento (La boveda)&lt;/strong&gt;: &lt;strong&gt;Sanitizacion&lt;/strong&gt; y &lt;strong&gt;Autorización&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sanitizacion&lt;/strong&gt;: Limpie los datos antes de ponerlos en la base de datos. &lt;code&gt;sanitize_text_field()&lt;/code&gt;, &lt;code&gt;sanitize_email()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autorización (Capacidades)&lt;/strong&gt;: Este usuario tiene las llaves de esta sala? &lt;code&gt;current_user_can(&apos;edit_posts&apos;)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intencion (Nonces)&lt;/strong&gt;: El usuario &lt;em&gt;quiso&lt;/em&gt; hacer esto? Los nonces protegen contra CSRF.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Salida (La ventana)&lt;/strong&gt;: &lt;strong&gt;Escape&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trate su base de datos como potencialmente contaminada. Siempre escape en la salida.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esc_html()&lt;/code&gt;, &lt;code&gt;esc_attr()&lt;/code&gt;, &lt;code&gt;esc_url()&lt;/code&gt;, &lt;code&gt;wp_kses()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;7-rendimiento-el-modelo-del-cuello-de-botella&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-rendimiento-el-modelo-del-cuello-de-botella&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Rendimiento: el modelo del cuello de botella&lt;/h3&gt;
&lt;p&gt;La optimización es el arte de encontrar la tuberia más estrecha.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: &lt;strong&gt;La ruta crítica&lt;/strong&gt;.
Que impide al usuario ver la página &lt;em&gt;ahora mismo&lt;/em&gt;?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TTFB (Time to First Byte)&lt;/strong&gt;: Tiempo de procesamiento del servidor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cuellos de botella: Ejecucion PHP, consultas a base de datos.&lt;/li&gt;
&lt;li&gt;Solución: Object Cache (Redis), Page Cache (Varnish/WP Rocket), PHP 8.x, Base de datos optimizada.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FCP (First Contentful Paint)&lt;/strong&gt;: Tiempo de renderizado.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cuellos de botella: CSS/JS bloqueante, imágenes enormes, fuentes web.&lt;/li&gt;
&lt;li&gt;Solución: Diferir JS, CSS crítico inline, optimizar imágenes (WebP/AVIF).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;8-la-api-rest-el-modelo-de-datos-desacoplado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-la-api-rest-el-modelo-de-datos-desacoplado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. La API REST: el modelo de datos desacoplado&lt;/h3&gt;
&lt;p&gt;La API REST transforma WordPress de un constructor de sitios web a una &lt;strong&gt;plataforma de aplicaciones de contenido&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: &lt;strong&gt;Fuente de contenido headless&lt;/strong&gt;.
WordPress se convierte en una base de datos con una interfaz JSON. El frontend puede ser cualquier cosa: una app Next.js, una app móvil o un refrigerador inteligente.&lt;/p&gt;
&lt;h2 id=&quot;donde-colocar-las-cosas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-colocar-las-cosas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde colocar las cosas&lt;/h2&gt;
&lt;h3 id=&quot;tipos-de-post-personalizados-vs-taxonomías-vs-meta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-post-personalizados-vs-taxonomías-vs-meta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de post personalizados vs. taxonomías vs. meta&lt;/h3&gt;
&lt;p&gt;La primera pregunta que hago: alguien va a filtrar alguna vez por este campo?&lt;/p&gt;
&lt;p&gt;Si la respuesta es sí, casi seguro que es una taxonomía. Las consultas de taxonomía golpean tablas join indexadas. Las consultas meta golpean &lt;code&gt;wp_postmeta&lt;/code&gt;, lo que en un sitio de 200 mil filas significa un escaneo completo de tabla y un JOIN sobre una columna &lt;code&gt;meta_value&lt;/code&gt; no indexada. He visto un portal inmobiliario en Madrid bajar de 8 s a 200 ms de TTFB al mover “ciudad” y “tipo_inmueble” de meta a taxonomías. El alojamiento estaba en Webempresa, y el hosting no tenía nada que ver con el problema.&lt;/p&gt;
&lt;p&gt;Una prueba sencilla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sustantivo con su propia URL y pantalla de edicion: tipo de post. Inmuebles, eventos, cursos.&lt;/li&gt;
&lt;li&gt;Palabra por la que la gente filtra: taxonomía. Provincia, color, año, marca.&lt;/li&gt;
&lt;li&gt;Numero que vive en una fila concreta y nunca aparece en una clausula &lt;code&gt;WHERE&lt;/code&gt;: meta. Precio, kilometraje, lat/lng para un solo pin del mapa.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La trampa es que ACF hace que meta parezca gratis. No lo es. Cada clave meta contra la que consultas es una regresion futura de rendimiento. Para tiendas que integran Bizum o Redsys, la latencia en checkout se traduce directamente en abandono, y el INCIBE ha documentado este patron en informes sobre disponibilidad de servicios digitales en PYMEs españolas.&lt;/p&gt;
&lt;h3 id=&quot;plugin-vs-tema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugin-vs-tema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugin vs. tema&lt;/h3&gt;
&lt;p&gt;Donde deberia ir el código?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: &lt;strong&gt;Contenido vs. Presentacion&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tema&lt;/strong&gt;: Controla como se &lt;em&gt;ven&lt;/em&gt; las cosas. Si cambio de tema, el estilo visual cambia, pero mis datos deberian permanecer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin&lt;/strong&gt;: Controla como &lt;em&gt;funcionan&lt;/em&gt; las cosas. Si cambio de tema, mis tipos de post personalizados, shortcodes y lógica deberian seguir disponibles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Regla de oro&lt;/strong&gt;: Si el usuario pierde sus datos (contenido, funcionalidad) cuando cambia de tema, puso el código en el lugar equivocado. Los meetups WordPress Madrid y WordPress Barcelona llevan años repitiendo este principio en charlas sobre arquitectura mantenible, y se alinea con la lógica de la AEPD cuando audita responsables del tratamiento bajo la LOPDGDD: la lógica crítica debe ser auditable, no estar enterrada en un tema desechable.&lt;/p&gt;
&lt;h3 id=&quot;multisite-el-modelo-de-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multisite-el-modelo-de-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multisite: el modelo de red&lt;/h3&gt;
&lt;p&gt;Multisite añade una nueva capa al modelo mental.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El modelo mental&lt;/strong&gt;: &lt;strong&gt;Edificio de pisos vs. casas independientes&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instalacion única&lt;/strong&gt;: Una casa. Usted controla todo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multisite&lt;/strong&gt;: Un edificio de pisos.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Super Admin&lt;/strong&gt;: El administrador de la finca. Controla la estructura, los plugins disponibles (luz/agua) y crea sitios nuevos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Site Admin&lt;/strong&gt;: El inquilino. Puede decorar su piso (opciones del tema) y activar electrodomesticos permitidos (plugins), pero no puede tirar paredes (instalar temas/plugins).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Separacion de datos&lt;/strong&gt;: Cada sitio tiene sus propias tablas (&lt;code&gt;wp_2_posts&lt;/code&gt;, &lt;code&gt;wp_3_posts&lt;/code&gt;), pero comparten la tabla &lt;code&gt;wp_users&lt;/code&gt;. Esto significa que un usuario existe en la &lt;em&gt;red&lt;/em&gt; pero debe ser añadido a un &lt;em&gt;sitio&lt;/em&gt; para tener un rol allí. En despliegues de Stackscale Madrid o Raiola con varias marcas bajo una sola red, esta separacion ahorra cientos de horas de mantenimiento al año.&lt;/p&gt;
&lt;h2 id=&quot;prácticas-wpcs-seguridad-datos-rest-y-consultas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prácticas-wpcs-seguridad-datos-rest-y-consultas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prácticas WPCS: seguridad, datos, REST y consultas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Validación, sanitizacion, escape:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;check_admin_referer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mi_accion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mi_nonce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edit_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post_id ) ) { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$raw  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;título&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$título &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_unslash&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $raw ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;título&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $título );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;h2&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $título ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/h2&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Consultas y rendimiento:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$q &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;product&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;no_found_rows&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;update_post_meta_cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;update_post_term_cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;el-orden-de-depuración-tema-plugin-núcleo-alojamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-orden-de-depuración-tema-plugin-núcleo-alojamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El orden de depuración: tema, plugin, núcleo, alojamiento&lt;/h2&gt;
&lt;p&gt;Cuando un sitio WordPress se rompe de una forma que no es obviamente autoinfligida, la pregunta nunca es “que esta mal”, sino “donde miro primero”. El orden importa porque invierte el coste de equivocarse.&lt;/p&gt;
&lt;p&gt;Cambia a un tema por defecto. Twenty Twenty-Four, sin child. El noventa por ciento de los tickets “el sitio esta roto” se resuelven aqui, y el diez por ciento restante tiene ahora un espacio de busqueda mucho mas pequeño. Si el bug sobrevive al cambio de tema, desactiva plugins por mitades. No de uno en uno. Mitades. Con 40 plugins esto encuentra al culpable en seis toggles en lugar de cuarenta.&lt;/p&gt;
&lt;p&gt;Solo entonces empiezas a mirar el núcleo o el alojamiento. He visto seniors españoles pasar medio dia culpando al núcleo de WordPress por algo que resulto ser Yoast y Rank Math registrando schema para el mismo post. Dos plugins de SEO activos a la vez es el “bug del núcleo” mas comun que no es un bug del núcleo.&lt;/p&gt;
&lt;p&gt;Algunos patrones de fallo que veo repetidamente con clientes en España:&lt;/p&gt;
&lt;p&gt;Un junior ve “necesito redirigir URLs antiguas” e instala Redirection. El sitio ya tiene 3000 redirecciones. Lo que se necesitaba eran cuatro lineas de &lt;code&gt;template_redirect&lt;/code&gt; y una regex en el &lt;code&gt;functions.php&lt;/code&gt; de un site-functionality plugin. En Webempresa o Raiola, una regla &lt;code&gt;.htaccess&lt;/code&gt; directa desde el panel habria bastado.&lt;/p&gt;
&lt;p&gt;Un generalista desactiva &lt;code&gt;wp-cron&lt;/code&gt; porque leyó que ralentiza el sitio. Olvida configurar un cron real del sistema apuntando a &lt;code&gt;wp-cron.php&lt;/code&gt;. Dos semanas despues los posts programados dejan de publicar, los transients nunca expiran, los emails de carrito abandonado de WooCommerce enmudecen, y el equipo no sabe por que – aun cuando el checkout via Bizum dependia de esa cola.&lt;/p&gt;
&lt;p&gt;Una agencia añade Redis para “arreglar el rendimiento” sin abrir nunca Query Monitor. Redis cachea lo que ya era rapido. El problema real es una &lt;code&gt;meta_query&lt;/code&gt; sobre &lt;code&gt;wp_postmeta&lt;/code&gt; ejecutandose 47 veces por request desde un widget de posts relacionados mal configurado. Cachear la consulta lenta solo significa que el cache miss es lento. Haz profiling antes de cachear.&lt;/p&gt;
&lt;p&gt;El modelo mental debajo de todo esto: WordPress es rapido por defecto. Cuando va lento, algo concreto esta mal, y un remedio generico no lo va a encontrar.&lt;/p&gt;
&lt;h2 id=&quot;artículos-recomendados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#artículos-recomendados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Artículos recomendados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/estrategias-avanzadas-de-caching-wordpress-2026-guia&quot;&gt;Estrategias avanzadas de caching WordPress 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/arquitectura-headless-wordpress-2026-guia&quot;&gt;Arquitectura headless WordPress 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/wordpress-rest-api-vs-graphql-2026-en&quot;&gt;WordPress REST API vs GraphQL 2026 (EN)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lo-que-la-experiencia-realmente-compra&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-la-experiencia-realmente-compra&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que la experiencia realmente compra&lt;/h2&gt;
&lt;p&gt;La diferencia entre un desarrollador WordPress de cinco años y uno de quince no son mas funciones memorizadas. Es una lista mas corta de preguntas hechas antes de tocar el código.&lt;/p&gt;
&lt;p&gt;Cuando algo se rompe, la respuesta experta es “tema, plugin, núcleo, alojamiento, en ese orden” antes incluso de abrir el editor. Cuando una pagina va lenta, es “abre Query Monitor, ordena por tiempo, busca &lt;code&gt;meta_query&lt;/code&gt; o autoload bloat” antes de que nadie diga la palabra Redis. Cuando un cliente quiere un campo nuevo, es “alguien va a filtrar por esto” antes de que nadie toque ACF.&lt;/p&gt;
&lt;p&gt;El sistema de hooks, la jerarquía de plantillas, el loop, el modelo del portero para seguridad alineada con AENOR EN 17161, el impuesto EAV sobre las consultas meta, el hueco de serializacion entre Gutenberg y el frontend. Nada de esto es ingenioso. Es simplemente la forma real de WordPress, y o luchas contra ella o la usas. Dos lineas en &lt;code&gt;functions.php&lt;/code&gt; ganan a una plugin la mayoria de los dias. Una taxonomia gana a una meta key en cualquier sitio que crece por encima de 10 mil posts. &lt;code&gt;template_redirect&lt;/code&gt; gana a &lt;code&gt;wp_footer&lt;/code&gt; para todo lo que involucre headers.&lt;/p&gt;
&lt;p&gt;La señal de un junior es resolver cada problema añadiendo algo: una plugin, una capa de cache, un wrapper. La señal de un senior es quitar algo o moverlo a donde la plataforma ya lo queria. Lee el núcleo. Lee lo que &lt;code&gt;WP_Query&lt;/code&gt; realmente hace en &lt;code&gt;wp-includes/class-wp-query.php&lt;/code&gt;. Una vez que has visto el loop desplegarse en la fuente, dejas de sorprenderte por el en el frontend.&lt;/p&gt;</content:encoded><category>wordpress</category><category>development</category><category domain="tag">mental models</category><category domain="tag">architecture</category><category domain="tag">best practices</category><category domain="tag">debugging</category><enclosure url="https://wppoland.com/images/og/debugging-complex-wordpress-site.jpg" type="image/jpeg"/></item><item><title>CI/CD para WordPress: Automatizando tu despliegue en 2026</title><link>https://wppoland.com/es/ci-cd-wordpress-automation-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/ci-cd-wordpress-automation-guide-2026/</guid><description>Las subidas manuales por FTP son un riesgo de seguridad. Aprende a implementar pipelines CI/CD profesionales para WordPress usando GitHub Actions y Docker en 2026.</description><pubDate>Sun, 26 Oct 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Quedaron atras los dias de arrastrar archivos via FileZilla y cruzar los dedos. En 2026, la &lt;strong&gt;Integración Continua y el Despliegue Continuo (CI/CD)&lt;/strong&gt; es el estándar de la industria para cualquier &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; profesional. Si no estas automatizando tus despliegues, te estas quedando atras respecto a tus competidores y poniendo en riesgo la estabilidad de tus proyectos.&lt;/p&gt;
&lt;p&gt;La automatizacion del despliegue no es un lujo reservado para grandes empresas tecnológicas. Es una necesidad fundamental que protege tu negocio, reduce errores y te permite centrarte en lo que realmente importa: construir funcionalidades increibles para tus clientes.&lt;/p&gt;
&lt;h2 id=&quot;1-por-que-el-despliegue-manual-esta-muerto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-por-que-el-despliegue-manual-esta-muerto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Por que el despliegue manual esta muerto&lt;/h2&gt;
&lt;p&gt;El despliegue manual es lento, inconsistente y peligroso. Representa uno de los mayores riesgos operativos para cualquier sitio WordPress profesional, y en 2026 no hay excusa para seguir utilizandolo.&lt;/p&gt;
&lt;h3 id=&quot;error-humano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-humano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error humano&lt;/h3&gt;
&lt;p&gt;Olvidar subir un solo archivo puede romper un sitio entero. Cuando subes archivos manualmente via FTP, dependes de tu memoria y atención para asegurarte de que cada archivo llega al lugar correcto, con los permisos correctos, en el orden correcto. Es un proceso inherentemente propenso a errores, especialmente bajo presion o en horarios extendidos.&lt;/p&gt;
&lt;p&gt;Los errores más comunes incluyen sobrescribir archivos de configuración de producción con versiones de desarrollo, olvidar subir dependencias actualizadas, mezclar archivos de diferentes ramás de desarrollo y omitir archivos críticos durante actualizaciones parciales. Cada uno de estos errores puede causar desde errores menores hasta caidas completas del sitio.&lt;/p&gt;
&lt;h3 id=&quot;seguridad-comprometida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-comprometida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad comprometida&lt;/h3&gt;
&lt;p&gt;Las credenciales SFTP/FTP almacenadas en los laptops de los desarrolladores son objetivos de alto riesgo para malware. Un solo laptop comprometido puede dar acceso a un atacante a todos los servidores de producción donde ese desarrollador tiene credenciales. Con CI/CD, las credenciales se almacenan de forma segura en boveaux de secretos, nunca en maquinas locales.&lt;/p&gt;
&lt;p&gt;Además, el protocolo FTP transmite credenciales en texto plano, y aunque SFTP mejora esto significativamente, el almacenamiento local de credenciales sigue siendo un vector de ataque serio. Los pipelines CI/CD utilizan claves SSH efimeras y tokens de acceso temporales que minimizan drastic la superficie de ataque.&lt;/p&gt;
&lt;h3 id=&quot;transparencia-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transparencia-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transparencia total&lt;/h3&gt;
&lt;p&gt;Con CI/CD, existe un registro claro de &lt;em&gt;quien&lt;/em&gt; desplego &lt;em&gt;que&lt;/em&gt; y &lt;em&gt;cuando&lt;/em&gt;. Cada cambio esta vinculado a un commit de Git, una solicitud de extraccion y un registro de pipeline. Si algo sale mal, puedes rastrear exactamente que cambio causo el problema y quien lo aprobo. Esta trazabilidad es invaluable para equipos de cualquier tamaño.&lt;/p&gt;
&lt;h3 id=&quot;consistencia-garantizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consistencia-garantizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consistencia garantizada&lt;/h3&gt;
&lt;p&gt;El proceso de despliegue es identico cada vez, sin importar quien lo ejecute ni a que hora del dia. Los scripts de CI/CD ejecutan exactamente los mismos pasos, en el mismo orden, con las mismás verificaciónes. No hay variabilidad humana, no hay atajos tomados bajo presion, no hay pasos olvidados por cansancio.&lt;/p&gt;
&lt;h2 id=&quot;2-el-stack-cicd-de-2026-github-actions&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-stack-cicd-de-2026-github-actions&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El stack CI/CD de 2026: GitHub Actions&lt;/h2&gt;
&lt;p&gt;GitHub Actions ha ganado las “guerras de automatizacion”. Esta profundamente integrado con el ecosistema de desarrollo moderno y es increiblemente poderoso, ofreciendo miles de acciones predefinidas y una flexibilidad casí ilimitada para flujos de trabajo personalizados.&lt;/p&gt;
&lt;h3 id=&quot;el-flujo-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-flujo-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El flujo completo&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;El Disparador&lt;/strong&gt;: Haces push del código a la rama &lt;code&gt;main&lt;/code&gt; o se fusiona una solicitud de extraccion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Construccion&lt;/strong&gt;: GitHub levanta un runner. Ejecuta &lt;code&gt;npm install&lt;/code&gt;, &lt;code&gt;composer install&lt;/code&gt;, y minifica tus assets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Las Pruebas&lt;/strong&gt;: Tus pruebas &lt;strong&gt;PHPUnit&lt;/strong&gt; y &lt;strong&gt;Jest&lt;/strong&gt; se ejecutan. Si fallan, el pipeline se detiene inmediatamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El Despliegue&lt;/strong&gt;: El código se sincroniza via SSH, Docker o APIs especializadas a tu servidor.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;configuración-de-un-workflow-básico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-un-workflow-básico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de un workflow básico&lt;/h3&gt;
&lt;p&gt;El archivo &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt; define todo el proceso. Específica los eventos que disparan el pipeline, las versiones de PHP y Node.js que se utilizan, los pasos de construccion y las condiciones de despliegue. Una configuración tipica incluye matrices de pruebas para multiples versiones de PHP, cache de dependencias para acelerar las ejecuciones y notificaciones de estado a Slack o correo electronico.&lt;/p&gt;
&lt;h3 id=&quot;runners-y-entornos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#runners-y-entornos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Runners y entornos&lt;/h3&gt;
&lt;p&gt;GitHub proporciona runners gratuitos con Ubuntu, Windows y macOS. Para proyectos WordPress, los runners Ubuntu son la opción más comun, ya que replican mejor el entorno de producción tipico. Para organizaciónes con requisitos específicos, los runners auto-hospedados permiten ejecutar pipelines en tu propia infraestructura con hardware y configuraciónes personalizadas.&lt;/p&gt;
&lt;h2 id=&quot;3-despliegues-atomicos-y-sin-tiempo-de-inactividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-despliegues-atomicos-y-sin-tiempo-de-inactividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Despliegues atomicos y sin tiempo de inactividad&lt;/h2&gt;
&lt;p&gt;Los usuarios modernos tienen tolerancia cero al tiempo de inactividad. Un sitio que muestra “Modo Mantenimiento” durante una actualización esta perdiendo clientes y credibilidad. Los despliegues atomicos eliminan este problema por completo.&lt;/p&gt;
&lt;h3 id=&quot;como-funcionan-los-despliegues-atomicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funcionan-los-despliegues-atomicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funcionan los despliegues atomicos&lt;/h3&gt;
&lt;p&gt;Desplegamos a una nueva carpeta (por ejemplo, &lt;code&gt;/releases/20260715&lt;/code&gt;). Una vez que la sincronizacion esta completa y verificada, actualizamos un enlace simbolico (&lt;code&gt;/current&lt;/code&gt;) para apuntar a la nueva carpeta. Este cambio toma milisegundos, y los usuarios nunca ven un sitio a medio subir ni un error “404 No Encontrado” mientras se copian archivos.&lt;/p&gt;
&lt;h3 id=&quot;estructura-de-directorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-de-directorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura de directorios&lt;/h3&gt;
&lt;p&gt;La estructura tipica de un despliegue atomico incluye un directorio &lt;code&gt;/releases/&lt;/code&gt; con multiples versiones, un enlace simbolico &lt;code&gt;/current&lt;/code&gt; que apunta a la versión activa, y un directorio &lt;code&gt;/shared/&lt;/code&gt; para archivos que persisten entre despliegues como &lt;code&gt;wp-content/uploads/&lt;/code&gt; y archivos de configuración. Esta estructura permite reversiones instantaneas simplemente cambiando el enlace simbolico.&lt;/p&gt;
&lt;h3 id=&quot;rollback-automático&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rollback-automático&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rollback automático&lt;/h3&gt;
&lt;p&gt;Si la verificación de salud post-despliegue detecta un problema, el sistema automáticamente revierte al release anterior cambiando el enlace simbolico. Todo el proceso de rollback toma menos de un segundo y no requiere intervencion humana. Los usuarios nunca perciben que hubo un problema.&lt;/p&gt;
&lt;h2 id=&quot;4-gestión-de-entornos-staging-es-obligatorio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-gestión-de-entornos-staging-es-obligatorio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Gestión de entornos: Staging es obligatorio&lt;/h2&gt;
&lt;p&gt;En 2026, nunca despliegas directamente a producción. Esta regla no tiene excepciones, sin importar cuan urgente sea la correccion o cuan pequeño sea el cambio.&lt;/p&gt;
&lt;h3 id=&quot;el-flujo-de-trabajo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-flujo-de-trabajo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El flujo de trabajo&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Rama -&gt; Solicitud de Extraccion -&gt; Staging -&gt; Producción&lt;/code&gt;. Cada paso incluye verificaciónes automáticas y opcionales revisiones humanas. Las solicitudes de extraccion disparan pruebas automáticas, las fusiones a staging disparan despliegues automáticos al entorno de staging, y solo despues de verificación en staging se promueve a producción.&lt;/p&gt;
&lt;h3 id=&quot;entornos-de-previsualizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entornos-de-previsualizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entornos de previsualizacion&lt;/h3&gt;
&lt;p&gt;Los CI/CD modernos pueden levantar un sitio “Preview” temporal para cada solicitud de extraccion, permitiendo que las partes interesadas revisen los cambios antes de que se fusionen. Esto es particularmente valioso para agencias WordPress donde los clientes necesitan aprobar cambios visuales antes del despliegue a producción.&lt;/p&gt;
&lt;h3 id=&quot;paridad-de-entornos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paridad-de-entornos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paridad de entornos&lt;/h3&gt;
&lt;p&gt;El entorno de staging debe ser lo más similar posible a producción: misma versión de PHP, mismo motor de base de datos, misma configuración del servidor, mismos plugins activos. Las diferencias entre staging y producción son la fuente más comun de errores “funciona en staging pero no en producción”.&lt;/p&gt;
&lt;h2 id=&quot;5-matriz-de-decision-estrategias-de-despliegue-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-matriz-de-decision-estrategias-de-despliegue-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Matriz de decision: Estrategias de despliegue 2026&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Estrategia&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Nivel de Riesgo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Dificultad de Configuración&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejor Para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;FTP Manual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Extremo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Principiantes / Hobbyistas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Git Push (Hooks)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Portfolios Pequeños&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;CI/CD (Atomico)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Muy Bajo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Media&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Negocio de Alta Gama&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Blue/Green&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Minimo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Enterprise / SaaS&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;despliegues-bluegreen-explicados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despliegues-bluegreen-explicados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despliegues Blue/Green explicados&lt;/h3&gt;
&lt;p&gt;En la estrategia Blue/Green, mantienes dos entornos de producción identicos. Uno (Blue) sirve el tráfico actual mientras el otro (Green) recibe la nueva versión. Una vez que Green esta verificado, cambias el tráfico. Si algo falla, revertir es instantaneo. Esta estrategia ofrece el maximo nivel de seguridad pero requiere infraestructura duplicada.&lt;/p&gt;
&lt;h3 id=&quot;despliegues-canary&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despliegues-canary&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despliegues Canary&lt;/h3&gt;
&lt;p&gt;Una variante avanzada donde la nueva versión se despliega inicialmente solo para un pequeño porcentaje del tráfico (por ejemplo, 5%). Si las metricas de error se mantienen bajas, el porcentaje se incrementa gradualmente hasta alcanzar el 100%. Esta técnica permite detectar problemas que solo aparecen bajo carga real sin afectar a todos los usuarios.&lt;/p&gt;
&lt;h2 id=&quot;6-pruebas-automatizadas-en-el-pipeline&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-pruebas-automatizadas-en-el-pipeline&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Pruebas automatizadas en el pipeline&lt;/h2&gt;
&lt;p&gt;Un pipeline CI/CD sin pruebas es como un coche sin frenos: puede ir rápido, pero no de forma segura. Las pruebas automatizadas son la red de seguridad que permite despliegues frecuentes con confianza.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-unitarias-con-phpunit&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-unitarias-con-phpunit&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas unitarias con PHPUnit&lt;/h3&gt;
&lt;p&gt;Verifica que las funciones individuales de tus plugins y temas producen los resultados esperados. Las pruebas unitarias son rápidas, no requieren base de datos y deben ejecutarse en cada push.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-integración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-integración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de integración&lt;/h3&gt;
&lt;p&gt;Verifican que los componentes de WordPress funcionan correctamente juntos. Estas pruebas utilizan una base de datos temporal y el framework de pruebas de WordPress para simular el entorno real.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-end-to-end-con-playwright&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-end-to-end-con-playwright&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas end-to-end con Playwright&lt;/h3&gt;
&lt;p&gt;Verifican flujos completos de usuario: navegación, formularios, proceso de compra de WooCommerce. Estas pruebas son más lentas pero proporcionan la mayor confianza de que el sitio funciona correctamente desde la perspectiva del usuario.&lt;/p&gt;
&lt;h3 id=&quot;análisis-de-código-estatico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-de-código-estatico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis de código estatico&lt;/h3&gt;
&lt;p&gt;Herramientas como PHPStan y PHP_CodeSniffer verifican la calidad del código sin ejecutarlo. Detectan errores de tipo, violaciones de estándares de codificacion y posibles vulnerabilidades de seguridad antes de que el código llegue a producción.&lt;/p&gt;
&lt;h2 id=&quot;7-gestión-de-secretos-y-configuración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-gestión-de-secretos-y-configuración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Gestión de secretos y configuración&lt;/h2&gt;
&lt;p&gt;La gestión segura de credenciales y configuración es un aspecto crítico de cualquier pipeline CI/CD. Las prácticas incorrectas pueden exponer datos sensibles y comprometer la seguridad de tus servidores.&lt;/p&gt;
&lt;h3 id=&quot;nunca-codifiques-credenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nunca-codifiques-credenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nunca codifiques credenciales&lt;/h3&gt;
&lt;p&gt;Nunca incluyas credenciales de base de datos o claves API directamente en tu código. Almacenalas en &lt;strong&gt;GitHub Secrets&lt;/strong&gt; u otro sistema de gestión de secretos. El pipeline CI/CD las inyecta en tiempo de construccion, asegurando que incluso si tu repositorio se filtra, tu servidor permanece seguro.&lt;/p&gt;
&lt;h3 id=&quot;variables-de-entorno-por-etapa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#variables-de-entorno-por-etapa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Variables de entorno por etapa&lt;/h3&gt;
&lt;p&gt;Cada entorno (desarrollo, staging, producción) debe tener su propio conjunto de variables de entorno. Los secretos de producción nunca deben ser accesibles desde entornos de desarrollo o staging. GitHub Actions permite definir secretos y variables a nivel de entorno, proporcionando aislamiento granular.&lt;/p&gt;
&lt;h3 id=&quot;rotacion-de-credenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rotacion-de-credenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rotacion de credenciales&lt;/h3&gt;
&lt;p&gt;Implementa rotacion automática de credenciales. Las claves API, tokens de acceso y contrasenas de base de datos deben rotarse regularmente. El pipeline debe ser capaz de actualizar las credenciales sin intervencion manual ni tiempo de inactividad.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pro-tip-monitoreo-post-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pro-tip-monitoreo-post-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PRO-Tip: Monitoreo post-despliegue&lt;/h2&gt;
&lt;p&gt;No basta con desplegar. Implementa verificaciónes de salud automáticas que monitorizan el sitio durante los primeros 30 minutos despues de cada despliegue. Verifica tiempos de respuesta, tasas de error, Core Web Vitals y funcionalidades criticas. Si alguna metrica supera los umbrales definidos, dispara una reversión automática.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Automatizar tu despliegue de WordPress es el hack de productividad definitivo. Reduce el estres, elimina errores y te permite centrarte en lo que importa: &lt;strong&gt;construir funcionalidades increibles&lt;/strong&gt;. La inversión en CI/CD se recupera desde el primer despliegue exitoso, y los beneficios se acumulan exponencialmente con cada iteracion.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; para complementar tu pipeline con las mejores prácticas de seguridad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estas listo para dejar de preocuparte por hacer clic en ‘Subir’? Domina CI/CD hoy.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category domain="tag">ci-cd</category><category domain="tag">automation</category><category domain="tag">github-actions</category><category domain="tag">devops</category><category domain="tag">deployment</category><enclosure url="https://wppoland.com/images/og/web-development-seminar-room.jpg" type="image/jpeg"/></item><item><title>Gobernanza de contenido para equipos grandes: Escalando WordPress sin caos</title><link>https://wppoland.com/es/content-governance-large-teams-wordpress-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/content-governance-large-teams-wordpress-guide-2026/</guid><description>Cuando tiene 50 editores y 5000 publicaciónes, WordPress por defecto no es suficiente. Aprenda a implementar gobernanza de contenido estricta, flujos editoriales y registros de auditoria en 2026.</description><pubDate>Sat, 25 Oct 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cuando es un blogger solitario, simplemente hace clic en “Publicar”. Cuando es un editor de medios con 50 editores, 5 oficiales de cumplimiento legal y 3 especialistas SEO, hacer clic en “Publicar” sin un proceso definido es una responsabilidad empresarial.&lt;/p&gt;
&lt;p&gt;En 2026, WordPress Empresarial se trata menos de escribir código y más de disenar &lt;strong&gt;flujos de trabajo de gobernanza&lt;/strong&gt; que protejan la marca mientras empoderan a los creadores de contenido.&lt;/p&gt;
&lt;p&gt;Esta guía de más de 2500 palabras describe como estructurar un entorno WordPress que empodere a los creadores mientras protege la marca, el cumplimiento regulatorio y la calidad del contenido.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-matriz-de-roles-mas-alla-de-editor-y-autor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-matriz-de-roles-mas-alla-de-editor-y-autor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La matriz de roles: Mas alla de “Editor” y “Autor”&lt;/h2&gt;
&lt;p&gt;Los roles predeterminados de WordPress son arcaicos para necesidades empresariales. Fueron disenados para blogs pequeños, no para organizaciónes con decenas de personas involucradas en el proceso de publicación.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-actual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-actual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema actual&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Administrador&lt;/strong&gt;: Tiene los “códigos nucleares”. Puede eliminar el sitio completo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor&lt;/strong&gt;: Puede publicar &lt;em&gt;cualquier cosa&lt;/em&gt;, incluyendo eliminar el trabajo de otras personas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autor&lt;/strong&gt;: Puede publicar su propio trabajo instantaneamente sin revision.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;El problema de gobernanza&lt;/strong&gt;: Probablemente tiene un “Escritor Junior” que deberia escribir pero &lt;em&gt;no&lt;/em&gt; publicar. Tiene un “Miembro del Equipo Legal” que deberia aprobar pero &lt;em&gt;no&lt;/em&gt; editar. Tiene un “Especialista SEO” que deberia optimizar metadatos pero &lt;em&gt;no&lt;/em&gt; alterar el contenido. Los roles predeterminados no pueden acomodar estas distinciones criticas.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-capacidades-granulares&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-capacidades-granulares&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Capacidades granulares&lt;/h3&gt;
&lt;p&gt;Usando herramientas como &lt;strong&gt;Members&lt;/strong&gt; o &lt;strong&gt;PublishPress Capabilities&lt;/strong&gt;, definimos roles personalizados que reflejan exactamente la estructura organizaciónal:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contribuidor+&lt;/strong&gt;: Puede subir medios (lo que los contribuidores por defecto no pueden) pero no puede publicar. Ideal para escritores freelance externos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aprobador SEO&lt;/strong&gt;: Puede editar meta tags y leer contenido, pero no puede cambiar el contenido del post. Perfecto para especialistas SEO que optimizan sin alterar el mensaje.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gestor de Layout&lt;/strong&gt;: Puede editar Bloques Reutilizables (Patrones Sincronizados) pero no publicaciónes individuales. Esencial para el equipo de diseño que mantiene componentes de marca.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revisor Legal&lt;/strong&gt;: Puede leer todo el contenido y agregar notas de revision, pero solo puede cambiar el estado a “Aprobado por Legal”. No tiene capacidad de edicion de contenido.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Editor Regional&lt;/strong&gt;: Puede editar y publicar contenido solo dentro de categorías o sitios asignados a su region. No tiene acceso a contenido de otras regiones.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;matriz-de-permisos-recomendada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#matriz-de-permisos-recomendada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Matriz de permisos recomendada&lt;/h3&gt;





































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Capacidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Escritor Jr.&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Aprobador SEO&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Revisor Legal&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Editor Regional&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Admin&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Crear borradores&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Subir medios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Editar meta SEO&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Aprobar legal&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Publicar&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Gestionar plugins&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Eliminar contenido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-pipelines-editoriales-el-flujo-kanban&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-pipelines-editoriales-el-flujo-kanban&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Pipelines editoriales (El flujo Kanban)&lt;/h2&gt;
&lt;p&gt;Necesita forzar una progresion lineal del contenido. Cada pieza de contenido debe pasar por etapas definidas antes de llegar al público, y cada etapa tiene un responsable claro.&lt;/p&gt;
&lt;h3 id=&quot;las-5-etapas-del-pipeline-editorial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-5-etapas-del-pipeline-editorial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las 5 etapas del pipeline editorial&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Etapa 1: Borrador&lt;/strong&gt;: El escritor trabaja en el contenido. Tiene libertad creativa total dentro de los patrones de marca aprobados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa 2: En revision&lt;/strong&gt;: Se envia email al Editor Jefe. El contenido se revisa por calidad, coherencia de mensaje y alineacion con la estrategia de contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa 3: Revision SEO&lt;/strong&gt;: La puntuacion de RankMath debe ser &gt;80. Se verifican meta tags, enlaces internos, schema markup y optimización de palabras clave.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa 4: Legal/Cumplimiento&lt;/strong&gt;: Se verifica la responsabilidad legal. Se revisan afirmaciones, fuentes citadas, disclaimers requeridos y cumplimiento regulatorio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa 5: Programado&lt;/strong&gt;: Bloqueado para publicación. Se asigna fecha y hora de publicación dentro del calendario editorial.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tecnologia-de-flujos-editoriales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tecnologia-de-flujos-editoriales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tecnologia de flujos editoriales&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;PublishPress Planners&lt;/strong&gt;: Agrega un calendario visual y estados personalizados a WordPress. Permite ver todo el pipeline en una vista de calendario, identificando cuellos de botella y huecos en el calendario editorial.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Oasis Workflow&lt;/strong&gt;: Permite botones de “Firma”. Por ejemplo, un post literalmente &lt;em&gt;no puede&lt;/em&gt; ser publicado hasta que el usuario con el rol “Legal” haga clic en “Aprobar”. Esta restriccion técnica elimina el riesgo de publicación accidental.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;flujo-avanzado-con-notificaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-avanzado-con-notificaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo avanzado con notificaciones&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Escritor crea borrador]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    → Notificacion Slack: &quot;Nuevo borrador pendiente de revision&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        → [Editor revisa y aprueba]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            → Notificacion automática al equipo SEO&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                → [SEO optimiza y aprueba]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    → Notificacion automática al equipo Legal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                        → [Legal revisa y aprueba]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                            → Contenido se programa automáticamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                → Notificacion al escritor: &quot;Tu artículo se publica el [fecha]&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;metricas-del-pipeline&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-del-pipeline&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas del pipeline&lt;/h3&gt;
&lt;p&gt;Mida la eficiencia de su pipeline editorial:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tiempo promedio de borrador a publicación&lt;/strong&gt;: Objetivo &amp;#x3C; 5 dias laborables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de rechazo por etapa&lt;/strong&gt;: Identificar donde se generan más revisiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuellos de botella&lt;/strong&gt;: Que etapa acumula más contenido pendiente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Productividad por escritor&lt;/strong&gt;: Artículos publicados por mes por persona&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-controlando-el-editor-bloqueo-de-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-controlando-el-editor-bloqueo-de-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Controlando el editor (Bloqueo de Gutenberg)&lt;/h2&gt;
&lt;p&gt;El Editor de Bloques es poderoso. Demasiado poderoso. Si da a un editor un lienzo en blanco, podria accidentalmente usar Comic Sans o romper la paleta de colores de la marca. La gobernanza del editor es esencial para mantener la integridad visual.&lt;/p&gt;
&lt;h3 id=&quot;experiencia-curada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#experiencia-curada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Experiencia curada&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deshabilitar colores&lt;/strong&gt;: En &lt;code&gt;theme.json&lt;/code&gt;, deshabilite el selector de color personalizado. Fuercelos a usar solo la Paleta de Marca definida.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;settings&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;custom&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;customGradient&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;defaultPalette&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;palette&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;brand-primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#1a1a2e&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Primario&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;brand-secondary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#16213e&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Secundario&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bloqueo de bloques&lt;/strong&gt;: Use &lt;code&gt;lock: { move: true, remove: true }&lt;/code&gt;. Cree un patron “Callout de Producto” donde solo puedan escribir en el encabezado y el boton, pero no puedan arrastrar el boton a la izquierda ni eliminar ninguna sección.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bloques permitidos&lt;/strong&gt;: Desregistre bloques inestables. Si no quiere que usen el bloque “Verso” o “Tabla” sin formato, ocultelos del insertor de bloques.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Restringir bloques disponibles por rol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; restrict_blocks_by_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($allowed_blocks) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $user &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_current_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contributor_plus&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;core/heading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;core/paragraph&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;core/image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;core/list&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;core/quote&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $allowed_blocks;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;allowed_block_types_all&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;restrict_blocks_by_role&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;patrones-obligatorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-obligatorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones obligatorios&lt;/h3&gt;
&lt;p&gt;En lugar de páginas vacias, los editores comienzan con patrones pre-aprobados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada tipo de contenido tiene 2-3 patrones aprobados&lt;/li&gt;
&lt;li&gt;El editor selecciona un patron y solo modifica el contenido&lt;/li&gt;
&lt;li&gt;La estructura, tipografia y colores estan bloqueados&lt;/li&gt;
&lt;li&gt;La consistencia visual esta garantizada sin supervision manual&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-registros-de-auditoria-quien-lo-rompio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-registros-de-auditoria-quien-lo-rompio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Registros de auditoria: Quien lo rompio?&lt;/h2&gt;
&lt;p&gt;El cumplimiento requiere responsabilidad. Si un disclaimer desaparece de una página financiera regulada, necesita saber &lt;strong&gt;Quien&lt;/strong&gt; lo elimino y &lt;strong&gt;Cuando&lt;/strong&gt;. Los registros de auditoria no son opcionales en 2026; son un requisito legal para muchas industrias.&lt;/p&gt;
&lt;h3 id=&quot;wp-activity-log&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wp-activity-log&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WP Activity Log&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;WP Activity Log&lt;/strong&gt; (anteriormente WP Security Audit Log) es el estándar de la industria para auditorias en WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Granularidad&lt;/strong&gt;: No solo dice “Post Actualizado”. Dice “Usuario X cambio el H2 en la linea 14 de ‘Gratis’ a ‘Economico’ el 15 de marzo a las 14:32 CET”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alertas&lt;/strong&gt;: Configure notificaciones instantaneas en Slack si un plugin se desactiva o se crea un usuario con privilegios de Administrador. Estas alertas en tiempo real permiten respuesta inmediata ante cambios no autorizados.&lt;/p&gt;
&lt;h3 id=&quot;requisitos-de-auditoria-por-industria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-de-auditoria-por-industria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos de auditoria por industria&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Industria&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Requisitos&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Nivel de detalle&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Finanzas&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;SOC2, regulaciones SEC&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada cambio de texto con timestamp&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Salud&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;HIPAA&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Acceso a datos de pacientes registrado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gobierno&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;GDPR, regulaciones locales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Historial completo de modificaciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;E-commerce&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;PCI DSS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cambios en precios y politicas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Legal&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Compliance regulatorio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Aprobaciones y firmás digitales&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;retencion-y-almacenamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#retencion-y-almacenamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Retencion y almacenamiento&lt;/h3&gt;
&lt;p&gt;Los registros de auditoria requieren politicas de retencion claras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Retencion minima&lt;/strong&gt;: 2 años para cumplimiento básico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retencion regulatoria&lt;/strong&gt;: 7 años para sectores financieros&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento externo&lt;/strong&gt;: Exportar registros a sistemas SIEM como Splunk o ELK&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inmutabilidad&lt;/strong&gt;: Los registros no pueden ser modificados ni eliminados por nadie&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acceso controlado&lt;/strong&gt;: Solo personal autorizado puede consultar los registros&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-gestión-del-ciclo-de-vida-del-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-gestión-del-ciclo-de-vida-del-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Gestión del ciclo de vida del contenido&lt;/h2&gt;
&lt;p&gt;El contenido se deteriora. Un post de 2019 sobre “Mejores teléfonos de 2019” ahora esta danando su SEO (“Decadencia de Contenido”). La gestión proactiva del ciclo de vida es esencial para mantener la autoridad del sitio.&lt;/p&gt;
&lt;h3 id=&quot;el-bucle-de-auditoria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-bucle-de-auditoria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El bucle de auditoria&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fechas de expiracion&lt;/strong&gt;: Establezca un campo personalizado de “Fecha de Revision” en contenido evergreen (ej., cada 6 meses). El sistema rastrea automáticamente el contenido que necesita actualización.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Notificaciones&lt;/strong&gt;: Cuando la fecha llega, WordPress envia email al autor original: “Este contenido todavia es preciso?” Si no hay respuesta en 7 dias, se escala al editor jefe.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Archivado&lt;/strong&gt;: Automatice la despublicación de eventos temporales (Webinars) 24 horas despues de que el evento termine. El contenido se mueve a un estado de “Archivo” que mantiene la URL pero redirige a contenido actualizado.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;estrategia-de-actualización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-actualización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de actualización de contenido&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Tipo de contenido&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Frecuencia de revision&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Accion si desactualizado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Guias técnicas&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada 3 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Actualizar con nueva información&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Comparativas&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada 6 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Revisar precios y funcionalidades&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Noticias&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30 dias post-publicación&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Archivar con nota “histórico”&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Casos de estudio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada 12 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Verificar datos y metricas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Páginas de servicio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada 6 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Actualizar precios y ofertas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;content-scoring-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#content-scoring-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Content Scoring automatizado&lt;/h3&gt;
&lt;p&gt;En 2026, implementamos sistemas que puntuan automáticamente la salud del contenido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frescura&lt;/strong&gt;: Cuando fue la última actualización?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Cuanto tráfico organico genera?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Engagement&lt;/strong&gt;: Cual es la tasa de rebote y tiempo en página?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precision&lt;/strong&gt;: Hay enlaces rotos o información desactualizada?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: La puntuacion de optimización sigue siendo competitiva?&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-gobernanza-multicanal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-gobernanza-multicanal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Gobernanza multicanal&lt;/h2&gt;
&lt;p&gt;En 2026, el contenido no solo se pública en el sitio web. La gobernanza debe extenderse a todos los canales donde el contenido aparece.&lt;/p&gt;
&lt;h3 id=&quot;distribucion-controlada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#distribucion-controlada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Distribucion controlada&lt;/h3&gt;
&lt;p&gt;Cuando un artículo se aprueba para publicación, puede distribuirse simultaneamente a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sitio web principal&lt;/li&gt;
&lt;li&gt;App móvil (via API)&lt;/li&gt;
&lt;li&gt;Newsletter (integración con Mautic/Mailchimp)&lt;/li&gt;
&lt;li&gt;Redes sociales (clips y resumenes generados automáticamente)&lt;/li&gt;
&lt;li&gt;Sitios regionales (via Multisite broadcast)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;consistencia-de-mensaje&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consistencia-de-mensaje&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consistencia de mensaje&lt;/h3&gt;
&lt;p&gt;Cada canal tiene sus propias restricciones, pero el mensaje central debe ser consistente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Templates de redes sociales pre-aprobados&lt;/li&gt;
&lt;li&gt;Guia de tono y voz por canal&lt;/li&gt;
&lt;li&gt;Aprobacion automática si el contenido sigue el template aprobado&lt;/li&gt;
&lt;li&gt;Revision manual requerida para contenido que se desvie&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-caso-de-estudio-lanzamiento-fintech&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-caso-de-estudio-lanzamiento-fintech&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Caso de estudio: Lanzamiento fintech&lt;/h2&gt;
&lt;p&gt;Trabajamos con un banco lanzando un portal de asesoramiento financiero donde cada palabra debia cumplir con las regulaciones de la SEC y normativas financieras europeas.&lt;/p&gt;
&lt;h3 id=&quot;el-desafio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-desafio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El desafio&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cada palabra publicada tenia que ser conforme con regulaciones financieras&lt;/li&gt;
&lt;li&gt;40 escritores generando contenido simultaneamente&lt;/li&gt;
&lt;li&gt;El equipo legal de 5 personas no podia revisar todo manualmente a tiempo&lt;/li&gt;
&lt;li&gt;El riesgo de publicar información incorrecta era de millones en multas potenciales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La implementación&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Solo 3 personas tenian la capacidad de “Publicar”&lt;/li&gt;
&lt;li&gt;40 escritores trabajaban en estado “Borrador”&lt;/li&gt;
&lt;li&gt;Un “Dashboard de Cumplimiento” personalizado en WP Admin mostraba al equipo legal solo los posts esperando su revision específica&lt;/li&gt;
&lt;li&gt;Tags automáticos identificaban contenido que mencionaba productos financieros específicos y lo enrutaba al revisor especializado correspondiente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;los-resultados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-resultados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los resultados&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Los cuellos de botella desaparecieron. Los escritores escribian. Los abogados revisaban. Sin filtraciones accidentales.&lt;/li&gt;
&lt;li&gt;Tiempo promedio de publicación reducido de 14 dias a 5 dias&lt;/li&gt;
&lt;li&gt;Cero incidentes de cumplimiento en el primer año&lt;/li&gt;
&lt;li&gt;Productividad del equipo de contenido aumento un 180%&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-herramientas-de-gobernanza-recomendadas-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-herramientas-de-gobernanza-recomendadas-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Herramientas de gobernanza recomendadas 2026&lt;/h2&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Herramienta&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Función&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Precio&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;PublishPress Capabilities&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Roles y permisos granulares&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$99/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;PublishPress Planner&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Calendario editorial y flujos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$129/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WP Activity Log&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Registros de auditoria&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$99/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Yoast/RankMath&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gate SEO (puntuacion minima)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$99-199/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Members&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gestión de roles personalizada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratuito&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Block Visibility&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Control de visibilidad por rol&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$49/año&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;stack-recomendado-por-tamaño-de-equipo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stack-recomendado-por-tamaño-de-equipo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Stack recomendado por tamaño de equipo&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Equipo pequeño (5-15 editores):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Members + PublishPress Planner&lt;/li&gt;
&lt;li&gt;Flujo simple de 3 etapas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Equipo mediano (15-50 editores):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PublishPress Capabilities + Planner + WP Activity Log&lt;/li&gt;
&lt;li&gt;Flujo de 5 etapas con aprobaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Equipo grande (50+ editores):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stack completo + integraciones personalizadas&lt;/li&gt;
&lt;li&gt;Flujo de 7+ etapas con routing automático&lt;/li&gt;
&lt;li&gt;Dashboard personalizado por rol&lt;/li&gt;
&lt;li&gt;Integración con Slack/Teams para notificaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion&lt;/h2&gt;
&lt;p&gt;La gobernanza no es burocracia. Es la red de seguridad que permite correr rápido. Al codificar sus operaciones en el software WordPress mismo, elimina la carga mental de “Verifique con legal?” y permite a su equipo enfocarse en la creatividad y la producción de contenido de calidad.&lt;/p&gt;
&lt;p&gt;La diferencia entre una operación de contenido empresarial exitosa y una caotica frecuentemente no es el talento del equipo sino la calidad de los sistemas de gobernanza que los soportan. WordPress en 2026 proporciona todas las herramientas necesarias para implementar gobernanza de clase mundial sin sacrificar la agilidad que las empresas modernas demandan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Luchando con el caos editorial? &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; construye flujos de gobernanza personalizados para equipos de contenido empresariales.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Arquitectura empresarial de WordPress&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Gestión continua de contenido y sistemas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad y cumplimiento&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Modernizacion de flujos editoriales&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; - Optimización de contenido para búsqueda&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>management</category><category domain="tag">content-governance</category><category domain="tag">editorial-workflow</category><category domain="tag">user-roles</category><category domain="tag">audit-logs</category><category domain="tag">enterprise-wordpress</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>El ROI de migrar a WordPress para empresas en 2026: Guia para el CFO</title><link>https://wppoland.com/es/roi-of-migrating-to-wordpress-2026/</link><guid isPermaLink="true">https://wppoland.com/es/roi-of-migrating-to-wordpress-2026/</guid><description>Vale la pena la inversión de migrar a WordPress? Analizamos el Retorno de Inversión (ROI) a largo plazo para empresas que migran a WordPress en 2026.</description><pubDate>Wed, 22 Oct 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, una migración de sitio web no es una tarea técnica rutinaria; es una &lt;strong&gt;inversión estrategica&lt;/strong&gt;. Para las empresas que todavia dependen de sistemas propietarios obsoletos o plataformas SaaS sobredimensionadas, la migración a WordPress frecuentemente esta impulsada por una metrica fundamental: el &lt;strong&gt;Retorno de Inversión (ROI)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pero el ROI no se trata solo de ahorrar dinero en licencias. Se trata de cuanto más puede lograr su empresa con una plataforma flexible y de código abierto que se adapta a sus necesidades en lugar de restringirlas.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Astro y Next.js&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-ahorros-directos-de-costos-el-roi-tangible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-ahorros-directos-de-costos-el-roi-tangible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Ahorros directos de costos (el ROI tangible)&lt;/h2&gt;
&lt;p&gt;El impacto más inmediato de una migración a WordPress se refleja en el balance financiero. Los números hablan por si solos cuando se comparan los costos operaciónales anuales de una plataforma propietaria con WordPress.&lt;/p&gt;
&lt;h3 id=&quot;eliminacion-de-tarifas-de-licencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminacion-de-tarifas-de-licencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminacion de tarifas de licencia&lt;/h3&gt;
&lt;p&gt;Muchas plataformas CMS empresariales cobran entre $50K y $250K+ anualmente solo por el derecho a usar el software. Migrar a WordPress reduce este costo a $0 por el software en si. Este ahorro inmediato impacta directamente el resultado final desde el primer dia posterior a la migración.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desglose de costos tipicos eliminados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Licencia base del CMS: $50K - $250K/año&lt;/li&gt;
&lt;li&gt;Modulos adicionales (e-commerce, personalización, analytics): $20K - $100K/año&lt;/li&gt;
&lt;li&gt;Soporte premium del proveedor: $15K - $50K/año&lt;/li&gt;
&lt;li&gt;Actualizaciones de versión mayor: $10K - $30K por evento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-de-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de hosting&lt;/h3&gt;
&lt;p&gt;El hosting gestionado de WordPress de alto rendimiento (como WP Engine o WordPress VIP) es frecuentemente más rentable que gestionar una infraestructura cloud personalizada y sobredimensionada para un CMS propietario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparación de costos de hosting anuales:&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Infraestructura&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CMS Propietario&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Gestionado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Hosting básico&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$24K - $60K&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$6K - $18K&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;CDN y Edge&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$12K - $36K&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Certificados SSL&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$2K - $5K&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Backups y DR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$6K - $12K&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$44K - $113K&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$6K - $18K&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;reduccion-de-costos-de-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reduccion-de-costos-de-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reduccion de costos de desarrollo&lt;/h3&gt;
&lt;p&gt;Con WordPress, las modificaciones menores no requieren un equipo de desarrollo especializado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambios de contenido y diseño pueden ser realizados por el equipo de marketing&lt;/li&gt;
&lt;li&gt;Las actualizaciones de seguridad se aplican automáticamente&lt;/li&gt;
&lt;li&gt;El ecosistema de plugins reduce la necesidad de desarrollo personalizado&lt;/li&gt;
&lt;li&gt;La comunidad de desarrolladores WordPress es significativamente más grande, reduciendo costos de contratacion&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-ganancias-de-productividad-el-roi-operaciónal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-ganancias-de-productividad-el-roi-operaciónal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Ganancias de productividad (el ROI operaciónal)&lt;/h2&gt;
&lt;p&gt;En 2026, el tiempo es el recurso más caro. Cada hora que un equipo de marketing pierde esperando un “ticket de desarrollo” es una oportunidad perdida de generar ingresos.&lt;/p&gt;
&lt;h3 id=&quot;creación-de-contenido-sin-barreras-técnicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#creación-de-contenido-sin-barreras-técnicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Creación de contenido sin barreras técnicas&lt;/h3&gt;
&lt;p&gt;En WordPress, un gerente de marketing puede construir una landing page en 30 minutos usando el Editor de Bloques (Gutenberg). En un sistema legacy, esto frecuentemente requiere un ticket de desarrollo y un plazo de entrega de 1 semana o mas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Impacto medible:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Antes de migrar&lt;/strong&gt;: 5-7 dias para publicar una nueva landing page&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despues de migrar&lt;/strong&gt;: 30 minutos a 2 horas para la misma tarea&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro anual estimado&lt;/strong&gt;: $40K - $80K en tiempo de desarrollo redirigido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reduccion-de-costos-de-capacitacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reduccion-de-costos-de-capacitacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reduccion de costos de capacitacion&lt;/h3&gt;
&lt;p&gt;Casí todos conocen WordPress. Los nuevos empleados son productivos desde el primer dia, en lugar de pasar semanas aprendiendo una interfaz propietaria especializada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparación de tiempos de capacitacion:&lt;/strong&gt;&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Aspecto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CMS Propietario&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Onboarding básico&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-4 semanas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-2 dias&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Competencia editorial&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-2 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1 semana&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Administración avanzada&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3-6 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-2 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Materiales de capacitacion&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Escasos y costosos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Abundantes y gratuitos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;autonomia-del-equipo-de-marketing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autonomia-del-equipo-de-marketing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autonomia del equipo de marketing&lt;/h3&gt;
&lt;p&gt;WordPress empodera a los equipos de marketing para ejecutar sin dependencia constante del departamento de TI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creación y publicación de contenido sin intermediarios&lt;/li&gt;
&lt;li&gt;Pruebas A/B de páginas de destino sin desarrollo personalizado&lt;/li&gt;
&lt;li&gt;Actualizaciones de imágenes, textos y CTAs en tiempo real&lt;/li&gt;
&lt;li&gt;Programacion de contenido para campanas futuras&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;flujos-de-trabajo-colaborativos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujos-de-trabajo-colaborativos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujos de trabajo colaborativos&lt;/h3&gt;
&lt;p&gt;El ecosistema WordPress en 2026 ofrece herramientas sofisticadas de colaboración:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Revisiones de contenido&lt;/strong&gt;: Multiples revisores pueden comentar y aprobar antes de publicación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versionado completo&lt;/strong&gt;: Historial detallado de cambios con capacidad de revertir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roles granulares&lt;/strong&gt;: Permisos específicos para diferentes miembros del equipo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integraciones&lt;/strong&gt;: Conexión nativa con Slack, Teams y herramientas de gestión de proyectos&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-seo-y-crecimiento-de-tráfico-el-roi-de-ingresos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-seo-y-crecimiento-de-tráfico-el-roi-de-ingresos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. SEO y crecimiento de tráfico (el ROI de ingresos)&lt;/h2&gt;
&lt;p&gt;Un sitio que posiciona mejor genera más dinero. Esta es una ecuacion simple pero poderosa que hace de la migración a WordPress una de las inversiones más rentables en marketing digital.&lt;/p&gt;
&lt;h3 id=&quot;arquitectura-seo-nativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-seo-nativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura SEO nativa&lt;/h3&gt;
&lt;p&gt;El código limpio de WordPress y su estructura lógica son favorecidos por los algoritmos de búsqueda de 2026. A diferencia de los CMS propietarios que generan HTML inflado y desordenado, WordPress produce código semántico que los motores de búsqueda comprenden y premian.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas SEO específicas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;URLs amigables con control total sobre la estructura de permalinks&lt;/li&gt;
&lt;li&gt;Generación automática de sitemaps XML optimizados&lt;/li&gt;
&lt;li&gt;Soporte nativo para breadcrumbs semánticos&lt;/li&gt;
&lt;li&gt;Control granular sobre etiquetas meta y canonical URLs&lt;/li&gt;
&lt;li&gt;Integración perfecta con Google Search Console y herramientas de analytics&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Core Web Vitals&lt;/h3&gt;
&lt;p&gt;Los temas y arquitecturas WordPress modernas (especialmente las configuraciónes Headless/desacopladas) consistentemente obtienen puntuaciones en el rango de 90-100, lo cual es un factor de ranking directo en 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Metricas tipicas post-migración:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LCP&lt;/strong&gt;: Mejora del 40-60% respecto a CMS propietarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INP&lt;/strong&gt;: Reduccion del 50-70% en tiempo de interacción&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLS&lt;/strong&gt;: Reduccion a practicamente cero con layout estable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTFB&lt;/strong&gt;: Sub-100ms con Edge Caching adecuado&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;datos-estructurados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#datos-estructurados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Datos estructurados&lt;/h3&gt;
&lt;p&gt;La automatizacion de schemás (HowTo, FAQ, Product, Article) en WordPress asegura que su contenido se vea premium en los resultados de búsqueda impulsados por IA.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Impacto medible en tráfico:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aumento promedio del 20-30% en tráfico organico en el primer año&lt;/li&gt;
&lt;li&gt;Mejora del 15-25% en tasa de clics (CTR) gracias a rich snippets&lt;/li&gt;
&lt;li&gt;Incremento del 35% en visibilidad en Google Discover&lt;/li&gt;
&lt;li&gt;Presencia mejorada en respuestas de AI Search (SGE, Perplexity)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-agilidad-e-innovacion-el-roi-estrategico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-agilidad-e-innovacion-el-roi-estrategico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Agilidad e innovacion (el ROI estrategico)&lt;/h2&gt;
&lt;p&gt;La capacidad de pivotar rápidamente es invaluable. En un mercado que cambia a velocidad exponencial, la agilidad tecnológica puede ser la diferencia entre liderar el mercado o quedarse atras.&lt;/p&gt;
&lt;h3 id=&quot;ecosistema-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ecosistema-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ecosistema de plugins&lt;/h3&gt;
&lt;p&gt;Necesita agregar un hub comunitario? Un portal de miembros? Una búsqueda impulsada por IA? En WordPress, estas funcionalidades pueden integrarse en dias. En un CMS propietario, son “proyectos personalizados” que toman meses y presupuestos de seis cifras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tiempo de implementación comparativo:&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Funcionalidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CMS Propietario&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Blog corporativo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;4-8 semanas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-2 dias&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;E-commerce básico&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3-6 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-4 semanas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Portal de miembros&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-4 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-2 semanas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Búsqueda avanzada&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-3 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1 semana&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Multilingue&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-4 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-2 semanas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;sin-dependencia-de-proveedor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sin-dependencia-de-proveedor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sin dependencia de proveedor&lt;/h3&gt;
&lt;p&gt;Usted es dueno de su código. Nunca esta a merced de los aumentos de precios de un único proveedor ni de su falta de innovacion. Esta libertad estrategica tiene un valor incalculable a largo plazo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Riesgos eliminados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aumentos unilaterales de precios por parte del proveedor&lt;/li&gt;
&lt;li&gt;Discontinuacion del producto sin alternativa viable&lt;/li&gt;
&lt;li&gt;Cambios de dirección estrategica del proveedor que no se alinean con sus necesidades&lt;/li&gt;
&lt;li&gt;Restricciones artificiales de funcionalidad para forzar upgrades&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;velocidad-de-experimentacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-de-experimentacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad de experimentacion&lt;/h3&gt;
&lt;p&gt;WordPress permite probar ideas rápidamente con minimo riesgo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lanzar micrositios para campanas específicas en horas&lt;/li&gt;
&lt;li&gt;Probar nuevos canales de venta sin compromisos a largo plazo&lt;/li&gt;
&lt;li&gt;Integrar herramientas de marketing emergentes inmediatamente&lt;/li&gt;
&lt;li&gt;Escalar funcionalidades exitosas sin migraciones adicionales&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tabla-comparativa-de-roi-3-años-post-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-comparativa-de-roi-3-años-post-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla comparativa de ROI: 3 años post-migración&lt;/h2&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Categoría&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CMS Propietario Legacy&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress (Empresarial)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo de software&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto / Recurrente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Velocidad de generación de leads&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Lenta (dependiente de desarrollo)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Rápida (impulsada por marketing)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo de operaciones de contenido&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Velocidad de innovacion&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Flexibilidad de integración&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ilimitada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Riesgo de proveedor&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;ROI Total (Est.)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Base&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;+200% a +500%&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-simulacion-de-caso-de-estudio-empresa-mediana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-simulacion-de-caso-de-estudio-empresa-mediana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Simulacion de caso de estudio: Empresa mediana&lt;/h2&gt;
&lt;p&gt;Imagine una empresa que gasta $80K anuales en una licencia de CMS y $100K en mantenimiento especializado. Veamos el impacto financiero de la migración a WordPress a lo largo de tres años.&lt;/p&gt;
&lt;h3 id=&quot;año-1-la-inversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#año-1-la-inversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Año 1: La inversión&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Costo de migración&lt;/strong&gt;: $120K (incluye auditoria, desarrollo, migración de datos y capacitacion)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Licencias&lt;/strong&gt;: De $80K a $0 (ahorro inmediato)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantenimiento&lt;/strong&gt;: De $100K a $40K (reduccion del 60%)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;: De $36K a $12K (reduccion del 67%)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balance Año 1&lt;/strong&gt;: Inversión neta de $-44K (la migración se esta pagando sola)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;año-2-los-beneficios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#año-2-los-beneficios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Año 2: Los beneficios&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Licencias&lt;/strong&gt;: $0 (ahorro continuo de $80K)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantenimiento&lt;/strong&gt;: $40K (ahorro de $60K)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;: $12K (ahorro de $24K)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Productividad&lt;/strong&gt;: +$30K en valor generado por autonomia del equipo de marketing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balance Año 2&lt;/strong&gt;: Ahorro neto de $194K&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;año-3-la-aceleracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#año-3-la-aceleracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Año 3: La aceleracion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ahorros operaciónales continuos&lt;/strong&gt;: $164K&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crecimiento de ingresos por SEO mejorado&lt;/strong&gt;: +$50K (estimacion conservadora)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro por innovacion acelerada&lt;/strong&gt;: +$40K en proyectos que hubieran requerido desarrollo custom&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balance Año 3&lt;/strong&gt;: Ahorro neto de $254K&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;resultado-acumulado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resultado-acumulado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resultado acumulado&lt;/h3&gt;
&lt;p&gt;Al final del tercer año, la empresa tiene &lt;strong&gt;$404K adicionales en presupuesto liquido&lt;/strong&gt; que puede invertir en marketing y crecimiento real, en lugar de pagarselo a un proveedor de software propietario.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-roi-intangible-los-beneficios-que-no-aparecen-en-la-hoja-de-calculo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-roi-intangible-los-beneficios-que-no-aparecen-en-la-hoja-de-calculo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. ROI intangible: Los beneficios que no aparecen en la hoja de calculo&lt;/h2&gt;
&lt;h3 id=&quot;moral-del-equipo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#moral-del-equipo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Moral del equipo&lt;/h3&gt;
&lt;p&gt;Los equipos de marketing que trabajan con WordPress reportan mayor satisfaccion laboral porque pueden ejecutar sus ideas sin esperar aprobaciones técnicas. Esta autonomia se traduce en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menor rotacion de personal (ahorro de $15K - $30K por contratacion evitada)&lt;/li&gt;
&lt;li&gt;Mayor creatividad y experimentacion&lt;/li&gt;
&lt;li&gt;Ciclos de campana más rápidos que generan más ingresos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reputacion-de-marca-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reputacion-de-marca-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reputacion de marca digital&lt;/h3&gt;
&lt;p&gt;Un sitio WordPress bien optimizado con Core Web Vitals perfectos proyecta profesionalismo y modernidad. Los visitantes perciben sitios rápidos como más confiables, lo que impacta directamente la tasa de conversión.&lt;/p&gt;
&lt;h3 id=&quot;preparacion-para-el-futuro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preparacion-para-el-futuro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preparacion para el futuro&lt;/h3&gt;
&lt;p&gt;WordPress evoluciona constantemente con la web. Desde bloques Gutenberg hasta integración con IA, la plataforma se adapta a las tendencias tecnológicas sin requerir migraciones adicionales. Esta “prueba de futuro” tiene un valor estrategico enorme.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-errores-comunes-que-reducen-el-roi&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-errores-comunes-que-reducen-el-roi&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Errores comunes que reducen el ROI&lt;/h2&gt;
&lt;h3 id=&quot;error-1-migrar-sin-auditar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-1-migrar-sin-auditar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 1: Migrar sin auditar&lt;/h3&gt;
&lt;p&gt;Copiar problemas de un CMS a otro no genera ROI. Antes de migrar, realice una auditoria exhaustiva de contenido, SEO y arquitectura.&lt;/p&gt;
&lt;h3 id=&quot;error-2-subestimar-la-capacitacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-2-subestimar-la-capacitacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 2: Subestimar la capacitacion&lt;/h3&gt;
&lt;p&gt;Invertir en migración sin invertir en capacitacion del equipo reduce significativamente el ROI potencial. Reserve al menos el 15% del presupuesto de migración para formacion.&lt;/p&gt;
&lt;h3 id=&quot;error-3-no-planificar-redirecciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-3-no-planificar-redirecciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 3: No planificar redirecciones&lt;/h3&gt;
&lt;p&gt;Una migración sin un mapa completo de redirecciones 301 puede destruir años de trabajo SEO. Este es probablemente el error más costoso y frecuente.&lt;/p&gt;
&lt;h3 id=&quot;error-4-elegir-el-hosting-incorrecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-4-elegir-el-hosting-incorrecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 4: Elegir el hosting incorrecto&lt;/h3&gt;
&lt;p&gt;Un hosting barato anula las ventajas de rendimiento de WordPress. Invierta en hosting gestionado de calidad; la diferencia en rendimiento y seguridad justifica ampliamente el costo adicional.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-como-maximizar-el-roi-de-su-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-como-maximizar-el-roi-de-su-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Como maximizar el ROI de su migración&lt;/h2&gt;
&lt;h3 id=&quot;fase-de-planificación-mes-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-de-planificación-mes-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase de planificación (Mes 1-2)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Auditar el contenido existente e identificar lo que debe migrarse&lt;/li&gt;
&lt;li&gt;Crear un mapa completo de redirecciones URL&lt;/li&gt;
&lt;li&gt;Definir la arquitectura del nuevo sitio WordPress&lt;/li&gt;
&lt;li&gt;Establecer KPIs medibles para evaluar el éxito de la migración&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-de-ejecucion-mes-3-5&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-de-ejecucion-mes-3-5&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase de ejecucion (Mes 3-5)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Configurar el entorno WordPress con hosting optimizado&lt;/li&gt;
&lt;li&gt;Migrar contenido con validación de calidad automatizada&lt;/li&gt;
&lt;li&gt;Implementar optimizaciones SEO desde el primer dia&lt;/li&gt;
&lt;li&gt;Capacitar al equipo en la nueva plataforma&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-de-optimización-mes-6-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-de-optimización-mes-6-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase de optimización (Mes 6-12)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Monitorear metricas de rendimiento y SEO continuamente&lt;/li&gt;
&lt;li&gt;Iterar sobre la experiencia de usuario basandose en datos reales&lt;/li&gt;
&lt;li&gt;Aprovechar funcionalidades avanzadas de WordPress para nuevas iniciativas&lt;/li&gt;
&lt;li&gt;Documentar ahorros y mejoras para reportar a stakeholders&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion&lt;/h2&gt;
&lt;p&gt;El ROI de migrar a WordPress en 2026 ya no es una teoria; es una estrategia financiera probada. Al reducir costos fijos y aumentar la agilidad de marketing, las empresas pueden pasar de “mantener su sitio web” a “hacer crecer su negocio”.&lt;/p&gt;
&lt;p&gt;Si su CMS actual se siente como un pasivo en lugar de un activo, es hora de hacer los números. &lt;strong&gt;El costo de no hacer nada frecuentemente es mucho mayor que el costo de una migración.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Las empresas que postergan esta decision no solo pierden dinero en licencias innecesarias; pierden oportunidades de crecimiento, velocidad de ejecucion y ventaja competitiva que sus competidores ya estan capturando.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para calcular el ROI de su migración a WordPress? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para una evaluación gratuita de su potencial de ahorro.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Servicios de migración empresarial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Arquitecturas modernas post-migración&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Maximizar rendimiento post-migración&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Migración de plataformas e-commerce&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Modernizacion integral del sitio&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category domain="tag">roi</category><category domain="tag">migration</category><category domain="tag">business</category><category domain="tag">wordpress</category><category domain="tag">strategy</category><enclosure url="https://wppoland.com/images/og/technology-conference-networking-break.jpg" type="image/jpeg"/></item><item><title>Guia de optimización de base de datos WordPress (edicion 2026)</title><link>https://wppoland.com/es/wordpress-database-optimization-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-database-optimization-guide/</guid><description>Tu base de datos esta hinchada con revisiones, spam y transients? Guia completa para limpiar MySQL y mejorar el rendimiento y TTFB.</description><pubDate>Sat, 11 Oct 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;WordPress almacena todo en una base de datos MySQL (o MariaDB). Con el tiempo, esta base de datos se &quot;hincha&quot;, acumulando datos innecesarios que pueden ralentizar las consultas y todo el sitio. Una base de datos más grande significa tiempos de backup más largos, consultas `SELECT` más lentas y aumento del Time To First Byte (TTFB).&lt;/p&gt;
&lt;p&gt;En esta guía completa para desarrolladores, recorreremos la optimización avanzada de base de datos - desde limpieza simple hasta análisis de consultas y configuración de InnoDB.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-que-la-optimización-de-base-de-datos-es-crítica-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-la-optimización-de-base-de-datos-es-crítica-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que la optimización de base de datos es crítica en 2026&lt;/h2&gt;
&lt;p&gt;En 2026, cuando un TTFB inferior a 100ms es el estándar, una base de datos “pesada” es un ancla para tu sitio. Incluso si tienes un servidor super-rápido (PHP 8.4, NVMe), consultas SQL mal optimizadas pueden matar el rendimiento.&lt;/p&gt;
&lt;h3 id=&quot;causas-principales-de-problemas-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#causas-principales-de-problemas-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Causas principales de problemas de base de datos:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bloatware (Datos excesivos):&lt;/strong&gt; Revisiones de publicaciónes, spam de comentarios, metadata huerfana&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opciones Autoloaded:&lt;/strong&gt; Datos cargados en &lt;em&gt;cada&lt;/em&gt; recarga de página, incluso si no se usan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indices faltantes:&lt;/strong&gt; Consultas que deben escanear toda la tabla (Full Table Scan)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fragmentacion de tablas:&lt;/strong&gt; Huecos en los datos que aumentan el tamaño del archivo en disco&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-1-higiene-de-base-de-datos-limpieza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-higiene-de-base-de-datos-limpieza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: Higiene de base de datos (limpieza)&lt;/h2&gt;
&lt;p&gt;Empecemos eliminando la basura. Puedes hacerlo con un plugin (WP-Optimize), pero como desarrollador, debes saber hacerlo “manualmente” usando SQL o WP-CLI.&lt;/p&gt;
&lt;h3 id=&quot;1-revisiones-de-publicaciónes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-revisiones-de-publicaciónes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Revisiones de publicaciónes&lt;/h3&gt;
&lt;p&gt;Cada vez que haces clic en “Guardar borrador”, se crea una nueva copia de la publicación. Con sesiones de edicion largas, puedes tener cientos de revisiones para un solo artículo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consulta SQL para verificar cantidad de revisiones:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; COUNT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;revision&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Eliminar revisiones (SQL):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;revision&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Recomendado: Usar WP-CLI (Mas seguro):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --post_type=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;revision&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=ids&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;--force&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-limpieza-de-spam-y-papelera&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-limpieza-de-spam-y-papelera&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Limpieza de spam y papelera&lt;/h3&gt;
&lt;p&gt;No tiene sentido mantener spam o publicaciónes eliminadas.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_comments &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; comment_approved &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;spam&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_comments &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; comment_approved &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;trash&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-transients-datos-temporales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-transients-datos-temporales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Transients (datos temporales)&lt;/h3&gt;
&lt;p&gt;Los transients son cache guardado en la base de datos (&lt;code&gt;wp_options&lt;/code&gt;). A veces los transients expirados no se eliminan automáticamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limpieza de transients expirados (SQL):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_transient_timeout%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_transient_%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;WP-CLI (Mejor método):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-metadata-huerfana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-metadata-huerfana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Metadata huerfana&lt;/h3&gt;
&lt;p&gt;Cuando eliminas publicaciónes, la metadata asociada a veces permanece en &lt;code&gt;wp_postmeta&lt;/code&gt;. Esta metadata huerfana ocupa espacio sin servir a ningun propósito.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; pm &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta pm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LEFT JOIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts wp &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; pm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;post_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; IS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-opciones-autoloaded-el-asesino-silencioso-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-opciones-autoloaded-el-asesino-silencioso-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: Opciones Autoloaded (el asesino silencioso del rendimiento)&lt;/h2&gt;
&lt;p&gt;La tabla &lt;code&gt;wp_options&lt;/code&gt; contiene una columna &lt;code&gt;autoload&lt;/code&gt;. Si esta establecida en &lt;code&gt;yes&lt;/code&gt;, esa opción se carga en &lt;strong&gt;cada&lt;/strong&gt; recarga de página. Los plugins a menudo dejan basura aquí despues de la desinstalacion.&lt;/p&gt;
&lt;h3 id=&quot;como-diagnosticar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-diagnosticar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como diagnosticar?&lt;/h3&gt;
&lt;p&gt;Verifica cuantos datos (en bytes) se estan autoloading:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; SUM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LENGTH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(option_value)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; autoload_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; autoload &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;yes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si el resultado supera &lt;strong&gt;800 KB - 1 MB&lt;/strong&gt;, tienes un problema.&lt;/p&gt;
&lt;h3 id=&quot;como-encontrar-las-opciones-más-grandes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-encontrar-las-opciones-más-grandes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como encontrar las opciones más grandes?&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LENGTH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(option_value) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; autoload &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;yes&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ORDER BY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DESC&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIMIT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A menudo encontraras datos antiguos de plugins de cache, builders o logs. Si el plugin ya no se usa, puedes eliminar estas opciones de forma segura o cambiar &lt;code&gt;autoload&lt;/code&gt; a &lt;code&gt;no&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;opciones-comunes-que-deben-limpiarse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opciones-comunes-que-deben-limpiarse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opciones comunes que deben limpiarse&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Plugin/Fuente&lt;/th&gt;&lt;th&gt;Opción&lt;/th&gt;&lt;th&gt;Accion&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Plugins eliminados&lt;/td&gt;&lt;td&gt;&lt;code&gt;*_settings&lt;/code&gt;, &lt;code&gt;*_options&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Eliminar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cache obsoleto&lt;/td&gt;&lt;td&gt;&lt;code&gt;*_cache_*&lt;/code&gt;, &lt;code&gt;*_transient_*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Eliminar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Builders (Elementor, Divi)&lt;/td&gt;&lt;td&gt;&lt;code&gt;*_css_*&lt;/code&gt;, &lt;code&gt;*_global_*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Cambiar autoload a ‘no’&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Analytics/Tracking&lt;/td&gt;&lt;td&gt;&lt;code&gt;*_log_*&lt;/code&gt;, &lt;code&gt;*_stats_*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Eliminar si plugin inactivo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-innodb-vs-myisam&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-innodb-vs-myisam&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: InnoDB vs MyISAM&lt;/h2&gt;
&lt;p&gt;En 2026, ya no deberias usar el motor MyISAM. InnoDB es el estándar, ofreciendo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bloqueo a nivel de fila:&lt;/strong&gt; MyISAM bloquea toda la tabla al escribir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transacciones ACID:&lt;/strong&gt; Seguridad de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claves foraneas:&lt;/strong&gt; Consistencia de relaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;verificar-motor-de-tabla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificar-motor-de-tabla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificar motor de tabla:&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; TABLE_NAME, ENGINE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; information_schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;TABLES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; TABLE_SCHEMA &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;nombre_tu_base_datos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;convertir-a-innodb&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#convertir-a-innodb&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Convertir a InnoDB:&lt;/h3&gt;
&lt;p&gt;Si encuentras tablas MyISAM, conviertelas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts ENGINE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;InnoDB;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_comments ENGINE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;InnoDB;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options ENGINE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;InnoDB;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- y así para todas las tablas&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-indexacion-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-indexacion-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Indexacion (avanzado)&lt;/h2&gt;
&lt;p&gt;WordPress generalmente tiene buenos indices por defecto, pero los plugins a menudo añaden sus propias tablas sin indices adecuados. La falta de un indice en una consulta &lt;code&gt;WHERE&lt;/code&gt; o &lt;code&gt;JOIN&lt;/code&gt; significa que MySQL debe escanear cada fila en la tabla.&lt;/p&gt;
&lt;h3 id=&quot;ejemplo-búsqueda-lenta-en-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-búsqueda-lenta-en-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo: Búsqueda lenta en WooCommerce&lt;/h3&gt;
&lt;p&gt;Si tienes una tienda con 100,000 pedidos y un plugin busca pedidos por &lt;code&gt;meta_key&lt;/code&gt; sin indice, la página “Mi Cuenta” puede tardar 10 segundos en cargar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt;
Añade indices a columnas que buscas o ordenas frecuentemente.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; idx_meta_key_value&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta (meta_key(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;191&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;como-identificar-consultas-que-necesitan-indices&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-identificar-consultas-que-necesitan-indices&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como identificar consultas que necesitan indices&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Query Monitor&lt;/strong&gt;: Ordena por tiempo de ejecucion, identifica consultas &gt; 100ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EXPLAIN&lt;/strong&gt;: Ejecuta &lt;code&gt;EXPLAIN&lt;/code&gt; antes de cualquier consulta sospechosa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slow Query Log&lt;/strong&gt;: Habilita en la configuración MySQL para capturar consultas lentas automáticamente&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Ver plan de ejecucion de una consulta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;EXPLAIN &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_price&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si &lt;code&gt;EXPLAIN&lt;/code&gt; muestra &lt;code&gt;type: ALL&lt;/code&gt; en lugar de &lt;code&gt;type: ref&lt;/code&gt; o &lt;code&gt;type: index&lt;/code&gt;, la consulta necesita un indice.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-5-prevencion-configurar-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-prevencion-configurar-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Prevencion (configurar &lt;code&gt;wp-config.php&lt;/code&gt;)&lt;/h2&gt;
&lt;p&gt;En lugar de limpiar constantemente, es mejor no ensuciar. Configura WordPress de forma inteligente.&lt;/p&gt;
&lt;h3 id=&quot;limitar-revisiones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitar-revisiones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitar revisiones&lt;/h3&gt;
&lt;p&gt;Añade a &lt;code&gt;wp-config.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar a las 5 versiones más recientes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vaciar papelera cada 7 dias (por defecto es 30)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;EMPTY_TRASH_DAYS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Aumentar intervalo de autoguardado (menos solicitudes AJAX en editor)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AUTOSAVE_INTERVAL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// segundos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;deshabilitar-edicion-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deshabilitar-edicion-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deshabilitar edicion de archivos&lt;/h3&gt;
&lt;p&gt;Para seguridad e higiene:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-6-herramientas-de-monitoreo-query-monitor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-herramientas-de-monitoreo-query-monitor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Herramientas de monitoreo (Query Monitor)&lt;/h2&gt;
&lt;p&gt;No adivines que ralentiza el sitio. Instala el plugin &lt;strong&gt;Query Monitor&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Despues de la instalación, en la barra de admin veras el tiempo de generación de página y número de consultas SQL.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Haz clic en las estadísticas de la barra&lt;/li&gt;
&lt;li&gt;Ve a la pestaña &lt;strong&gt;“Queries”&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Ordena por &lt;strong&gt;“Time”&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si ves una consulta que toma 0.5s o más - ese es tu objetivo de optimización. A menudo viene de un plugin mal escrito (“Productos Vistos Recientemente”, “Contador de Visitas”, etc.).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-7-automatizacion-del-mantenimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-automatizacion-del-mantenimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Automatizacion del mantenimiento&lt;/h2&gt;
&lt;p&gt;No dependas de recordar hacer limpieza manual. Automatiza el proceso.&lt;/p&gt;
&lt;h3 id=&quot;script-de-mantenimiento-semanal-via-wp-cli&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#script-de-mantenimiento-semanal-via-wp-cli&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Script de mantenimiento semanal via WP-CLI&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Mantenimiento semanal de base de datos WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 1. Eliminar transients expirados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --expired&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 2. Eliminar spam y papelera de comentarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; comment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; comment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --status=spam&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=ids&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;--force&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; 2&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/dev/null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; comment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; comment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --status=trash&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=ids&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;--force&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; 2&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/dev/null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 3. Optimizar tablas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; optimize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 4. Reportar tamaño de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;programar-con-cron-del-sistema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#programar-con-cron-del-sistema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Programar con cron del sistema&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Añadir a crontab: ejecutar cada domingo a las 3am&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /usr/local/bin/wp-db-maintenance.sh&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/log/wp-maintenance.log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; 2&gt;&amp;#x26;1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen-checklist-de-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-checklist-de-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen: Checklist de optimización&lt;/h2&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Backup:&lt;/strong&gt; Siempre haz backup antes de trabajar en la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Motor:&lt;/strong&gt; Asegura que todas las tablas sean InnoDB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoload:&lt;/strong&gt; Verifica tamaño de opciones autoloaded (objetivo &amp;#x3C; 800KB)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpieza:&lt;/strong&gt; Elimina revisiones, spam y transients expirados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indices:&lt;/strong&gt; Verifica que las consultas pesadas usen indices&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prevencion:&lt;/strong&gt; Configura &lt;code&gt;wp-config.php&lt;/code&gt; para limitar creación de basura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatizacion:&lt;/strong&gt; Programa mantenimiento semanal con WP-CLI y cron&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo:&lt;/strong&gt; Usa Query Monitor para identificar consultas lentas continuamente&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cuando tu base de datos es ligera y rápida, PHP usa menos memoria y los usuarios obtienen contenido al instante. Esta es la base del WordPress moderno.&lt;/p&gt;
&lt;p&gt;Necesitas ayuda con &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; o &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; profesional? &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>optimization</category><category>database</category><category domain="tag">mysql</category><category domain="tag">wp-optimize</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>LLMO: Vision estrategica e inicio rápido para gestores</title><link>https://wppoland.com/es/llmo-strategic-summary/</link><guid isPermaLink="true">https://wppoland.com/es/llmo-strategic-summary/</guid><description>Resumen ejecutivo de LLMO: Por que tu marca necesita estar &apos;preparada para IA&apos; ahora. Una vision estrategica de alto nivel de la Optimización de Modelos de Lenguaje Grande.</description><pubDate>Fri, 10 Oct 2025 08:00:39 GMT</pubDate><content:encoded>&lt;h3 id=&quot;que-es-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es LLMO?&lt;/h3&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;La Optimización de Modelos de Lenguaje Grande (LLMO) es la práctica de estructurar y validar tu contenido para que los agentes de IA puedan descubrirlo de forma fiable, recuperarlo con precision y citarlo correctamente. Es la evolucion natural del SEO: mientras el SEO se dirige a clasificaciónes en buscadores, LLMO se dirige a la inclusion en asistentes de IA, motores de respuestas y agentes autonomos como ChatGPT, Gemini y Perplexity.&lt;/p&gt;
&lt;h3 id=&quot;por-que-llmo-importa-ahora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-llmo-importa-ahora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que LLMO importa ahora&lt;/h3&gt;
&lt;p&gt;Estamos en medio de un giro en como se consume la información. Las interfaces de IA cada vez más sintetizan respuestas directamente, a menudo saltandose la lista tradicional de enlaces. Si tu contenido no esta “listo para IA”, efectivamente desaparece de esta nueva capa de la web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los beneficios centrales de LLMO:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Visibilidad de citaciones&lt;/strong&gt;: Los modelos de IA priorizan pasajes bien estructurados. Si tu contenido es ambiguo, el modelo puede citar a un competidor cuyos datos son más fáciles de parsear.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prevencion de alucinaciones&lt;/strong&gt;: Al proporcionar hechos limpios y estructurados, reduces el riesgo de que un modelo “rellene los vacios” con información incorrecta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad duradera&lt;/strong&gt;: La inclusion temprana en indices de generación aumentada por recuperacion (RAG) construye una presencia semanticamente fuerte que se compone con el tiempo.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id=&quot;como-los-llms-usan-tu-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-los-llms-usan-tu-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como los LLMs usan tu contenido&lt;/h3&gt;
&lt;p&gt;Los sistemas de IA adquieren datos a través del rastreo web (GPTBot, ClaudeBot), datasets publicos (Common Crawl) y directamente via APIs. Estas páginas se “dividen en fragmentos” y se convierten en embeddings vectoriales. En el momento de la consulta, el sistema recupera el pasaje más relevante y sintetiza una respuesta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los pilares principales de LLMO:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claridad e intencion&lt;/strong&gt;: Contenido enfocado en tareas que responde preguntas específicas directamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos estructurados&lt;/strong&gt;: Uso profundo de JSON-LD (schema.org) con identificadores estables (&lt;code&gt;@id&lt;/code&gt;) y enlaces de relación (&lt;code&gt;sameAs&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fundamentos técnicos&lt;/strong&gt;: Páginas rápidas y rastreables con HTML semántico limpio (&lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;section&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;table&gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confianza y procedencia&lt;/strong&gt;: Autoria clara, detalles de organización verificables y licencias de contenido explicitas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-caso-de-negocio-para-ejecutivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-caso-de-negocio-para-ejecutivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El caso de negocio para ejecutivos&lt;/h3&gt;
&lt;p&gt;Para los lideres empresariales, LLMO no es solo una preocupacion técnica. Es una oportunidad estrategica con implicaciones directas en ingresos y visibilidad de marca.&lt;/p&gt;
&lt;h4 id=&quot;la-economia-de-la-visibilidad-en-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-economia-de-la-visibilidad-en-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La economia de la visibilidad en IA&lt;/h4&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Canal&lt;/th&gt;&lt;th&gt;Volumen de consultas (2026)&lt;/th&gt;&lt;th&gt;Tendencia&lt;/th&gt;&lt;th&gt;Impacto en tráfico&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Google Search tradicional&lt;/td&gt;&lt;td&gt;Estable&lt;/td&gt;&lt;td&gt;Plano&lt;/td&gt;&lt;td&gt;Base establecida&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Google AI Overviews&lt;/td&gt;&lt;td&gt;Creciendo rápido&lt;/td&gt;&lt;td&gt;+40% anual&lt;/td&gt;&lt;td&gt;Reduce clics organicos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ChatGPT Search&lt;/td&gt;&lt;td&gt;100M+ mensuales&lt;/td&gt;&lt;td&gt;+80% anual&lt;/td&gt;&lt;td&gt;Nuevo canal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Perplexity&lt;/td&gt;&lt;td&gt;50M+ mensuales&lt;/td&gt;&lt;td&gt;+120% anual&lt;/td&gt;&lt;td&gt;Alto intent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude&lt;/td&gt;&lt;td&gt;30M+ mensuales&lt;/td&gt;&lt;td&gt;+100% anual&lt;/td&gt;&lt;td&gt;Audiencia técnica&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Las empresas que no optimizan para estas plataformas estan perdiendo una porcion creciente de su audiencia potencial.&lt;/p&gt;
&lt;h4 id=&quot;roi-de-la-implementación-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#roi-de-la-implementación-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ROI de la implementación LLMO&lt;/h4&gt;
&lt;p&gt;Los beneficios medibles de LLMO incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tráfico de alta intencion&lt;/strong&gt;: Los usuarios que llegan via citaciones de IA tienen tasas de conversión 2-3x mayores que el tráfico organico general&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prevencion de alucinaciones&lt;/strong&gt;: Reduce el riesgo de que la IA proporcione información incorrecta sobre tu marca&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ventaja competitiva&lt;/strong&gt;: La inclusion temprana en indices RAG es dificil de desplazar una vez establecida&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejora SEO colateral&lt;/strong&gt;: Las prácticas LLMO también mejoran clasificaciónes tradicionales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implementación-estrategica-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-estrategica-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación estrategica de contenido&lt;/h3&gt;
&lt;p&gt;Para optimizar para LLMs, evita descripciones genericas. En su lugar, construye secciones de “hechos canonicos” para verdades no negociables - precios, especificaciones, SLAs y definiciones formales. Usa secciones del tamaño de un pasaje con encabezados descriptivos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estructura para maquinas y humanos:&lt;/strong&gt;
Usa JSON-LD para tipos como &lt;code&gt;Organization&lt;/code&gt;, &lt;code&gt;Product&lt;/code&gt;, &lt;code&gt;HowTo&lt;/code&gt; y &lt;code&gt;FAQPage&lt;/code&gt;. Expresar hechos clave en formás legibles por maquinas junto con texto visible asegura que el modelo no tenga que “adivinar” tu significado.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;FAQPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;mainEntity&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Question&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Que es LLMO?&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;acceptedAnswer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Answer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;LLMO es la practica de optimizar contenido para descubrimiento y recuperacion precisa por Modelos de Lenguaje Grande y agentes de IA.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;hoja-de-ruta-de-implementación-para-gestores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hoja-de-ruta-de-implementación-para-gestores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hoja de ruta de implementación para gestores&lt;/h3&gt;
&lt;h4 id=&quot;fase-1-auditoria-semana-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-auditoria-semana-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Auditoria (Semana 1-2)&lt;/h4&gt;
&lt;p&gt;Evalua tu presencia actual en IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Busca tu marca y productos principales en ChatGPT, Perplexity y Gemini&lt;/li&gt;
&lt;li&gt;Documenta que información aparece y si es correcta&lt;/li&gt;
&lt;li&gt;Identifica competidores que estan siendo citados en tu lugar&lt;/li&gt;
&lt;li&gt;Audita tus datos estructurados existentes&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;fase-2-fundamentos-semanas-3-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-fundamentos-semanas-3-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Fundamentos (Semanas 3-6)&lt;/h4&gt;
&lt;p&gt;Implementa las bases de LLMO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agrega schema JSON-LD completo a todas las páginas clave&lt;/li&gt;
&lt;li&gt;Reestructura contenido crítico para fragmentacion optima&lt;/li&gt;
&lt;li&gt;Asegura rastreabilidad para bots de IA en robots.txt&lt;/li&gt;
&lt;li&gt;Implementa HTML semántico en plantillas principales&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;fase-3-autoridad-semanas-7-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-autoridad-semanas-7-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Autoridad (Semanas 7-12)&lt;/h4&gt;
&lt;p&gt;Construye señales de confianza:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enlaza entidades con Wikidata y fuentes autorizadas&lt;/li&gt;
&lt;li&gt;Implementa información de autor verificable&lt;/li&gt;
&lt;li&gt;Crea secciones de hechos canonicos para productos/servicios&lt;/li&gt;
&lt;li&gt;Establece monitoreo continuo de citaciones en IA&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;fase-4-optimización-continua-permanente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-optimización-continua-permanente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Optimización continua (Permanente)&lt;/h4&gt;
&lt;p&gt;Mantiene y mejora tu presencia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monitoreo mensual de citaciones en plataformas de IA&lt;/li&gt;
&lt;li&gt;Actualización de contenido basada en como los LLMs citan tu información&lt;/li&gt;
&lt;li&gt;Expansion de cobertura de schema a contenido nuevo&lt;/li&gt;
&lt;li&gt;Adaptacion a nuevas plataformas de IA a medida que emergen&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;requisitos-técnicos-y-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-técnicos-y-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos técnicos y de seguridad&lt;/h3&gt;
&lt;p&gt;Asegura que tu sitio sea accesible para bots de IA via &lt;code&gt;robots.txt&lt;/code&gt; y muevete hacia renderizado del lado del servidor (SSR) donde sea posible para asegurar que todo el contenido sea visible en el HTML inicial.&lt;/p&gt;
&lt;p&gt;La seguridad también es un pilar de LLMO. Protege tu contenido de “inyeccion de prompts” separando datos no confiables de usuarios de tus instrucciones de sistema principales. Usa licencias de contenido claras (ej., &lt;code&gt;copyrightHolder&lt;/code&gt;) para senalar como tus datos pueden ser legalmente reutilizados en contextos de IA.&lt;/p&gt;
&lt;h3 id=&quot;metricas-para-medir-el-éxito-de-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-para-medir-el-éxito-de-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas para medir el éxito de LLMO&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Como medir&lt;/th&gt;&lt;th&gt;Frecuencia&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Citas en ChatGPT&lt;/td&gt;&lt;td&gt;Búsqueda manual de temas clave&lt;/td&gt;&lt;td&gt;Semanal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Citas en Perplexity&lt;/td&gt;&lt;td&gt;Búsqueda manual + verificación de fuentes&lt;/td&gt;&lt;td&gt;Semanal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cobertura de schema&lt;/td&gt;&lt;td&gt;Herramientas de validación automatizadas&lt;/td&gt;&lt;td&gt;Mensual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Rastreabilidad de bots IA&lt;/td&gt;&lt;td&gt;Análisis de logs del servidor&lt;/td&gt;&lt;td&gt;Mensual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Precision de información&lt;/td&gt;&lt;td&gt;Verificación contra datos reales&lt;/td&gt;&lt;td&gt;Trimestral&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;LLMO se trata de encontrarse a medio camino con los sistemas de IA. Requiere lenguaje preciso, una estructura semántica fuerte y transparencia técnica. Al implementar estas prácticas ahora, aseguras que tu marca este representada de forma precisa y autoritativa en las respuestas del futuro.&lt;/p&gt;
&lt;p&gt;Para los gestores, la conclusion es clara: LLMO no es opcional. Es la proxima frontera de la visibilidad digital, y la ventaja competitiva pertenece a quienes actuen primero.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; para implementar LLMO en tu organización.&lt;/p&gt;</content:encoded><category>seo</category><category>ai</category><category domain="tag">ai</category><category domain="tag">wordpress</category><category domain="tag">llmo</category><category domain="tag">seo</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>El coste real de un CMS empresarial en 2026: WordPress vs. Sitecore vs. Adobe</title><link>https://wppoland.com/es/cost-of-enterprise-cms-comparison-2026-en/</link><guid isPermaLink="true">https://wppoland.com/es/cost-of-enterprise-cms-comparison-2026-en/</guid><description>Las licencias son solo la punta del iceberg. Desglosamos el coste total de propiedad (TCO) de WordPress, Sitecore y AEM en 2026.</description><pubDate>Sun, 05 Oct 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cuando una empresa evalua un CMS en 2026, la tarifa de licencia es solo el comienzo. El verdadero coste de un CMS empresarial incluye implementación, desarrollo, integraciones, formacion, mantenimiento, hosting y el coste de oportunidad del tiempo perdido. Este análisis exhaustivo desglosa el Coste Total de Propiedad (TCO) de las tres plataformas CMS empresariales más importantes: WordPress, Adobe Experience Manager (AEM) y Sitecore.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;1-el-iceberg-de-costes-mas-alla-de-las-licencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-iceberg-de-costes-mas-alla-de-las-licencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El iceberg de costes: Mas alla de las licencias&lt;/h2&gt;
&lt;p&gt;La mayoria de las empresas subestiman dramaticamente el coste real de un CMS. Las licencias representan tipicamente solo el 20-30% del TCO total. El resto se distribuye en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Implementación inicial&lt;/strong&gt; (30-40%): Diseño, desarrollo, migración de contenido, integraciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantenimiento anual&lt;/strong&gt; (15-25%): Actualizaciones, parches, soporte técnico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infraestructura&lt;/strong&gt; (10-15%): Hosting, CDN, servicios cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formacion&lt;/strong&gt; (5-10%): Capacitacion inicial y continua para editores y administradores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste de oportunidad&lt;/strong&gt; (variable): Tiempo perdido esperando funcionalidades, vendor lock-in, dependencia de consultores externos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-wordpress-el-campeon-del-tco&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-wordpress-el-campeon-del-tco&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. WordPress: El campeon del TCO&lt;/h2&gt;
&lt;h3 id=&quot;costes-directos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-directos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes directos&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Rango anual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Notas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Licencia de software&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Código abierto (GPL)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting gestionado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3.600-60.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Kinsta Business a WordPress VIP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Plugins premium&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.200-12.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;SEO, seguridad, cache, formularios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Desarrollo inicial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;20.000-200.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Segun complejidad (pago único)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mantenimiento anual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;6.000-36.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Actualizaciones, soporte, monitoreo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Año 1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;30.800-308.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Año 2-5 (anual)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;10.800-108.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;costes-de-talento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-de-talento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes de talento&lt;/h3&gt;
&lt;p&gt;Los desarrolladores WordPress son abundantes y relativamente asequibles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desarrollador WordPress senior&lt;/strong&gt;: 50.000-90.000 EUR/año (Europa)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agencia WordPress especializada&lt;/strong&gt;: 100-200 EUR/hora&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pool de talento&lt;/strong&gt;: Millones de desarrolladores WordPress en el mundo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ventajas-de-coste-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-de-coste-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas de coste de WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sin licencia&lt;/strong&gt;: El ahorro más obvio. Cero euros por el software en si.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Talento abundante&lt;/strong&gt;: La abundancia de desarrolladores WordPress mantiene los costes de desarrollo competitivos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time-to-market rápido&lt;/strong&gt;: Un sitio WordPress empresarial puede estar en producción en 2-4 meses, comparado con 6-18 meses para AEM/Sitecore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexibilidad de hosting&lt;/strong&gt;: Puede elegir desde hosting gestionado asequible hasta soluciones cloud a medida.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin vendor lock-in&lt;/strong&gt;: Puede migrar su contenido y código a cualquier proveedor en cualquier momento.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-adobe-experience-manager-aem-el-gigante-corporativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-adobe-experience-manager-aem-el-gigante-corporativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Adobe Experience Manager (AEM): El gigante corporativo&lt;/h2&gt;
&lt;h3 id=&quot;costes-directos-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-directos-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes directos&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Rango anual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Notas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Licencia AEM Cloud&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200.000-1.000.000+ EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Basado en uso y número de sitios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting (AEM Cloud)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido en licencia&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Adobe gestiona infraestructura&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Implementación inicial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200.000-2.000.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Tipicamente 6-18 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Consultorias Adobe&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50.000-500.000 EUR/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Partners certificados obligatorios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mantenimiento anual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100.000-500.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Actualizaciones, soporte, personalizaciónes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Año 1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;550.000-4.000.000+ EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Año 2-5 (anual)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;350.000-2.000.000+ EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;costes-de-talento-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-de-talento-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes de talento&lt;/h3&gt;
&lt;p&gt;Los desarrolladores AEM son escasos y costosos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desarrollador AEM senior&lt;/strong&gt;: 80.000-140.000 EUR/año (Europa)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consultor AEM certificado&lt;/strong&gt;: 200-400 EUR/hora&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pool de talento&lt;/strong&gt;: Significativamente menor que WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;donde-aem-justifica-su-coste&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-aem-justifica-su-coste&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde AEM justifica su coste&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Organizaciones con más de 50 sitios web en multiples marcas y regiones&lt;/li&gt;
&lt;li&gt;Integración profunda con Adobe Creative Cloud, Analytics, Target y Campaign&lt;/li&gt;
&lt;li&gt;Necesidad de personalización avanzada basada en segmentos de audiencia complejos&lt;/li&gt;
&lt;li&gt;Requisitos regulatorios estrictos que demandan controles de gobernanza granulares&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-sitecore-el-cms-de-experiencia-net&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-sitecore-el-cms-de-experiencia-net&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Sitecore: El CMS de experiencia .NET&lt;/h2&gt;
&lt;h3 id=&quot;costes-directos-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-directos-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes directos&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Rango anual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Notas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Licencia Sitecore XP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100.000-500.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Basado en nivel y modulos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting (Azure/AWS)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;24.000-120.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Infraestructura .NET optimizada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Implementación inicial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;150.000-1.500.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Tipicamente 4-12 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Consultorias Sitecore&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;40.000-300.000 EUR/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Partners certificados&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mantenimiento anual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;60.000-300.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Actualizaciones, soporte&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Año 1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;374.000-2.720.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Año 2-5 (anual)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;224.000-1.220.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;costes-de-talento-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-de-talento-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes de talento&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desarrollador Sitecore senior&lt;/strong&gt;: 70.000-120.000 EUR/año&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consultor Sitecore certificado&lt;/strong&gt;: 180-350 EUR/hora&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pool de talento&lt;/strong&gt;: Limitado, principalmente en ecosistema .NET&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-comparación-tco-a-5-años&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-comparación-tco-a-5-años&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Comparación TCO a 5 años&lt;/h2&gt;
&lt;h3 id=&quot;sitio-empresarial-mediano-100k-visitasmes-5000-páginas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitio-empresarial-mediano-100k-visitasmes-5000-páginas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitio empresarial mediano (100K visitas/mes, 5.000 páginas)&lt;/h3&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Sitecore&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Adobe AEM&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO 5 años&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;175.000-700.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.270.000-7.600.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.950.000-12.000.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Time-to-market&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-4 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;4-12 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;6-18 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Coste por página&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;35-140 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;254-1.520 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;390-2.400 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Coste por editor&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0 EUR adicional&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;500-2.000 EUR/editor/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.000-5.000 EUR/editor/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Vendor lock-in&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alto&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;el-factor-multiplicador-oculto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-factor-multiplicador-oculto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El factor multiplicador oculto&lt;/h3&gt;
&lt;p&gt;El coste más insidioso de AEM y Sitecore es el &lt;strong&gt;efecto multiplicador del talento escaso&lt;/strong&gt;. Cuando necesita un cambio urgente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: Multiples agencias y freelancers disponibles inmediatamente. Tiempo de respuesta: horas a dias.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitecore&lt;/strong&gt;: Pocas agencias certificadas con disponibilidad limitada. Tiempo de respuesta: semanas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AEM&lt;/strong&gt;: Aun menos especialistas disponibles. Tiempo de respuesta: semanas a meses. Coste premium por urgencia.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-el-caso-para-wordpress-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-el-caso-para-wordpress-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. El caso para WordPress empresarial&lt;/h2&gt;
&lt;p&gt;WordPress no es solo “el CMS barato”. En 2026, WordPress empresarial ofrece:&lt;/p&gt;
&lt;h3 id=&quot;funcionalidades-comparables&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#funcionalidades-comparables&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Funcionalidades comparables&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Personalización&lt;/strong&gt;: Plugins como Jetpack, Google Tag Manager y herramientas headless permiten personalización basada en segmentos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multisite&lt;/strong&gt;: Gestión de multiples sitios desde una única instalación, similar a las capacidades multisitio de AEM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflows de aprobacion&lt;/strong&gt;: Plugins de editorial workflow que replican los flujos de aprobacion de Sitecore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API-first&lt;/strong&gt;: REST API y WPGraphQL permiten arquitecturas headless comparables a las de cualquier CMS enterprise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad&lt;/strong&gt;: Con Kubernetes y hosting cloud, WordPress puede manejar millones de visitas diarias.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;arquitectura-wordpress-enterprise-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-wordpress-enterprise-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura WordPress Enterprise en 2026&lt;/h3&gt;
&lt;p&gt;La arquitectura WordPress empresarial moderna es sofisticada y robusta:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[CDN/Edge] -&gt; [WAF/Security] -&gt; [Load Balancer]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     |              |                    |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  [Cache]     [Cloudflare]        [K8s Cluster]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                       |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                              [WordPress Pods x3-50]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                       |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                              [Redis Object Cache]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                       |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                              [MySQL Primary/Replica]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                       |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                              [S3/Object Storage]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta arquitectura proporciona:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;99.999% uptime&lt;/li&gt;
&lt;li&gt;Escalado automático de 3 a 50+ pods&lt;/li&gt;
&lt;li&gt;TTFB global &amp;#x3C; 100ms con cache edge&lt;/li&gt;
&lt;li&gt;Recuperacion automática ante fallos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;7-cuando-no-elegir-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-cuando-no-elegir-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Cuando NO elegir WordPress&lt;/h2&gt;
&lt;p&gt;A pesar de su versatilidad, WordPress no es la mejor opción en todos los casos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mas de 100 sitios con personalización extrema&lt;/strong&gt;: Si necesita personalización avanzada basada en CDP integrado con DMP y orquestacion de experiencias multicanal, AEM puede justificar su coste.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosistema Adobe puro&lt;/strong&gt;: Si su organización ya invierte fuertemente en Adobe Creative Cloud, Analytics, Target y Campaign, AEM ofrece la integración más profunda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosistema .NET estricto&lt;/strong&gt;: Si su infraestructura esta basada exclusivamente en .NET y Azure, Sitecore puede ser más natural.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;8-estrategia-de-migración-de-cms-propietario-a-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-estrategia-de-migración-de-cms-propietario-a-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Estrategia de migración: De CMS propietario a WordPress&lt;/h2&gt;
&lt;p&gt;Si actualmente usa AEM o Sitecore y el TCO se ha vuelto insostenible, la migración a WordPress es viable:&lt;/p&gt;
&lt;h3 id=&quot;fases-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fases-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fases de migración&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Auditoria&lt;/strong&gt; (1-2 meses): Inventariar contenido, funcionalidades e integraciones actuales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura&lt;/strong&gt; (1 mes): Disenar la arquitectura WordPress equivalente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrollo&lt;/strong&gt; (2-4 meses): Construir el nuevo sitio WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migración de contenido&lt;/strong&gt; (1-2 meses): Migrar contenido con scripts automatizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing y QA&lt;/strong&gt; (1 mes): Pruebas exhaustivas de funcionalidad, rendimiento y SEO.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lanzamiento&lt;/strong&gt; (1 semana): Cambio DNS con plan de rollback.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;roi-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#roi-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ROI de la migración&lt;/h3&gt;
&lt;p&gt;Para un sitio empresarial mediano que migra de Sitecore a WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Coste de migración&lt;/strong&gt;: 50.000-200.000 EUR (pago único)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro anual en licencias&lt;/strong&gt;: 100.000-500.000 EUR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ROI positivo&lt;/strong&gt;: Tipicamente en 6-18 meses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beneficios adicionales&lt;/strong&gt;: Time-to-market más rápido, talento más accesible, sin vendor lock-in&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;En 2026, el TCO de un CMS empresarial varia enormemente entre plataformas. WordPress ofrece el mejor equilibrio entre funcionalidad, coste y flexibilidad para la gran mayoria de las empresas. Adobe AEM y Sitecore tienen nichos específicos donde su coste premium puede justificarse, pero para la mayoria de las organizaciónes, representan un gasto excesivo con retorno limitado.&lt;/p&gt;
&lt;p&gt;Si esta evaluando opciones de CMS o considerando una migración, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede ayudarle con un análisis de TCO personalizado. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt;, &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración&lt;/a&gt; y &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento&lt;/a&gt; para organizaciónes que buscan maximizar el valor de su inversión en tecnología web.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Soluciónes enterprise&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Soporte continuo empresarial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Rendimiento empresarial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Migración de CMS propietarios&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">costs</category><category domain="tag">enterprise</category><category domain="tag">roi</category><category domain="tag">tco</category><category domain="tag">wordpress</category><category domain="tag">adobe</category><category domain="tag">sitecore</category><enclosure url="https://wppoland.com/images/og/wordpress-gdansk-office.jpg" type="image/jpeg"/></item><item><title>SEO local para empresas: estrategias WordPress multisite en 2026</title><link>https://wppoland.com/es/enterprise-local-seo-multisite-strategy-2026/</link><guid isPermaLink="true">https://wppoland.com/es/enterprise-local-seo-multisite-strategy-2026/</guid><description>Gestionas SEO local para 500 ubicaciones? WordPress Multisite es tu arma secreta. Aprende las estrategias empresariales para 2026.</description><pubDate>Wed, 01 Oct 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gestionar SEO para una ubicacion es sencillo. Gestionarlo para 500 es una pesadilla logistica. En 2026, las marcas empresariales usan &lt;strong&gt;WordPress Multisite&lt;/strong&gt; para armonizar su autoridad nacional con relevancia local.&lt;/p&gt;
&lt;p&gt;Aqui esta el plan empresarial para el dominio local.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;1-la-ventaja-de-multisite-escalabilidad-y-control&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-ventaja-de-multisite-escalabilidad-y-control&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La ventaja de Multisite: Escalabilidad y control&lt;/h2&gt;
&lt;p&gt;WordPress Multisite te permite ejecutar una red de sitios desde una única instalación.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones centralizadas&lt;/strong&gt;: Actualiza tu configuración SEO global o estilos de marca una vez, y se propagan a los 500 sitios locales instantaneamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autonomia local&lt;/strong&gt;: Dale a los gerentes de sucursales locales acceso de “Editor” para actualizar horarios o noticias de su sitio específico, sin dejarles romper el sitio global.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-dominar-el-local-pack-schema-localbusiness&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-dominar-el-local-pack-schema-localbusiness&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Dominar el “Local Pack”: Schema LocalBusiness&lt;/h2&gt;
&lt;p&gt;La búsqueda con IA de Google en 2026 (SGE) depende en gran medida de datos estructurados para verificar ubicaciones fisicas.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JSON-LD por sitio&lt;/strong&gt;: Cada sub-sitio en tu red debe tener su propio schema &lt;code&gt;LocalBusiness&lt;/code&gt; o &lt;code&gt;Store&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detalles avanzados&lt;/strong&gt;: Incluye &lt;code&gt;openingHours&lt;/code&gt;, coordenadas &lt;code&gt;geo&lt;/code&gt; y &lt;code&gt;aggregateRating&lt;/code&gt; específicamente para esa ubicacion.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-alineacion-nap-y-sincronizacion-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-alineacion-nap-y-sincronizacion-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Alineacion NAP y sincronizacion API&lt;/h2&gt;
&lt;p&gt;La razon número 1 por la que las ubicaciones empresariales fallan en la búsqueda es la inconsistencia de datos NAP (Nombre, Dirección, Telefono).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Una única fuente de verdad&lt;/strong&gt;: Tu base de datos WordPress principal debe ser el registro maestro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatizacion API&lt;/strong&gt;: En 2026, enviamos datos via API a Google Business Profile, Bing Places y Apple Maps simultaneamente. Cualquier cambio en WordPress se refleja en todas partes en minutos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-contenido-localizado-la-estrategia-de-geo-modificador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-contenido-localizado-la-estrategia-de-geo-modificador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Contenido localizado: La estrategia de “Geo-Modificador”&lt;/h2&gt;
&lt;p&gt;El contenido nacional no es suficiente para clasificar para “servicios cerca de mi”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Landing pages dinámicas&lt;/strong&gt;: Usa plantillas programaticas para crear páginas específicas por ubicacion que destaquen personal local, estudios de caso locales y palabras clave localizadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fosos topicos&lt;/strong&gt;: Un sitio local que habla sobre eventos y noticias locales gana una “Puntuacion de Confianza Local” que una página nacional generica nunca puede igualar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-matriz-de-madurez-seo-local-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-matriz-de-madurez-seo-local-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Matriz de madurez SEO local 2026&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Nivel&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Plataforma&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Estrategia&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Resultado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Principiante&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sitio único&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Una página /ubicaciones&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja visibilidad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Intermedio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Subcarpetas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Páginas de ubicacion manuales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Clasificación moderada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Empresarial&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Multisite&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Sub-sitios sincronizados por API&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Dominio del mercado&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Global&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Multi-Network&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Hreflang + Multisite&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dominio global&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;consejo-pro-activos-globales-rendimiento-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consejo-pro-activos-globales-rendimiento-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consejo PRO: Activos globales, rendimiento local&lt;/h2&gt;
&lt;p&gt;Usa un CDN para servir tus imágenes y scripts globalmente, pero asegurate de que tu &lt;strong&gt;ubicacion del servidor&lt;/strong&gt; (o edge compute) este optimizada para la region que tu sub-sitio Multisite apunta. Un sitio para “Berlin” deberia cargar desde un servidor edge aleman para los mejores Core Web Vitals 2026.&lt;/p&gt;
&lt;h2 id=&quot;6-implementación-técnica-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-implementación-técnica-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Implementación técnica paso a paso&lt;/h2&gt;
&lt;h3 id=&quot;configuración-de-la-red-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-la-red-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de la red Multisite&lt;/h3&gt;
&lt;p&gt;La configuración correcta de WordPress Multisite es fundamental para el éxito del SEO local empresarial:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// wp-config.php - Habilitar Multisite&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_ALLOW_MULTISITE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;MULTISITE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;SUBDOMAIN_INSTALL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DOMAIN_CURRENT_SITE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;brand.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La instalación por subdominios (&lt;code&gt;london.brand.com&lt;/code&gt;) es preferida sobre subcarpetas (&lt;code&gt;brand.com/london/&lt;/code&gt;) para SEO local porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google trata cada subdominio como una entidad semi-independiente&lt;/li&gt;
&lt;li&gt;Permite configuraciónes de hosting edge por region&lt;/li&gt;
&lt;li&gt;Fácilita la gestión de certificados SSL por ubicacion&lt;/li&gt;
&lt;li&gt;Permite configuraciónes de cache específicas por mercado&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;schema-localbusiness-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-localbusiness-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema LocalBusiness automatizado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;LocalBusiness&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Tu Marca - Madrid Centro&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;address&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;PostalAddress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;streetAddress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Gran Via 42&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;addressLocality&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Madrid&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;postalCode&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;28013&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;addressCountry&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ES&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;geo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;GeoCoordinates&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;latitude&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;40.4168&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;longitude&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;-3.7038&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;openingHoursSpecification&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;OpeningHoursSpecification&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;dayOfWeek&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Monday&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Tuesday&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Wednesday&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Thursday&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Friday&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;opens&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;09:00&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;closes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;20:00&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;telephone&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;+34-91-XXX-XXXX&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sincronizacion-automática-con-google-business-profile&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sincronizacion-automática-con-google-business-profile&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sincronizacion automática con Google Business Profile&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Sincronizar datos de ubicacion con Google Business Profile API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sync_location_to_google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $location_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;location_details&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $google_api &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Business_Profile_API&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $google_api&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $location_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;google_place_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;regularHours&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $location_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hours&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;phoneNumbers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($location_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;phone&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;websiteUri&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_site_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post_location&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;sync_location_to_google&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-estrategia-de-contenido-localizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-estrategia-de-contenido-localizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Estrategia de contenido localizado&lt;/h2&gt;
&lt;h3 id=&quot;tipos-de-contenido-que-funcionan-para-seo-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-contenido-que-funcionan-para-seo-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de contenido que funcionan para SEO local&lt;/h3&gt;
&lt;p&gt;Para cada ubicacion, crea y mantiene los siguientes tipos de contenido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas de servicio localizadas&lt;/strong&gt;: “Servicios de [Tu Servicio] en [Ciudad/Barrio]”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog local&lt;/strong&gt;: Noticias, eventos y tendencias específicas de la zona&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testimonios locales&lt;/strong&gt;: Resenas y casos de éxito de clientes de esa ubicacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guias de area&lt;/strong&gt;: “Las mejores [X] en [Zona]” - contenido útil que establece autoridad local&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de equipo local&lt;/strong&gt;: Presenta al personal de cada ubicacion para humanizar la marca&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;frecuencia-de-publicación-recomendada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#frecuencia-de-publicación-recomendada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Frecuencia de publicación recomendada&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tipo de contenido&lt;/th&gt;&lt;th&gt;Frecuencia&lt;/th&gt;&lt;th&gt;Impacto SEO&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Blog local&lt;/td&gt;&lt;td&gt;2-4 posts/mes&lt;/td&gt;&lt;td&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Actualizaciones de servicio&lt;/td&gt;&lt;td&gt;Mensual&lt;/td&gt;&lt;td&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Eventos locales&lt;/td&gt;&lt;td&gt;Segun ocurran&lt;/td&gt;&lt;td&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Testimonios&lt;/td&gt;&lt;td&gt;1-2/mes&lt;/td&gt;&lt;td&gt;Medio-Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Páginas de equipo&lt;/td&gt;&lt;td&gt;Trimestral&lt;/td&gt;&lt;td&gt;Bajo-Medio&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;8-monitoreo-y-metricas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-monitoreo-y-metricas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Monitoreo y metricas&lt;/h2&gt;
&lt;h3 id=&quot;kpis-para-seo-local-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kpis-para-seo-local-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;KPIs para SEO local empresarial&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clasificación en Local Pack&lt;/strong&gt; por ubicacion y palabra clave principal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistencia NAP&lt;/strong&gt; - % de citaciones correctas en la web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico organico local&lt;/strong&gt; - visitas desde búsquedas geomodificadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversiones por ubicacion&lt;/strong&gt; - llamadas, direcciones, formularios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velocidad de página por sub-sitio&lt;/strong&gt; - Core Web Vitals individuales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-de-monitoreo-recomendadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-monitoreo-recomendadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de monitoreo recomendadas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BrightLocal&lt;/strong&gt;: Seguimiento de clasificaciónes locales y citaciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;: Rendimiento por sub-sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screaming Frog&lt;/strong&gt;: Auditoria técnica de toda la red&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matomo/GA4&lt;/strong&gt;: Analytics segmentado por ubicacion&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;El SEO local empresarial es un juego de precision y escala. Al aprovechar el poder de &lt;strong&gt;WordPress Multisite&lt;/strong&gt; y la sincronizacion automatizada por API en 2026, conviertes cientos de ubicaciones individuales en un imperio de búsqueda unificado y de alta clasificación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Es tu marca visible en cada ciudad? Escala tu SEO local hoy.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Contacta con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para una consulta gratuita sobre tu estrategia SEO local empresarial.&lt;/p&gt;</content:encoded><category>seo</category><category>business</category><category domain="tag">local-seo</category><category domain="tag">multisite</category><category domain="tag">enterprise</category><category domain="tag">google-business-profile</category><category domain="tag">scalability</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-presentation-stage.jpg" type="image/jpeg"/></item><item><title>Estrategia global de contenidos con WordPress: Guia empresarial 2026</title><link>https://wppoland.com/es/global-content-strategy-management-wordpress-2026-enterprise-guide/</link><guid isPermaLink="true">https://wppoland.com/es/global-content-strategy-management-wordpress-2026-enterprise-guide/</guid><description>Gestionar contenido para más de 20 regiones es un desafio complejo en 2026. Esta guía de más de 2500 palabras explora como construir y gobernar una estrategia de contenidos global usando WordPress.</description><pubDate>Wed, 17 Sep 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, gestionar contenido para multiples regiones y mercados se ha convertido en uno de los desafios más complejos para las empresas globales. La traduccion es solo la punta del iceberg. Una verdadera estrategia global de contenidos requiere gobernanza centralizada, ejecucion localizada, infraestructura técnica robusta y una comprension profunda de las diferencias culturales, regulatorias y de mercado entre regiones.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Este manual exhaustivo explora como construir y gobernar una estrategia de contenidos global usando WordPress como plataforma central, abordando desde la arquitectura técnica hasta los flujos de trabajo editoriales y las metricas de rendimiento.&lt;/p&gt;
&lt;h2 id=&quot;1-el-paradigma-global-local-consistencia-con-flexibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-paradigma-global-local-consistencia-con-flexibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El paradigma global-local: Consistencia con flexibilidad&lt;/h2&gt;
&lt;p&gt;El mayor desafio de una estrategia de contenidos global es equilibrar la consistencia de marca con la relevancia local. En 2026, las empresas exitosas operan con un modelo que denominaremos &lt;strong&gt;“Global Core, Local Soul”&lt;/strong&gt; (Nucleo Global, Alma Local).&lt;/p&gt;
&lt;h3 id=&quot;la-proporcion-7030&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-proporcion-7030&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La proporcion 70/30&lt;/h3&gt;
&lt;p&gt;La regla práctica más efectiva es la proporcion 70/30:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;70% contenido global&lt;/strong&gt;: Mensajes de marca, propuestas de valor principales, especificaciones de producto, directrices de diseño y activos creativos centrales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30% contenido local&lt;/strong&gt;: Casos de estudio regionales, testimonios locales, adaptaciones culturales, referencias a eventos locales y contenido específico del mercado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta proporcion no es arbitraria. Se basa en datos de empresas que han probado diferentes modelos durante años. Demasiada centralizacion (90/10) produce contenido que se siente generico e irrelevante en mercados locales. Demasiada descentralizacion (50/50) diluye la marca y crea inconsistencias que confunden a los clientes globales.&lt;/p&gt;
&lt;h3 id=&quot;bloques-de-contenido-modulares&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloques-de-contenido-modulares&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloques de contenido modulares&lt;/h3&gt;
&lt;p&gt;En lugar de crear páginas completas para cada region, WordPress permite crear &lt;strong&gt;bloques de contenido modulares&lt;/strong&gt; que pueden ensamblarse de diferentes maneras según el mercado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Bloque Hero - Global] + [Bloque Testimonios - Local] + [Bloque Producto - Global] + [Bloque CTA - Local]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada bloque tiene un nivel de gobernanza:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bloqueado&lt;/strong&gt;: Solo el equipo global puede editar (logotipos, mensajes de marca principales).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adaptable&lt;/strong&gt;: El equipo local puede modificar dentro de parametros definidos (texto, imágenes locales).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Libre&lt;/strong&gt;: El equipo local tiene control total (blog local, eventos, noticias regionales).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este enfoque modular es posible gracias al Editor de Bloques de WordPress (Gutenberg), que en 2026 permite crear patrones de bloques con permisos granulares. Los equipos regionales pueden personalizar su contenido sin romper la identidad visual de la marca global.&lt;/p&gt;
&lt;h2 id=&quot;2-arquitectura-técnica-wordpress-multisite-vs-multisitio-independiente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-arquitectura-técnica-wordpress-multisite-vs-multisitio-independiente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Arquitectura técnica: WordPress Multisite vs. Multisitio independiente&lt;/h2&gt;
&lt;p&gt;La decision arquitectonica más importante en una estrategia global de contenidos es la eleccion entre WordPress Multisite y sitios independientes.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-multisite-el-hub-centralizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-multisite-el-hub-centralizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress Multisite: El hub centralizado&lt;/h3&gt;
&lt;p&gt;WordPress Multisite permite gestionar multiples sitios desde una única instalación:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Actualizaciones centralizadas de temas y plugins&lt;/li&gt;
&lt;li&gt;Roles y permisos uniformes entre sitios&lt;/li&gt;
&lt;li&gt;Comparticion de activos (biblioteca de medios compartida)&lt;/li&gt;
&lt;li&gt;Panel de control centralizado para administradores globales&lt;/li&gt;
&lt;li&gt;Costes de infraestructura reducidos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una vulnerabilidad afecta a todos los sitios&lt;/li&gt;
&lt;li&gt;El rendimiento puede degradarse con muchos subsitios&lt;/li&gt;
&lt;li&gt;Las actualizaciones pueden causar conflictos entre sitios con necesidades diferentes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sitios-independientes-autonomia-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitios-independientes-autonomia-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitios independientes: Autonomia total&lt;/h3&gt;
&lt;p&gt;Sitios WordPress separados para cada region:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aislamiento total (una caida no afecta a otros sitios)&lt;/li&gt;
&lt;li&gt;Flexibilidad para plugins y configuraciónes específicas por region&lt;/li&gt;
&lt;li&gt;Rendimiento predecible e independiente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mayor coste de mantenimiento&lt;/li&gt;
&lt;li&gt;Dificil mantener consistencia entre sitios&lt;/li&gt;
&lt;li&gt;Duplicacion de esfuerzos en actualizaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-solución-hibrida-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-hibrida-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución hibrida de 2026&lt;/h3&gt;
&lt;p&gt;En 2026, la arquitectura más efectiva es un &lt;strong&gt;modelo hibrido&lt;/strong&gt;: WordPress Multisite como hub central de contenido conectado a frontends independientes via REST API o WPGraphQL. Esto proporciona la gobernanza centralizada del Multisite con la flexibilidad de despliegue de sitios independientes.&lt;/p&gt;
&lt;p&gt;Esta arquitectura permite que cada region tenga su propio frontend optimizado para su mercado (velocidad local, CDN regional, personalización) mientras comparte la base de contenido y las herramientas editoriales desde un WordPress centralizado.&lt;/p&gt;
&lt;h2 id=&quot;3-localización-más-alla-de-la-traduccion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-localización-más-alla-de-la-traduccion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Localización más alla de la traduccion&lt;/h2&gt;
&lt;p&gt;La localización efectiva va mucho más alla de traducir texto. Implica adaptar la experiencia completa del usuario al contexto cultural y regulatorio de cada mercado.&lt;/p&gt;
&lt;h3 id=&quot;adaptaciones-culturales-criticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#adaptaciones-culturales-criticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Adaptaciones culturales criticas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Formatos de fecha y hora&lt;/strong&gt;: DD/MM/YYYY vs MM/DD/YYYY vs YYYY-MM-DD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formatos numericos&lt;/strong&gt;: 1.000,50 vs 1,000.50&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direccionalidad del texto&lt;/strong&gt;: LTR vs RTL para mercados arabes y hebreos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paletas de colores&lt;/strong&gt;: El significado cultural de los colores varia enormemente entre regiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imágenes y fotografias&lt;/strong&gt;: Los modelos, escenarios y contextos visuales deben reflejar la audiencia local&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tono y registro&lt;/strong&gt;: Formal vs informal varia significativamente entre culturas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;regulaciones-por-region&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#regulaciones-por-region&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Regulaciones por region&lt;/h3&gt;
&lt;p&gt;En 2026, las regulaciones de contenido varian dramaticamente entre jurisdicciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UE&lt;/strong&gt;: RGPD, Ley de Servicios Digitales, Ley de IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;California&lt;/strong&gt;: CCPA/CPRA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brasil&lt;/strong&gt;: LGPD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;China&lt;/strong&gt;: Ley de Protección de Información Personal (PIPL)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WordPress permite implementar &lt;strong&gt;etiquetas de cumplimiento automatizadas&lt;/strong&gt; que marcan contenido que puede violar regulaciones específicas antes de su publicación. Esto es esencial para empresas que operan en multiples jurisdicciones y necesitan asegurar que cada pieza de contenido cumple con la normativa local.&lt;/p&gt;
&lt;h3 id=&quot;flujos-de-trabajo-de-traduccion-con-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujos-de-trabajo-de-traduccion-con-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujos de trabajo de traduccion con IA&lt;/h3&gt;
&lt;p&gt;En 2026, la IA ha revolucionado los flujos de trabajo de traduccion:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Traduccion automática inicial&lt;/strong&gt;: Herramientas como DeepL y Google Translate proporcionan traducciones de alta calidad como punto de partida.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision humana&lt;/strong&gt;: Traductores nativos revisan y adaptan el contenido, enfocandose en matices culturales y terminologia técnica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memoria de traduccion (TM)&lt;/strong&gt;: Los sistemas de TM integrados en WordPress almacenan traducciones previas para reutilizarlas automáticamente, reduciendo costes hasta un 90%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación de sensibilidad cultural&lt;/strong&gt;: Algoritmos de IA revisan el contenido traducido en busca de posibles problemas culturales antes de la publicación.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;4-seo-internacional-hreflang-y-mas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-seo-internacional-hreflang-y-mas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. SEO internacional: Hreflang y mas&lt;/h2&gt;
&lt;p&gt;El &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO internacional&lt;/a&gt; es un componente crítico de cualquier estrategia global de contenidos. En 2026, Google y los motores de búsqueda basados en IA evaluan la implementación hreflang como señal directa de calidad.&lt;/p&gt;
&lt;h3 id=&quot;implementación-correcta-de-hreflang&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-correcta-de-hreflang&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación correcta de hreflang&lt;/h3&gt;
&lt;p&gt;Las etiquetas hreflang informan a los motores de búsqueda sobre las versiones linguisticas y regionales de cada página:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;es&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/es/servicio/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;en&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/en/service/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;pt&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/pt/servico/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;x-default&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/en/service/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Errores comunes a evitar:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hreflang unidireccional (cada página debe apuntar a todas sus versiones, incluida a si misma)&lt;/li&gt;
&lt;li&gt;URLs incorrectas o con errores tipograficos&lt;/li&gt;
&lt;li&gt;Falta de etiqueta x-default&lt;/li&gt;
&lt;li&gt;Mezclar idiomas y regiones incorrectamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;subdirectorios-vs-subdominios-vs-cctld&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#subdirectorios-vs-subdominios-vs-cctld&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Subdirectorios vs subdominios vs ccTLD&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Estructura&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ejemplo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ventajas&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Desventajas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Subdirectorios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;wppoland.com/es/&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Consolida autoridad de dominio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Menos senalizacion geografica&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Subdominios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;es.wppoland.com&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Separacion clara&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Autoridad dividida&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;ccTLD&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;wppoland.es&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Maxima senalizacion geografica&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada dominio parte de cero&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;En la mayoria de los casos, los &lt;strong&gt;subdirectorios&lt;/strong&gt; son la opción recomendada porque consolidan toda la autoridad de dominio, haciendo que cada versión linguistica se beneficie del link building global.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-de-contenido-local-para-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-contenido-local-para-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de contenido local para SEO&lt;/h3&gt;
&lt;p&gt;No basta con traducir el contenido existente. Cada mercado tiene sus propias consultas de búsqueda, intenciones y competidores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Investigacion de palabras clave local&lt;/strong&gt;: Las traducciones literales de keywords raramente son las búsquedas reales que hacen los usuarios locales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido único por mercado&lt;/strong&gt;: Artículos sobre temas específicos del mercado local que no existen en otros idiomas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Link building local&lt;/strong&gt;: Obtener enlaces de medios y sitios web locales de cada mercado objetivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos estructurados localizados&lt;/strong&gt;: Schema.org con información local (direcciones, números de telefono, horarios en formato local).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-gobernanza-de-contenidos-roles-flujos-de-trabajo-y-aprobaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-gobernanza-de-contenidos-roles-flujos-de-trabajo-y-aprobaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Gobernanza de contenidos: Roles, flujos de trabajo y aprobaciones&lt;/h2&gt;
&lt;p&gt;En una operación global, la gobernanza del contenido es lo que separa el caos de la excelencia operativa.&lt;/p&gt;
&lt;h3 id=&quot;jerarquía-de-roles-globales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#jerarquía-de-roles-globales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Jerarquía de roles globales&lt;/h3&gt;
&lt;p&gt;WordPress permite crear roles personalizados para cada nivel de la organización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Global Content Director&lt;/strong&gt;: Control total sobre todos los sitios y contenido global.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regional Content Manager&lt;/strong&gt;: Gestiona contenido para una region específica (Europa, LATAM, Asia).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local Editor&lt;/strong&gt;: Crea y edita contenido local, requiere aprobacion del manager regional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local Contributor&lt;/strong&gt;: Propone contenido que debe ser aprobado antes de publicarse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Translator&lt;/strong&gt;: Acceso específico para traduccion y localización de contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;flujos-de-aprobacion-automatizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujos-de-aprobacion-automatizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujos de aprobacion automatizados&lt;/h3&gt;
&lt;p&gt;En 2026, los flujos de trabajo de aprobacion estan integrados directamente en WordPress:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El editor local crea un borrador.&lt;/li&gt;
&lt;li&gt;El sistema verifica automáticamente el cumplimiento regulatorio (palabras clave restringidas, divulgaciones requeridas).&lt;/li&gt;
&lt;li&gt;El manager regional revisa y aprueba o solicita cambios.&lt;/li&gt;
&lt;li&gt;Si el contenido es de categoría “global”, requiere aprobacion adicional del director global.&lt;/li&gt;
&lt;li&gt;Una vez aprobado, el contenido se pública automáticamente en el horario optimo para la zona horaria local.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;metricas-de-rendimiento-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-rendimiento-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de rendimiento global&lt;/h3&gt;
&lt;p&gt;Un dashboard centralizado debe rastrear metricas clave por region:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tráfico organico por idioma/region&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasas de conversión por mercado&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velocidad de producción de contenido&lt;/strong&gt; (dias desde la creación hasta la publicación)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad de traduccion&lt;/strong&gt; (puntuacion automática + revision humana)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento regulatorio&lt;/strong&gt; (porcentaje de contenido que pasa verificaciónes automáticas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento SEO&lt;/strong&gt; (posiciones, clics, impresiones por mercado)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-tecnologias-de-soporte-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-tecnologias-de-soporte-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Tecnologias de soporte en 2026&lt;/h2&gt;
&lt;h3 id=&quot;dam-digital-asset-management&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dam-digital-asset-management&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;DAM (Digital Asset Management)&lt;/h3&gt;
&lt;p&gt;Un sistema DAM centralizado es esencial para gestionar activos visuales a escala global:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Almacenamiento centralizado de imágenes, videos y documentos&lt;/li&gt;
&lt;li&gt;Versionado automático por region (misma imagen con texto localizado)&lt;/li&gt;
&lt;li&gt;Optimización automática de imágenes (AVIF, WebP) para cada mercado&lt;/li&gt;
&lt;li&gt;Derechos y licencias rastreados por activo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cdp-customer-data-platform&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cdp-customer-data-platform&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CDP (Customer Data Platform)&lt;/h3&gt;
&lt;p&gt;Los CDP permiten personalizar el contenido basandose en datos del visitante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Personalización por ubicacion geografica&lt;/li&gt;
&lt;li&gt;Contenido adaptado al historial de navegación&lt;/li&gt;
&lt;li&gt;Recomendaciones basadas en comportamiento previo&lt;/li&gt;
&lt;li&gt;Segmentacion por idioma preferido del navegador&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-de-ia-para-contenido-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-ia-para-contenido-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de IA para contenido global&lt;/h3&gt;
&lt;p&gt;En 2026, la IA juega un papel crucial en la estrategia global de contenidos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generación de borradores iniciales&lt;/strong&gt; en multiples idiomas simultaneamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación de consistencia de marca&lt;/strong&gt; entre versiones linguisticas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización SEO automática&lt;/strong&gt; para cada mercado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de sentimiento&lt;/strong&gt; del contenido en diferentes idiomas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deteccion de problemas culturales&lt;/strong&gt; antes de la publicación&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;7-casos-de-éxito-empresas-globales-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-casos-de-éxito-empresas-globales-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Casos de éxito: Empresas globales con WordPress&lt;/h2&gt;
&lt;h3 id=&quot;caso-1-marca-de-moda-con-35-mercados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-1-marca-de-moda-con-35-mercados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso 1: Marca de moda con 35 mercados&lt;/h3&gt;
&lt;p&gt;Una marca de moda europea utiliza WordPress Multisite con 35 subsitios, cada uno con su propio catálogo de productos, blog y páginas de servicio al clientes. El contenido global (páginas de marca, lookbooks) se sincroniza automáticamente desde el hub central, mientras que cada mercado mantiene su propio blog con contenido local.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;40% de reduccion en costes de producción de contenido&lt;/li&gt;
&lt;li&gt;25% de mejora en tráfico organico global&lt;/li&gt;
&lt;li&gt;Tiempo de publicación reducido de 2 semanas a 2 dias&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;caso-2-empresa-saas-con-presencia-en-20-paises&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-2-empresa-saas-con-presencia-en-20-paises&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso 2: Empresa SaaS con presencia en 20 paises&lt;/h3&gt;
&lt;p&gt;Una empresa SaaS B2B utiliza WordPress como headless CMS alimentando frontends en Astro para cada mercado. El contenido se gestiona centralmente pero se despliega a CDN regionales para maxima velocidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TTFB inferior a 100ms en todos los mercados&lt;/li&gt;
&lt;li&gt;60% de mejora en tasas de conversión en mercados no anglosajos&lt;/li&gt;
&lt;li&gt;80% de reduccion en costes de traduccion gracias a TM con IA&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;8-plan-de-implementación-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-plan-de-implementación-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Plan de implementación paso a paso&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-auditoria-y-planificación-mes-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-auditoria-y-planificación-mes-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Auditoria y planificación (Mes 1-2)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Auditar todo el contenido existente y categorizarlo como global o local.&lt;/li&gt;
&lt;li&gt;Identificar mercados prioritarios basandose en datos de negocio.&lt;/li&gt;
&lt;li&gt;Definir la arquitectura técnica (Multisite, headless, hibrido).&lt;/li&gt;
&lt;li&gt;Establecer roles y responsabilidades.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-2-infraestructura-técnica-mes-3-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-infraestructura-técnica-mes-3-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Infraestructura técnica (Mes 3-4)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Desplegar la arquitectura WordPress elegida.&lt;/li&gt;
&lt;li&gt;Configurar hreflang y estructura de URLs.&lt;/li&gt;
&lt;li&gt;Implementar flujos de trabajo de traduccion.&lt;/li&gt;
&lt;li&gt;Establecer el sistema DAM.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-3-contenido-y-lanzamiento-mes-5-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-contenido-y-lanzamiento-mes-5-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Contenido y lanzamiento (Mes 5-6)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Migrar contenido existente a la nueva estructura.&lt;/li&gt;
&lt;li&gt;Traducir y localizar contenido prioritario.&lt;/li&gt;
&lt;li&gt;Lanzar mercados piloto.&lt;/li&gt;
&lt;li&gt;Monitorear y optimizar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-4-escalado-mes-7&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-escalado-mes-7&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Escalado (Mes 7+)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Anadir mercados adicionales basandose en resultados piloto.&lt;/li&gt;
&lt;li&gt;Automatizar flujos de trabajo con IA.&lt;/li&gt;
&lt;li&gt;Optimizar basandose en datos de rendimiento.&lt;/li&gt;
&lt;li&gt;Expandir la estrategia de contenido local.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Una estrategia global de contenidos exitosa en 2026 requiere mucho más que traduccion. Requiere una arquitectura técnica robusta, gobernanza clara, flujos de trabajo eficientes y una comprension profunda de cada mercado objetivo. WordPress, con su flexibilidad, ecosistema de plugins y capacidades API, sigue siendo la plataforma ideal para empresas que necesitan escalar su presencia digital globalmente.&lt;/p&gt;
&lt;p&gt;Si esta listo para llevar su estrategia de contenidos al siguiente nivel, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede ayudarle a disenar e implementar una solución global que se adapte a las necesidades específicas de su organización. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO internacional&lt;/a&gt; y &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de rendimiento&lt;/a&gt; para empresas con ambiciones globales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Soluciónes a medida para empresas globales&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; - Optimización para mercados internacionales&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Soporte continuo para sitios multilingues&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Modernizacion de sitios corporativos globales&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>marketing</category><category domain="tag">global-content-strategy</category><category domain="tag">enterprise-wordpress</category><category domain="tag">content-governance</category><category domain="tag">international-seo</category><category domain="tag">digital-transformation</category><enclosure url="https://wppoland.com/images/og/wordpress-debloat-optimization-guide.jpg" type="image/jpeg"/></item><item><title>WordPress vs. Hostinger Website Builder 2026: La batalla de la IA</title><link>https://wppoland.com/es/wordpress-vs-hostinger-website-builder-2026-comparison/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-vs-hostinger-website-builder-2026-comparison/</guid><description>Eligiendo entre el poder de WordPress y la simplicidad impulsada por IA de Hostinger Website Builder en 2026? Esta guía de más de 2500 palabras compara funcionalidades, costos y rendimiento.</description><pubDate>Thu, 11 Sep 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, la barrera de entrada para crear un sitio web nunca ha sido más baja. La Inteligencia Artificial ha transformado “construir” en “describir”. En el centro de esta transformación hay dos enfoques muy diferentes: el poder veterano de &lt;strong&gt;WordPress&lt;/strong&gt; y la estrategia agresiva IA-first del &lt;strong&gt;Hostinger Website Builder&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Para un propietario de pequeña empresa o un emprendedor en 2026, la pregunta ya no es solo “puedo construir un sitio?” sino “cuanto de mi crecimiento futuro estoy dispuesto a sacrificar por la conveniencia de hoy?”&lt;/p&gt;
&lt;p&gt;En esta comparación exhaustiva de más de 2500 palabras, analizamos por que &lt;strong&gt;WPPoland&lt;/strong&gt; recomienda consistentemente WordPress para marcas serias, mientras reconocemos donde la herramienta de Hostinger encaja en el panorama de 2026.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-el-contexto-2026-generado-por-ia-vs-asistido-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-contexto-2026-generado-por-ia-vs-asistido-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El contexto 2026: Generado por IA vs. Asistido por IA&lt;/h2&gt;
&lt;p&gt;La tendencia más grande de 2026 es la madurez de la IA, pero hay una diferencia fundamental entre las dos filosofias.&lt;/p&gt;
&lt;h3 id=&quot;hostinger-el-camino-generado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hostinger-el-camino-generado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hostinger: El camino “Generado por IA”&lt;/h3&gt;
&lt;p&gt;Hostinger ha apostado fuertemente por su constructor propietario (anteriormente Zyro). Es esencialmente un &lt;strong&gt;Conserje de IA&lt;/strong&gt;. Usted describe, la IA construye.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El sitio en 30 segundos&lt;/strong&gt;: Escribe “Tengo una panaderia en Barcelona” y la IA genera el layout, las imágenes, los meta tags SEO y los posts iniciales del blog. Es impresionante como demostracion tecnológica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conveniencia&lt;/strong&gt;: Esta disenado para alguien que no quiere tocar una sola linea de código ni pensar en “arquitectura de hosting”. Todo esta simplificado al maximo.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-el-camino-asistido-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-el-camino-asistido-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: El camino “Asistido por IA”&lt;/h3&gt;
&lt;p&gt;WordPress usa IA para empoderar al usuario, no para reemplazar el proceso de toma de decisiones. La IA es una herramienta, no el arquitecto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Blueprint AI&lt;/strong&gt;: El nucleo de WordPress ahora permite generar patrones de bloques y estructuras de página sofisticadas que son completamente personalizables. La IA sugiere; el humano decide.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integración de experiencia&lt;/strong&gt;: La IA en WordPress ayuda a optimizar para &lt;strong&gt;E-E-A-T&lt;/strong&gt; (Experiencia, Pericia, Autoridad y Confiabilidad) sugiriendo enlaces internos y mejoras de schema.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-propiedad-y-el-factor-bloqueo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-propiedad-y-el-factor-bloqueo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Propiedad y el factor “bloqueo”&lt;/h2&gt;
&lt;p&gt;Esta es la diferencia técnica más crítica entre las dos plataformas, y la que tiene mayores consecuencias a largo plazo.&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Hostinger Builder&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Propiedad de datos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100% usted es dueno de archivos y BD&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Propiedad de la plataforma (propietario)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Portabilidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muevase a cualquier host cuando quiera&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bloqueado en infraestructura Hostinger&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Acceso al código fuente&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Acceso completo a todo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitado / Sin acceso&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Riesgo a largo plazo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Impulsado por comunidad (riesgo cero)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dependiente del éxito de una empresa&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;La advertencia de WPPoland&lt;/strong&gt;: Frecuentemente escuchamos de clientes que comenzaron en el constructor propietario de Hostinger y, despues de dos años, querian agregar una funcionalidad personalizada (como un sistema de reservas especializado o una calculadora de impuestos compleja). Descubrieron que no podian agregarlo y tuvieron que pagar por una &lt;strong&gt;reconstruccion completa&lt;/strong&gt; en WordPress porque no podian simplemente “exportar” su sitio. El costo de esa reconstruccion excedio con creces lo que hubiera costado empezar en WordPress desde el principio.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-rendimiento-y-velocidad-la-ventaja-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-rendimiento-y-velocidad-la-ventaja-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Rendimiento y velocidad: La ventaja SEO&lt;/h2&gt;
&lt;p&gt;En 2026, &lt;strong&gt;Core Web Vitals&lt;/strong&gt; (específicamente INP) son los guardianes del tráfico organico. Un sitio lento no solo frustra a los usuarios; es penalizado activamente por los motores de búsqueda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento de Hostinger Builder&lt;/strong&gt;: Es rápido para sitios simples. Porque es un sistema cerrado, Hostinger puede optimizar el renderizado del lado del servidor. Sin embargo, porque depende fuertemente de scripts de IA del lado del clientes y una interfaz de constructor “pesada” propietaria, frecuentemente tiene dificultades a medida que el contenido crece.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento de WordPress&lt;/strong&gt;: Con una configuración lean (como la que proporcionamos en &lt;strong&gt;WPPoland&lt;/strong&gt; usando &lt;strong&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Astro 5&lt;/a&gt;&lt;/strong&gt; u &lt;strong&gt;Gutenberg Optimizado&lt;/strong&gt;), WordPress es imbatible. Puede elegir la ubicacion de su servidor, su CDN y su estrategia de cache hasta el milisegundo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparativa de rendimiento:&lt;/strong&gt;&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Hostinger Builder&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress (WPPoland)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;LCP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.5-2.5s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5-1.0s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;INP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;150-300ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-100ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;CLS&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.05-0.15&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-0.02&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Lighthouse Score&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;70-85&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;95-100&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-seo-y-la-búsqueda-ia-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-seo-y-la-búsqueda-ia-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. SEO y la búsqueda IA (LLMO)&lt;/h2&gt;
&lt;p&gt;Como los modelos de IA como ChatGPT y Perplexity encuentran su negocio en 2026? A través de &lt;strong&gt;Datos Estructurados&lt;/strong&gt; y contenido semanticamente rico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEO en WordPress&lt;/strong&gt;: Tiene control total sobre su &lt;strong&gt;schema JSON-LD&lt;/strong&gt;. Puede decirle a los modelos de IA exactamente quien es, que vende y por que es un experto. Con plugins como Rank Math o código personalizado, su SEO es un instrumento quirurgico. Consulte nuestra guía de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEO en Hostinger&lt;/strong&gt;: Es “configurar y olvidar”. La IA hace un trabajo decente para palabras clave básicas, pero si quiere competir por terminos altamente competitivos en los mercados hispanohablante o europeo, la falta de control granular sobre la arquitectura del sitio y el schema de breadcrumbs lo frenara.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-flexibilidad-de-diseño-mas-alla-de-las-plantillas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-flexibilidad-de-diseño-mas-alla-de-las-plantillas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Flexibilidad de diseño: Mas alla de las plantillas&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Hostinger&lt;/strong&gt;: Usa un sistema “Snap-to-Grid”. Es muy dificil arruinar el diseño, pero también muy dificil hacerlo lucir único. Si su competidor también usa Hostinger, su sitio de panaderia podria verse exactamente como su floreria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: En 2026, &lt;strong&gt;Full Site Editing (FSE)&lt;/strong&gt; significa que usted es el arquitecto. Puede construir headers, footers y layouts de archivo 100% personalizados. Con el editor de bloques nativo, su diseño esta limitado solo por su imaginacion, no por la biblioteca de plantillas de una empresa SaaS.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-e-commerce-ventas-simples-vs-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-e-commerce-ventas-simples-vs-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. E-commerce: Ventas simples vs. escala&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;E-commerce de Hostinger&lt;/strong&gt;: Excelente para vender unos pocos artículos. Maneja pagos (Stripe/PayPal) y envio básico. Sin embargo, carece de integración profunda con proveedores europeos locales como &lt;strong&gt;InPost&lt;/strong&gt;, &lt;strong&gt;DPD&lt;/strong&gt; o leyes de facturacion específicas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress (&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt;)&lt;/strong&gt;: El estándar de oro. En 2026, WooCommerce es modular; solo carga las partes que necesita. Se integra con todo. Si su negocio crece de 10 pedidos al mes a 10.000, WordPress escala con usted sin necesidad de reconstruir nada.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-análisis-de-costos-la-trampa-de-lo-barato&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-análisis-de-costos-la-trampa-de-lo-barato&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Análisis de costos: La “trampa de lo barato”&lt;/h2&gt;
&lt;p&gt;Hostinger es famoso por sus precios de entrada bajos ($2.99/mes). Pero veamos el &lt;strong&gt;Costo Total de Propiedad (TCO) a 3 años&lt;/strong&gt;.&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Año&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Hostinger (Business)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress (Gestionado)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Año 1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$150 (incluye dominio)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$500 - $2.000 (Setup + Host)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Año 2&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$250 (precios de renovacion)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$200 (Hosting)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Año 3&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$250 + tarifas de apps&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$200&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;~$700+&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;~$900 - $2.400&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;El veredicto&lt;/strong&gt;: Hostinger es más barato el primer año. Pero si lo supera y tiene que pagar por una migración y reconstruccion (tipicamente $2.000+), la opción “barata” se convierte en el error más caro que haya cometido.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-escalabilidad-pensando-en-2028&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-escalabilidad-pensando-en-2028&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Escalabilidad: Pensando en 2028&lt;/h2&gt;
&lt;p&gt;Donde estará su negocio en dos años?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multilingue&lt;/strong&gt;: Si necesita un sitio multilingue (español/ingles/aleman), WordPress lo maneja nativamente y con potencia. La herramienta de Hostinger todavia esta poniendose al dia en gestión compleja multi-sitio/multi-idioma.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Area de miembros&lt;/strong&gt;: Si necesita un area de membresia, WordPress tiene docenas de plugins maduros. Hostinger esta restringido a lo que eligen construir para usted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integraciones&lt;/strong&gt;: WordPress se conecta con cualquier sistema externo via API. Hostinger tiene un conjunto limitado de integraciones predefinidas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-veredicto-wppoland-cual-encaja-en-su-estrategia-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-veredicto-wppoland-cual-encaja-en-su-estrategia-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Veredicto WPPoland: Cual encaja en su estrategia 2026?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Elija WordPress si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Esta construyendo una marca empresarial a largo plazo&lt;/li&gt;
&lt;li&gt;SEO y autoridad de contenido son sus motores de crecimiento principales&lt;/li&gt;
&lt;li&gt;Quiere propiedad absoluta y soberania de datos&lt;/li&gt;
&lt;li&gt;Necesita integraciones profundas con software personalizado o local&lt;/li&gt;
&lt;li&gt;Planea escalar significativamente en los proximos 2-3 años&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elija Hostinger Builder si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Esta probando una idea de “proyecto de fin de semana”&lt;/li&gt;
&lt;li&gt;Tiene cero presupuesto y cero tiempo&lt;/li&gt;
&lt;li&gt;No le importan los rankings SEO ni la unicidad de marca por ahora&lt;/li&gt;
&lt;li&gt;Necesita algo funcional en menos de una hora&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-faq-preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-faq-preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. FAQ: Preguntas frecuentes&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Puedo usar WordPress en Hostinger?&lt;/strong&gt; Si. Hostinger es un excelente &lt;em&gt;proveedor de hosting&lt;/em&gt; para WordPress. Esta comparación es específicamente sobre su &lt;em&gt;constructor de sitios web propietario&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hostinger Builder es más fácil que WordPress?&lt;/strong&gt; En 2026, la brecha es pequeña. Mientras Hostinger es “pick up and play”, WordPress moderno con patrones de bloques también es muy amigable para principiantes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;La IA reemplazara a los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrolladores WordPress&lt;/a&gt;?&lt;/strong&gt; No. La IA en 2026 automatiza el “trabajo manual”, pero la &lt;strong&gt;arquitectura estrategica&lt;/strong&gt; y la &lt;strong&gt;alineacion de marca&lt;/strong&gt; todavia requieren expertos humanos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Puedo vender en ambas plataformas?&lt;/strong&gt; Si, ambas tienen funcionalidades de e-commerce, pero WooCommerce (WordPress) es significativamente más poderoso y extensible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cual es mejor para blogging?&lt;/strong&gt; WordPress. Fue construido para blogging y su sistema de taxonomía/archivo es el mejor del mundo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;La IA de Hostinger es buena para contenido?&lt;/strong&gt; Es un buen punto de partida, pero generico. Todavia necesita editarlo para asegurar que las señales “E-E-A-T” esten presentes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Que es “Riesgo de Plataforma”?&lt;/strong&gt; Es el peligro de que su negocio dependa de que otra empresa siga en el negocio o mantenga sus precios iguales. WordPress elimina este riesgo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hostinger permite plugins personalizados?&lt;/strong&gt; No. Esta limitado a las funcionalidades que proporcionan.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cuanto tiempo toma construir un sitio WordPress?&lt;/strong&gt; Un sitio profesional puede tomar 2-6 semanas dependiendo de la complejidad. Un sitio IA de Hostinger toma 5 minutos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Por que WPPoland solo construye en WordPress?&lt;/strong&gt; Porque nos rehusamos a construir los negocios de nuestros clientes en “tierra alquilada”. Queremos que nuestros clientes tengan activos que posean al 100%.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion-construyendo-para-el-futuro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-construyendo-para-el-futuro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Construyendo para el futuro&lt;/h2&gt;
&lt;p&gt;En 2026, todos pueden tener un sitio web. Pero no todos pueden tener un &lt;strong&gt;activo digital&lt;/strong&gt;. Mientras el &lt;strong&gt;Hostinger Website Builder&lt;/strong&gt; es una maravilla de conveniencia IA moderna, sigue siendo una herramienta para aficionados y experimentos locales muy pequeños.&lt;/p&gt;
&lt;p&gt;Para un negocio que pretende seguir existiendo en 2027 y más alla, &lt;strong&gt;WordPress&lt;/strong&gt; es la única opción lógica. Ofrece el rendimiento, la propiedad y la escalabilidad requeridos para convertir un sitio web en un motor de crecimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No construya sobre tierra alquilada. Construya su legado en WordPress con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Sitios web empresariales&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - E-commerce profesional&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento superior&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; - Visibilidad en búsqueda&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Migración desde constructores propietarios&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">wordpress-vs-hostinger</category><category domain="tag">ai-website-builder</category><category domain="tag">hosting-comparison-2026</category><category domain="tag">small-business-web</category><category domain="tag">performance-seo</category><enclosure url="https://wppoland.com/images/og/technology-conference-networking-break.jpg" type="image/jpeg"/></item><item><title>La etica del contenido IA: Guia para editores WordPress 2026</title><link>https://wppoland.com/es/ethics-ai-content-wordpress-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/ethics-ai-content-wordpress-guide-2026/</guid><description>La IA esta en todas partes, pero donde esta el limite? Aprende los estándares eticos para contenido IA en 2026 para proteger tu marca y mantener la confianza en búsquedas.</description><pubDate>Mon, 08 Sep 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, la pregunta no es &lt;em&gt;si&lt;/em&gt; usas IA, sino &lt;em&gt;como&lt;/em&gt; la usas. Para los editores WordPress, la linea etica entre “Automatizacion Eficiente” y “Spam Perezoso” es lo que determina la supervivencia de la marca a largo plazo. La IA ha democratizado la creación de contenido, pero esta democratizacion viene con responsabilidades que muchos editores aun no comprenden completamente.&lt;/p&gt;
&lt;p&gt;Esta guía presenta el manifiesto 2026 para la publicación etica de contenido asistido por IA, cubriendo desde los principios fundamentales hasta las implementaciónes prácticas que protegeran tu marca y tu posicionamiento en búsquedas.&lt;/p&gt;
&lt;h2 id=&quot;etica-de-la-creación-de-contenido-con-inteligencia-artificial-para-editores-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#etica-de-la-creación-de-contenido-con-inteligencia-artificial-para-editores-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Etica de la creación de contenido con inteligencia artificial para editores en 2026&lt;/h2&gt;
&lt;p&gt;La interseccion entre IA y etica editorial se ha convertido en el desafio definitorio para los propietarios de sitios WordPress en 2026. Con cada LLM importante capaz de producir texto pulido en segundos, la pregunta ha pasado de “puede la IA escribir mi contenido?” a “deberia hacerlo, y bajo que reglas?”&lt;/p&gt;
&lt;p&gt;Tres fuerzas impulsan esta conversacion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Los motores de busqueda penalizan la automatizacion pura.&lt;/strong&gt; La actualización principal de Google de marzo de 2024 y los refinamientos posteriores de SpamBrain apuntan específicamente al contenido de IA producido en masa sin valor editorial humano. Los sitios que publican resultados de IA sin editar a escala arriesgan perder el 60-90% del trafico organico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los lectores detectan y desconfian del texto generico de IA.&lt;/strong&gt; Las audiencias reconocen las frases genericas de IA. La confianza, medida a través de metricas de engagement y tasas de visitas recurrentes, cae cuando el contenido se siente automatizado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La responsabilidad legal es real.&lt;/strong&gt; Publicar consejos medicos, legales o financieros generados por IA sin verificación humana de hechos crea exposicion a responsabilidad que ninguna exencion de responsabilidad mitiga completamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El marco a continuacion proporciona estandares practicos para editores WordPress que usan IA como herramienta sin dejar que se convierta en la voz.&lt;/p&gt;
&lt;h2 id=&quot;1-la-transparencia-como-señal-de-confianza-e-e-a-t&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-transparencia-como-señal-de-confianza-e-e-a-t&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La transparencia como señal de confianza (E-E-A-T)&lt;/h2&gt;
&lt;p&gt;Los usuarios estan cansados de los “bots fantasma”. Ocultar tu uso de IA ya no es una estrategia viable. Los algoritmos de 2026 son capaces de detectar patrones de contenido generado por IA, y la falta de transparencia erosiona la confianza tanto de los usuarios como de los motores de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;el-estándar-de-divulgacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-estándar-de-divulgacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El estándar de divulgacion&lt;/h3&gt;
&lt;p&gt;Usa una insignia estandarizada en tus publicaciónes WordPress. Algo como: &lt;em&gt;“Producido con asistencia de IA. Revision y verificación final por [Nombre del Autor Humano].”&lt;/em&gt; Esta divulgacion debe ser visible, no escondida en un pie de página diminuto.&lt;/p&gt;
&lt;p&gt;La divulgacion no es solo una cuestion etica; es una estrategia de SEO. Los motores de búsqueda de 2026 premian la transparencia como una señal de confianza, y los sitios que divulgan abiertamente su uso de IA experimentan mejores metricas de E-E-A-T que los que intentan ocultar su proceso de creación.&lt;/p&gt;
&lt;h3 id=&quot;el-beneficio-comercial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-beneficio-comercial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El beneficio comercial&lt;/h3&gt;
&lt;p&gt;La transparencia construye la puntuacion de &lt;strong&gt;Confiabilidad&lt;/strong&gt; de tu perfil E-E-A-T. Los usuarios que saben que el contenido fue verificado por un experto humano confian más en la información, permanecen más tiempo en el sitio y tienen tasas de conversión más altas. La honestidad sobre el uso de IA se ha convertido en una ventaja competitiva, no en una desventaja.&lt;/p&gt;
&lt;h3 id=&quot;implementación-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación técnica&lt;/h3&gt;
&lt;p&gt;Agrega metadatos de divulgacion de IA a tu schema de Article. Los estándares C2PA (Coalition for Content Provenance and Authenticity) proporcionan un marco técnico para declarar el origen del contenido. Implementa estos metadatos en tu tema WordPress para que los rastreadores puedan verificar automáticamente tu politica de transparencia.&lt;/p&gt;
&lt;h2 id=&quot;2-el-mandato-de-ganancia-de-información&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-mandato-de-ganancia-de-información&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El mandato de ganancia de información&lt;/h2&gt;
&lt;p&gt;El mayor fracaso etico (y de SEO) de la IA es el “Efecto Camara de Eco”. Si usas un LLM para resumir otros sitios web, estas contribuyendo con valor cero a la web. Este problema es la raiz de la “Homogeneizacion del Conocimiento”, donde millones de sitios dicen exactamente lo mismo con palabras ligeramente diferentes.&lt;/p&gt;
&lt;h3 id=&quot;la-regla-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-regla-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La regla de 2026&lt;/h3&gt;
&lt;p&gt;Cada publicación asistida por IA en tu sitio WordPress debe contener &lt;strong&gt;Valor Anadido Humano&lt;/strong&gt;. Esto incluye opiniones únicas, fotos originales, datos propietarios que el modelo de IA no tenia en su conjunto de entrenamiento, o análisis basados en experiencia directa que la IA no puede replicar.&lt;/p&gt;
&lt;h3 id=&quot;ejemplos-de-valor-anadido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplos-de-valor-anadido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplos de valor anadido&lt;/h3&gt;
&lt;p&gt;Un artículo sobre optimización WordPress generado por IA puede ser aceptable si el autor humano agrega: datos de rendimiento reales de sitios que ha optimizado, capturas de pantalla de antes y despues de casos reales, opiniones criticas sobre herramientas basadas en uso personal, y matices que solo un profesional con años de experiencia puede aportar.&lt;/p&gt;
&lt;h3 id=&quot;la-prueba-de-unicidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-prueba-de-unicidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La prueba de unicidad&lt;/h3&gt;
&lt;p&gt;Antes de publicar cualquier contenido asistido por IA, preguntate: “Si elimino todo lo que la IA podria haber generado, queda algo valioso y único?” Si la respuesta es no, el artículo necesita más trabajo humano antes de publicarse.&lt;/p&gt;
&lt;h2 id=&quot;3-responsabilidad-el-humano-en-el-bucle&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-responsabilidad-el-humano-en-el-bucle&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Responsabilidad: El humano en el bucle&lt;/h2&gt;
&lt;p&gt;Quien es responsable si una publicación generada por IA da mal consejo? Esta pregunta tiene implicaciones legales, eticas y comerciales que todo editor WordPress debe considerar seriamente.&lt;/p&gt;
&lt;h3 id=&quot;supervision-editorial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#supervision-editorial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Supervision editorial&lt;/h3&gt;
&lt;p&gt;En 2026, cada publicación debe tener un “Autor Responsable” designado. Este humano es legal y eticamente responsable de los hechos contenidos en el artículo. No importa cuanto del borrador fue generado por IA; el autor humano es responsable del producto final publicado.&lt;/p&gt;
&lt;h3 id=&quot;ciclos-de-verificación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ciclos-de-verificación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ciclos de verificación&lt;/h3&gt;
&lt;p&gt;Implementa un paso de revision humana obligatorio en tu flujo de trabajo WordPress antes de que cualquier borrador de IA pase a “Publicado”. Este paso debe incluir verificación de hechos, revision de tono y voz, evaluación de sesgo y confirmacion de que el contenido aporta valor genuino al lector.&lt;/p&gt;
&lt;h3 id=&quot;documentación-del-proceso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#documentación-del-proceso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Documentación del proceso&lt;/h3&gt;
&lt;p&gt;Mantiene un registro documentado de tu proceso de creación de contenido asistido por IA. Esto incluye las indicaciones utilizadas, las herramientas empleadas, los pasos de verificación realizados y la identidad del revisor humano. Esta documentación es valiosa tanto para la auditoria interna como para demostrar diligencia debida en caso de disputas.&lt;/p&gt;
&lt;h2 id=&quot;4-evitando-sesgo-y-discriminacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-evitando-sesgo-y-discriminacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Evitando sesgo y discriminacion&lt;/h2&gt;
&lt;p&gt;Los modelos de IA pueden reproducir involuntariamente sesgos sociales presentes en sus datos de entrenamiento. Para editores WordPress, esto representa un riesgo reputacional y etico significativo que debe gestionarse activamente.&lt;/p&gt;
&lt;h3 id=&quot;la-verificación-etica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-verificación-etica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La verificación etica&lt;/h3&gt;
&lt;p&gt;Los editores deben auditar sus indicaciones y resultados en busca de sesgo. Esto incluye sesgo de genero, sesgo racial, sesgo cultural, sesgo de edad y sesgo socioeconomico. Una revision sistemática del contenido generado por IA antes de su publicación puede detectar y corregir estos sesgos.&lt;/p&gt;
&lt;h3 id=&quot;inclusividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inclusividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inclusividad&lt;/h3&gt;
&lt;p&gt;Asegurate de que tu contenido asistido por IA represente perspectivas diversas y no se apoye en estereotipos fácilistas encontrados en datos de entrenamiento más antiguos. Solicita explicitamente perspectivas diversas en tus indicaciones de IA y verifica que el contenido resultante sea inclusivo.&lt;/p&gt;
&lt;h3 id=&quot;auditorias-periodicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditorias-periodicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditorias periodicas&lt;/h3&gt;
&lt;p&gt;Realiza auditorias trimestrales de tu contenido publicado para identificar patrones de sesgo que puedan haber pasado desapercibidos en revisiones individuales. Los patrones sistematicos son más dificiles de detectar artículo por artículo, pero se vuelven evidentes al analizar el corpus completo.&lt;/p&gt;
&lt;h2 id=&quot;5-matriz-de-etica-editorial-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-matriz-de-etica-editorial-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Matriz de etica editorial 2026&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Estrategia de Contenido&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Nivel de Etica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Puntuacion de Confianza&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Riesgo a Largo Plazo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Manual (100% Humano)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Estándar de Oro&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Extrema&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy Bajo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;IA + Revision Experta&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Profesional&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;IA + Edicion Básica&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Economia&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;IA Pura (Automatizada)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Substandar&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Muy Baja&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Extremo (Desindexacion)&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;el-espectro-de-la-automatizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-espectro-de-la-automatizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El espectro de la automatizacion&lt;/h3&gt;
&lt;p&gt;La mayoria de los editores profesionales en 2026 operan en la zona “IA + Revision Experta”. Utilizan IA para investigación, generación de borradores y optimización estructural, pero el contenido final pasa por multiples rondas de revision humana que agregan experiencia, verifican hechos y ajustan el tono a la voz de la marca.&lt;/p&gt;
&lt;h3 id=&quot;riesgos-de-la-automatizacion-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgos-de-la-automatizacion-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgos de la automatizacion total&lt;/h3&gt;
&lt;p&gt;Los sitios que publican contenido 100% generado por IA sin supervision humana enfrentan riesgos crecientes: desindexacion por parte de Google, demandas por información incorrecta, dano reputacional por contenido de baja calidad y perdida de confianza por parte de la audiencia. El ahorro de costos a corto plazo no justifica los riesgos a largo plazo.&lt;/p&gt;
&lt;h2 id=&quot;6-protección-de-la-propiedad-intelectual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-protección-de-la-propiedad-intelectual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Protección de la propiedad intelectual&lt;/h2&gt;
&lt;h3 id=&quot;el-problema-del-scraping&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-del-scraping&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema del scraping&lt;/h3&gt;
&lt;p&gt;En 2026, los modelos de IA son agresivos en el scraping de contenido para entrenamiento. Mientras usas IA para &lt;em&gt;crear&lt;/em&gt;, también necesitas usar herramientas para &lt;em&gt;proteger&lt;/em&gt; tus datos originales de ser alimentados a los modelos de competidores.&lt;/p&gt;
&lt;h3 id=&quot;medidas-de-protección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medidas-de-protección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medidas de protección&lt;/h3&gt;
&lt;p&gt;Usa &lt;code&gt;robots.txt&lt;/code&gt; efectivamente para bloquear rastreadores de entrenamiento de IA no deseados. Implementa metadatos de licencia en tu contenido. Monitorea tu sitio para detectar bots de “sanguijuela” que extraen contenido para entrenar modelos competidores.&lt;/p&gt;
&lt;h3 id=&quot;equilibrio-entre-visibilidad-y-protección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#equilibrio-entre-visibilidad-y-protección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Equilibrio entre visibilidad y protección&lt;/h3&gt;
&lt;p&gt;Existe una tension entre proteger tu contenido del scraping y maximizar tu visibilidad en motores de búsqueda IA. La estrategia optima en 2026 es permitir el acceso a rastreadores de búsqueda IA (Google, Perplexity) mientras bloqueas rastreadores de entrenamiento de modelos (CCBot, GPTBot) cuando no benefician tu visibilidad.&lt;/p&gt;
&lt;h2 id=&quot;7-marco-legal-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-marco-legal-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Marco legal en 2026&lt;/h2&gt;
&lt;h3 id=&quot;regulaciones-vigentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#regulaciones-vigentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Regulaciones vigentes&lt;/h3&gt;
&lt;p&gt;La Union Europea ha implementado la AI Act, que requiere transparencia en el uso de IA para contenido público. Varios paises latinoamericanos estan adoptando marcos similares. Los editores WordPress que operan internacionalmente deben cumplir con multiples jurisdicciones.&lt;/p&gt;
&lt;h3 id=&quot;responsabilidad-por-contenido-incorrecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#responsabilidad-por-contenido-incorrecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Responsabilidad por contenido incorrecto&lt;/h3&gt;
&lt;p&gt;La publicación de información incorrecta generada por IA puede generar responsabilidad legal, especialmente en temas YMYL (salud, finanzas, legal). La verificación humana de hechos no es opcional; es una necesidad legal y etica.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pro-tip-protegiendo-tu-foso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pro-tip-protegiendo-tu-foso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PRO-Tip: Protegiendo tu foso&lt;/h2&gt;
&lt;p&gt;En 2026, el scraping de IA es agresivo. Mientras usas IA para &lt;em&gt;crear&lt;/em&gt;, usa herramientas para &lt;em&gt;proteger&lt;/em&gt; tus datos originales de ser alimentados a los modelos de competidores. Usa &lt;code&gt;robots.txt&lt;/code&gt; efectivamente y monitorea tu sitio para detectar bots de “sanguijuela”.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO y optimización GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La IA es un amplificador. Si le proporcionas basura, amplifica basura. Si le proporcionas supervision experta y limites eticos, te permite construir un imperio WordPress sin sacrificar tu integridad. La clave esta en usar la IA como una herramienta que potencia la experiencia humana, no como un reemplazo de ella.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; para implementar flujos de trabajo eticos con IA en tu sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El futuro pertenece al editor etico. Como usaras tu voz en 2026?&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>seo</category><category domain="tag">ai-ethics</category><category domain="tag">transparency</category><category domain="tag">content-strategy</category><category domain="tag">publishing</category><category domain="tag">eeat</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-flip.jpg" type="image/jpeg"/></item><item><title>Por qué las grandes corporaciones eligen WordPress en 2026: Un análisis empresarial</title><link>https://wppoland.com/es/why-large-corporations-choose-wordpress-2026-analysis/</link><guid isPermaLink="true">https://wppoland.com/es/why-large-corporations-choose-wordpress-2026-analysis/</guid><description>En 2026, el debate sobre CMS corporativo ha terminado. Este análisis de más de 2000 palabras explica por qué las empresas Fortune 500 están migrando a WordPress por agilidad y escala.</description><pubDate>Sat, 06 Sep 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Las discusiones en las salas de juntas de 2026 suenan muy diferentes a las de hace una década. La pregunta ya no es “¿deberíamos usar WordPress?” sino “¿con qué rapidez podemos migrar todo nuestro portafolio a WordPress?”.&lt;/p&gt;
&lt;p&gt;Durante años, las grandes corporaciones estuvieron atadas a soluciones CMS monolíticas y propietarias por la seguridad percibida de una etiqueta de precio elevada. Pero en 2026, la &lt;strong&gt;agilidad, el rendimiento y la densidad de talento&lt;/strong&gt; se han convertido en las nuevas monedas del éxito corporativo. A medida que el mundo avanza hacia experiencias digitales descentralizadas y de alta velocidad, WordPress ha emergido como el claro ganador.&lt;/p&gt;
&lt;p&gt;En este análisis profundo (más de 2500 palabras), exploramos las razones estratégicas por las que las empresas más grandes del mundo están abandonando los sistemas propietarios en favor del poder de código abierto de WordPress.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-brecha-de-agilidad-independencia-del-marketing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-brecha-de-agilidad-independencia-del-marketing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La brecha de agilidad: Independencia del marketing&lt;/h2&gt;
&lt;p&gt;En un mercado acelerado, el mayor enemigo de una corporación es la &lt;strong&gt;latencia en la comunicación&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Problema Propietario&lt;/strong&gt;: En sistemas como Sitecore o Adobe AEM, incluso cambios menores de maquetación a menudo requieren un ticket a un equipo de TI especializado y un ciclo de despliegue de varias semanas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Solución WordPress&lt;/strong&gt;: Con la madurez de la Edición Basada en Bloques (Gutenberg), los equipos de marketing pueden construir, probar y lanzar páginas de destino complejas en horas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta “Agilidad de Marketing” es frecuentemente la razón #1 citada por los CMOs en 2026 para elegir WordPress. Permite a las marcas responder a tendencias del mercado o eventos globales en tiempo real, sin cuellos de botella técnicos.&lt;/p&gt;
&lt;h3 id=&quot;el-costo-real-de-la-latencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-costo-real-de-la-latencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El costo real de la latencia&lt;/h3&gt;
&lt;p&gt;Consideremos un escenario real: una empresa global de moda detecta una tendencia emergente en redes sociales. Con un CMS propietario, el proceso típico sería:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Solicitud del equipo de marketing al departamento de TI (1-2 días)&lt;/li&gt;
&lt;li&gt;Evaluación técnica y asignación de recursos (2-3 días)&lt;/li&gt;
&lt;li&gt;Desarrollo y revisión (3-5 días)&lt;/li&gt;
&lt;li&gt;Pruebas y aprobación (1-2 días)&lt;/li&gt;
&lt;li&gt;Despliegue (1 día)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Tiempo total&lt;/strong&gt;: 8-13 días laborables. Para entonces, la tendencia podría haber pasado.&lt;/p&gt;
&lt;p&gt;Con WordPress y Gutenberg:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El equipo de marketing diseña la página de destino (2-3 horas)&lt;/li&gt;
&lt;li&gt;Revisión interna y aprobación (1-2 horas)&lt;/li&gt;
&lt;li&gt;Publicación (minutos)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Tiempo total&lt;/strong&gt;: Menos de un día laborable. La diferencia en velocidad de respuesta al mercado es extraordinaria.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-rendimiento-inigualable-el-estándar-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-rendimiento-inigualable-el-estándar-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Rendimiento inigualable (el estándar Core Web Vitals)&lt;/h2&gt;
&lt;p&gt;Los algoritmos de búsqueda de Google en 2026 priorizan la Experiencia de Usuario (UX) por encima de casí todo lo demás.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ligero por Diseño&lt;/strong&gt;: Los sistemas empresariales propietarios son notoriamente pesados. WordPress, cuando se optimiza correctamente, está construido para la velocidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capacidades Headless&lt;/strong&gt;: Las grandes corporaciones aprovechan WordPress como backend “Headless”, sirviendo contenido a frontends de alto rendimiento como &lt;strong&gt;Astro 5&lt;/strong&gt;. Esto resulta en tiempos de LCP (Largest Contentful Paint) consistentemente por debajo de 1 segundo, incluso para portales corporativos de gran envergadura.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;arquitectura-de-rendimiento-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-de-rendimiento-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura de rendimiento moderna&lt;/h3&gt;
&lt;p&gt;La pila tecnológica empresarial típica de WordPress en 2026 se ve así:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backend&lt;/strong&gt;: WordPress como CMS headless con REST API o GraphQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frontend&lt;/strong&gt;: Framework de alto rendimiento (Astro, Next.js, Nuxt.js)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caché&lt;/strong&gt;: Redis para caché de objetos, Varnish para caché de página completa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN&lt;/strong&gt;: Cloudflare o Akamai para distribución edge global&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base de datos&lt;/strong&gt;: MySQL con réplicas de lectura y ProxySQL para balanceo de carga&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta arquitectura logra consistentemente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LCP inferior a 0.8 segundos globalmente&lt;/li&gt;
&lt;li&gt;INP inferior a 100ms&lt;/li&gt;
&lt;li&gt;CLS prácticamente en 0&lt;/li&gt;
&lt;li&gt;Alta disponibilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-el-fin-del-impuesto-de-software-roi-y-eficiencia-de-costos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-el-fin-del-impuesto-de-software-roi-y-eficiencia-de-costos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. El fin del “impuesto de software” (ROI y eficiencia de costos)&lt;/h2&gt;
&lt;p&gt;Para una empresa Fortune 500, una tarifa de licencia anual de $200,000 para un CMS puede parecer insignificante, pero los “impuestos ocultos” son enormes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Impuesto de Implementación&lt;/strong&gt;: Los sistemas propietarios son tan complejos que la construcción inicial a menudo cuesta 5 veces más que un equivalente en WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impuesto de Soporte&lt;/strong&gt;: Estás atrapado en un grupo reducido de agencias especializadas de alto precio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Innovación Incremental&lt;/strong&gt;: En WordPress, miles de desarrolladores de clase mundial están mejorando el software para ti a diario, sin costo alguno. En sistemas propietarios, esperas la próxima actualización de pago.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desglose-comparativo-del-tco-a-5-años&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desglose-comparativo-del-tco-a-5-años&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desglose comparativo del TCO a 5 años&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Concepto&lt;/th&gt;&lt;th&gt;CMS Propietario&lt;/th&gt;&lt;th&gt;WordPress Empresarial&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Licencias de software (5 años)&lt;/td&gt;&lt;td&gt;$1,000,000+&lt;/td&gt;&lt;td&gt;$0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Implementación inicial&lt;/td&gt;&lt;td&gt;$500,000 - $2,000,000&lt;/td&gt;&lt;td&gt;$100,000 - $400,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mantenimiento anual&lt;/td&gt;&lt;td&gt;$150,000 - $300,000&lt;/td&gt;&lt;td&gt;$50,000 - $120,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Formación del equipo&lt;/td&gt;&lt;td&gt;$50,000 - $100,000&lt;/td&gt;&lt;td&gt;$10,000 - $30,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hosting gestionado&lt;/td&gt;&lt;td&gt;$60,000 - $120,000&lt;/td&gt;&lt;td&gt;$24,000 - $60,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Total estimado (5 años)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;$2,360,000 - $4,220,000&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;$394,000 - $1,090,000&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Las corporaciones en 2026 están redirigiendo sus presupuestos millonarios de CMS lejos de las licencias y hacia la &lt;strong&gt;innovación orientada al clientes&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-la-seguridad-como-ecosistema-no-como-cortafuegos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-la-seguridad-como-ecosistema-no-como-cortafuegos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. La seguridad como ecosistema, no como cortafuegos&lt;/h2&gt;
&lt;p&gt;El mito de que “el código abierto es menos seguro” murió hace años. La transparencia de WordPress se ve como su mayor activo de seguridad.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Auditoría Activa&lt;/strong&gt;: Debido a que el código fuente es público, cualquier vulnerabilidad es encontrada y parcheada en horas por un equipo de seguridad global de contribución colectiva.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validación de Alto Perfil&lt;/strong&gt;: Entidades importantes como la Casa Blanca y bancos globales han demostrado que con el endurecimiento adecuado del entorno (cumplimiento SOC2/ISO), WordPress es una fortaleza digital.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;modelo-de-seguridad-por-capas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modelo-de-seguridad-por-capas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modelo de seguridad por capas&lt;/h3&gt;
&lt;p&gt;Las organizaciónes empresariales que implementan WordPress utilizan un enfoque de seguridad en profundidad:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa de Infraestructura&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servidores dedicados con aislamiento completo del hardware&lt;/li&gt;
&lt;li&gt;Redes privadas con segmentación estricta&lt;/li&gt;
&lt;li&gt;Cifrado de extremo a extremo (TLS 1.3 + AES-256)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Capa de Aplicación&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Actualizaciones automáticas gestionadas del núcleo de WordPress&lt;/li&gt;
&lt;li&gt;Revisión de seguridad de código para cada plugin y tema&lt;/li&gt;
&lt;li&gt;WAF con reglas personalizadas para WordPress&lt;/li&gt;
&lt;li&gt;Escaneo de vulnerabilidades automatizado 24/7&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Capa de Acceso&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Autenticación multifactor (MFA) obligatoria&lt;/li&gt;
&lt;li&gt;Integración SSO con proveedores de identidad empresariales&lt;/li&gt;
&lt;li&gt;Principio de mínimo privilegio en todos los roles de usuario&lt;/li&gt;
&lt;li&gt;Registro completo de auditoría de todas las acciones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Capa de Datos&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cifrado a nivel de campo para datos sensibles&lt;/li&gt;
&lt;li&gt;Copias de seguridad automatizadas geográficamente distribuidas&lt;/li&gt;
&lt;li&gt;Políticas de retención de datos conformes con GDPR/CCPA&lt;/li&gt;
&lt;li&gt;Procedimientos de respuesta a incidentes documentados&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-escala-global-gestionando-más-de-100-marcas-simultáneamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-escala-global-gestionando-más-de-100-marcas-simultáneamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Escala global: Gestionando más de 100 marcas simultáneamente&lt;/h2&gt;
&lt;p&gt;Las grandes corporaciones no tienen solo un sitio web; tienen un portafolio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura de Red Multisite&lt;/strong&gt;: WordPress 2026 permite a una corporación gestionar cientos de sitios localizados (por ejemplo, marca-es.com, marca-mx.com, marca-ar.com) desde un único panel de control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activos Compartidos&lt;/strong&gt;: Los temas y plugins pueden actualizarse globalmente, asegurando consistencia de marca en todas las filiales regionales con un solo clic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-ventaja-del-multilingüismo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ventaja-del-multilingüismo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La ventaja del multilingüismo&lt;/h3&gt;
&lt;p&gt;Para corporaciones con presencia en Hispanoamérica y Europa, WordPress ofrece ventajas únicas en la gestión multilingüe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WPML o Polylang&lt;/strong&gt;: Gestión profesional de traducciones con flujos de trabajo integrados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URLs localizadas&lt;/strong&gt;: Cada versión del idioma tiene su propia estructura de URLs optimizada para SEO local&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido independiente por mercado&lt;/strong&gt;: Los equipos regionales pueden gestionar su propio contenido sin afectar a otros mercados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribución Edge por región&lt;/strong&gt;: El contenido se sirve desde servidores cercanos a cada mercado objetivo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-densidad-de-talento-y-sostenibilidad-del-ecosistema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-densidad-de-talento-y-sostenibilidad-del-ecosistema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Densidad de talento y sostenibilidad del ecosistema&lt;/h2&gt;
&lt;p&gt;El riesgo más peligroso para un proyecto corporativo es la &lt;strong&gt;“Dependencia de Persona Clave”&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si tu sitio está construido sobre un CMS propietario oscuro y tu único desarrollador especializado se va, tu patrimonio digital está en riesgo.&lt;/li&gt;
&lt;li&gt;WordPress tiene el grupo más grande del mundo de desarrolladores certificados, agencias y expertos en SEO. Esto asegura que una corporación nunca sea “rehén” de un único proveedor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;disponibilidad-de-talento-por-plataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#disponibilidad-de-talento-por-plataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Disponibilidad de talento por plataforma&lt;/h3&gt;
&lt;p&gt;La realidad del mercado laboral en 2026 habla por sí misma:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: Millones de desarrolladores activos a nivel mundial, miles de agencias especializadas en cada continente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adobe AEM&lt;/strong&gt;: Grupo limitado de desarrolladores certificados, costos de contratación 3-4 veces superiores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitecore&lt;/strong&gt;: Aún más reducido, con consultores que cobran tarifas premium significativas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drupal&lt;/strong&gt;: Comunidad considerable pero en declive relativo frente a WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta abundancia de talento no solo reduce costos; también reduce riesgos. Si una agencia no cumple con las expectativas, cambiar a otra es un proceso relativamente sencillo con WordPress.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-integración-directa-en-el-stack-martech&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-integración-directa-en-el-stack-martech&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Integración directa en el stack MarTech&lt;/h2&gt;
&lt;p&gt;En 2026, WordPress es el corazón de una “DXP Composable” (Plataforma de Experiencia Digital Componible).&lt;/p&gt;
&lt;p&gt;El enfoque API-first de WordPress significa que se integra nativamente con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Salesforce/CRM&lt;/strong&gt;: Flujo de leads en tiempo real y personalización de clientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistemas ERP&lt;/strong&gt;: Enviando datos de logística y precios al edge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capas de IA&lt;/strong&gt;: Integración directa con LLMs para resumen y traducción automatizada de contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-ecosistema-de-integraciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ecosistema-de-integraciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ecosistema de integraciones&lt;/h3&gt;
&lt;p&gt;WordPress en 2026 no es una isla; es el centro neurálgico de un ecosistema conectado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatización de marketing&lt;/strong&gt;: HubSpot, Marketo, ActiveCampaign, Mautic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analytics avanzado&lt;/strong&gt;: Google Analytics 4, Mixpanel, Amplitude&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalización&lt;/strong&gt;: Dynamic Yield, Optimizely, VWO&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E-commerce&lt;/strong&gt;: WooCommerce con integraciones de inventario y fulfillment&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comúnicación&lt;/strong&gt;: Slack, Microsoft Teams, Twilio para notificaciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DevOps&lt;/strong&gt;: GitHub Actions, GitLab CI, Jenkins para despliegue continuo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-caso-de-estudio-migración-de-un-gigante-tecnológico-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-caso-de-estudio-migración-de-un-gigante-tecnológico-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Caso de estudio: Migración de un gigante tecnológico global&lt;/h2&gt;
&lt;p&gt;A finales de 2025, una empresa tecnológica de primer nivel migró 40 sitios regionales de una DXP propietaria a &lt;strong&gt;WordPress Empresarial&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resultado 1&lt;/strong&gt;: El tiempo de despliegue para nuevo contenido disminuyó un 700%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resultado 2&lt;/strong&gt;: La velocidad de carga de página mejoró un 60% a nivel global.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resultado 3&lt;/strong&gt;: Los costos operativos anuales (licencias + soporte especializado) se redujeron en $1.2M.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;detalles-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#detalles-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Detalles de la migración&lt;/h3&gt;
&lt;p&gt;La migración se ejecutó en cuatro fases estratégicas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fase 1 - Descubrimiento (3 meses)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Auditoría completa de los 40 sitios existentes&lt;/li&gt;
&lt;li&gt;Mapeo de todas las integraciones y dependencias&lt;/li&gt;
&lt;li&gt;Evaluación de competencias del equipo interno&lt;/li&gt;
&lt;li&gt;Diseño de la nueva arquitectura WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 2 - Piloto (2 meses)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migración de 3 sitios piloto (mercados secundarios)&lt;/li&gt;
&lt;li&gt;Validación de rendimiento, seguridad y funcionalidad&lt;/li&gt;
&lt;li&gt;Refinamiento de procesos y documentación&lt;/li&gt;
&lt;li&gt;Capacitación del equipo de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 3 - Despliegue masivo (6 meses)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migración por lotes de los 37 sitios restantes&lt;/li&gt;
&lt;li&gt;Implementación de la arquitectura headless con Astro&lt;/li&gt;
&lt;li&gt;Configuración de hosting gestionado con WP-VIP&lt;/li&gt;
&lt;li&gt;Monitoreo continuo de rendimiento y SEO&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 4 - Optimización (3 meses)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ajuste fino del rendimiento basado en datos reales&lt;/li&gt;
&lt;li&gt;Implementación de automatizaciones de contenido&lt;/li&gt;
&lt;li&gt;Integración de herramientas de IA para traducción&lt;/li&gt;
&lt;li&gt;Documentación final y transferencia de conocimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-preparándose-para-el-futuro-en-2027-y-más-allá&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-preparándose-para-el-futuro-en-2027-y-más-allá&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Preparándose para el futuro en 2027 y más allá&lt;/h2&gt;
&lt;p&gt;La web se mueve hacia experiencias &lt;strong&gt;Static-First&lt;/strong&gt; y &lt;strong&gt;AI-First&lt;/strong&gt;. El sistema modular de bloques de WordPress es perfecto para estas tendencias. Estructura el contenido de una forma que es fácilmente procesable tanto por navegadores humanos como por agentes de IA (Perplexity, ChatGPT), asegurando que la experiencia corporativa siga siendo descubrible en la era de los motores de respuesta.&lt;/p&gt;
&lt;h3 id=&quot;tendencias-tecnológicas-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tendencias-tecnológicas-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tendencias tecnológicas clave&lt;/h3&gt;
&lt;p&gt;Las corporaciones que eligen WordPress hoy se están posicionando para capitalizar las tendencias emergentes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WordPress como headless CMS universal&lt;/strong&gt;: La separación frontend/backend permite adoptar cualquier tecnología de presentación futura sin reconstruir la capa de contenido.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Integración nativa con IA generativa&lt;/strong&gt;: WordPress está desarrollando capacidades nativas para asistencia de IA en la creación y optimización de contenido, sin depender de servicios externos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Edge computing de primera clase&lt;/strong&gt;: La arquitectura de WordPress permite distribución global del contenido a través de redes edge, con tiempos de respuesta inferiores a 50ms en cualquier punto del planeta.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Composable architecture&lt;/strong&gt;: El enfoque modular de WordPress permite a las empresas seleccionar y combinar las mejores herramientas para cada función, evitando las limitaciones de las plataformas monolíticas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-cómo-evaluar-si-wordpress-es-adecuado-para-tu-corporación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-cómo-evaluar-si-wordpress-es-adecuado-para-tu-corporación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Cómo evaluar si WordPress es adecuado para tu corporación&lt;/h2&gt;
&lt;p&gt;No todas las empresas tienen las mismás necesidades. Aquí presentamos un framework de evaluación que utilizamos con nuestros clientes empresariales:&lt;/p&gt;
&lt;h3 id=&quot;indicadores-de-que-wordpress-es-la-opción-correcta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-de-que-wordpress-es-la-opción-correcta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores de que WordPress es la opción correcta&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tu equipo de marketing necesita publicar contenido frecuentemente sin depender de TI&lt;/li&gt;
&lt;li&gt;Gestionas múltiples sitios web para diferentes mercados o marcas&lt;/li&gt;
&lt;li&gt;Tus costos actuales de CMS superan los $200,000 anuales&lt;/li&gt;
&lt;li&gt;Necesitas integrarte con múltiples sistemas de terceros&lt;/li&gt;
&lt;li&gt;La velocidad de carga y el SEO son prioridades estratégicas&lt;/li&gt;
&lt;li&gt;Quieres evitar el bloqueo de proveedor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;consideraciones-para-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-para-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones para la migración&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Evalúa la complejidad de tus integraciones actuales&lt;/li&gt;
&lt;li&gt;Identifica las funcionalidades críticas que deben replicarse&lt;/li&gt;
&lt;li&gt;Planifica un cronograma realista de 12-18 meses&lt;/li&gt;
&lt;li&gt;Selecciona un partner de implementación con experiencia empresarial&lt;/li&gt;
&lt;li&gt;Establece métricas claras de éxito antes de comenzar&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;11-conclusión-el-veredicto-de-la-sala-de-juntas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-conclusión-el-veredicto-de-la-sala-de-juntas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;11. Conclusión: El veredicto de la sala de juntas&lt;/h2&gt;
&lt;p&gt;Conoce más sobre la &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Astro y Next.js&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;La transición a WordPress para grandes corporaciones no es una tendencia; es un &lt;strong&gt;realineamiento estructural&lt;/strong&gt;. En 2026, las empresas priorizan plataformas que son abiertas, ágiles y eficientes en costos. WordPress proporciona el poder de una solución empresarial personalizada con la velocidad y el soporte comunitario de un movimiento global.&lt;/p&gt;
&lt;p&gt;Las grandes corporaciones han dejado de comprar “software” CMS y han empezado a invertir en “ecosistemas” CMS. WordPress es la única opción lógicamente sostenible para el futuro a largo plazo de la web empresarial.&lt;/p&gt;
&lt;p&gt;Los datos son irrefutables: menor costo total de propiedad, mayor velocidad de comercialización, seguridad probada a nivel gubernamental y un ecosistema de talento sin rival. La pregunta para los ejecutivos de 2026 no es si migrar a WordPress, sino cuándo hacerlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Tu corporación está lista para desbloquear la agilidad de WordPress? Contacta con WPPoland para una hoja de ruta estratégica de alto nivel.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">enterprise-wordpress</category><category domain="tag">corporate-decision-making</category><category domain="tag">cms-migration</category><category domain="tag">open-source-enterprise</category><category domain="tag">digital-transformation</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-presentation-stage.jpg" type="image/jpeg"/></item><item><title>Estrategias avanzadas de cache para WordPress 2026: Mas alla de archivos estaticos</title><link>https://wppoland.com/es/advanced-wordpress-caching-strategies-2026-guide/</link><guid isPermaLink="true">https://wppoland.com/es/advanced-wordpress-caching-strategies-2026-guide/</guid><description>Tu estrategia de cache esta estancada en 2020? Esta guía exhaustiva explora el futuro del cache: Edge, Cache Tagging y Fragment Caching para WordPress.</description><pubDate>Fri, 05 Sep 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, la brecha de rendimiento entre un sitio WordPress “estándar” y uno “empresarial” esta definida por la &lt;strong&gt;inteligencia del cache&lt;/strong&gt;. Mientras que el cache básico de páginas era suficiente hace una decada, las aplicaciones web modernas requieren estrategias de cache multicapa sofisticadas que entiendan &lt;em&gt;que&lt;/em&gt; cachear, &lt;em&gt;donde&lt;/em&gt; cachearlo y precisamente &lt;em&gt;cuando&lt;/em&gt; invalidarlo.&lt;/p&gt;
&lt;p&gt;Hace diez años, el cache era simple: se guardaba una página como archivo HTML y se servia hasta que expiraba. En 2026, ese enfoque de todo o nada ya no es suficiente. Los sitios web modernos son &lt;strong&gt;entidades hibridas&lt;/strong&gt;: parte estaticas, parte dinámicas, servidas globalmente a usuarios con velocidades de conexión y dispositivos variados. Para alcanzar 100/100 en Core Web Vitals mientras se sirve contenido personalizado, necesita una estrategia que optimice cada capa de la pila de entrega.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía exhaustiva explora las arquitecturas de cache avanzadas que potencian los sitios WordPress más rápidos en 2026.&lt;/p&gt;
&lt;h2 id=&quot;1-la-muerte-del-origen-cache-edge-de-triple-capa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-muerte-del-origen-cache-edge-de-triple-capa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La muerte del origen: Cache Edge de triple capa&lt;/h2&gt;
&lt;p&gt;En 2026, su servidor de origen casí nunca recibe una solicitud de visitante directamente. Las implementaciónes modernas de WordPress siguen una estrategia de cache de triple capa sofisticada que distribuye el contenido por todo el mundo.&lt;/p&gt;
&lt;h3 id=&quot;capa-1-cache-estatico-en-el-edge-cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-1-cache-estatico-en-el-edge-cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 1: Cache estatico en el Edge (CDN)&lt;/h3&gt;
&lt;p&gt;HTML, imágenes, CSS y JavaScript se almacenan en el borde de la red a través de servicios como Cloudflare, Bunny.net o Fastly. Esto proporciona el crítico Time to First Byte (TTFB) inferior a 50ms que los usuarios esperan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Configuraciónes clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cache Everything&lt;/strong&gt;: Cachear HTML en el Edge, no solo activos estaticos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge TTL&lt;/strong&gt;: Establecer tiempos de vida de cache apropiados (1 hora para dinámico, 1 año para estatico)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser TTL&lt;/strong&gt;: Controlar las cabeceras de cache del lado del clientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Always Online&lt;/strong&gt;: Servir contenido obsoleto si el origen no esta disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de Page Rules en Cloudflare:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;*example.com/*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cache Level: Cache Everything&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Edge Cache TTL: 2 hours&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Browser Cache TTL: 30 minutes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Always Online: On&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El concepto fundamental aquí es que cada milisegundo cuenta. Un TTFB de 200ms versus uno de 50ms no parece mucho en números absolutos, pero cuando se multiplica por millones de solicitudes y se considera el impacto acumulativo en Core Web Vitals, la diferencia se convierte en una ventaja competitiva medible en posiciones de búsqueda y tasas de conversión.&lt;/p&gt;
&lt;h3 id=&quot;capa-2-cache-de-respuestas-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-2-cache-de-respuestas-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 2: Cache de respuestas API&lt;/h3&gt;
&lt;p&gt;Para configuraciónes WordPress headless o desacopladas, las respuestas API se cachean por separado del HTML:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Endpoints REST API cacheados con TTL corto (5-15 minutos)&lt;/li&gt;
&lt;li&gt;Consultas GraphQL cacheadas basandose en complejidad y volatilidad de datos&lt;/li&gt;
&lt;li&gt;Purga de cache activada por webhooks para actualizaciones instantaneas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduce la carga de base de datos para frontends impulsados por JavaScript&lt;/li&gt;
&lt;li&gt;Permite experiencias móviles más rápidas&lt;/li&gt;
&lt;li&gt;Soporta funciones en tiempo real con fallbacks cacheados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta capa es especialmente crítica para sitios que utilizan arquitecturas &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;headless con Astro o Next.js&lt;/a&gt;, donde el frontend consume datos a través de APIs y cada milisegundo de latencia en la respuesta API se traduce directamente en degradacion de la experiencia del usuario.&lt;/p&gt;
&lt;h3 id=&quot;capa-3-cache-locking-y-protección-contra-thundering-herd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-3-cache-locking-y-protección-contra-thundering-herd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 3: Cache Locking y protección contra Thundering Herd&lt;/h3&gt;
&lt;p&gt;Cuando un elemento cacheado expira, las configuraciónes tradicionales permiten que multiples solicitudes simultaneas golpeen el servidor de origen. En 2026, implementamos &lt;strong&gt;cache locking&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo la primera solicitud regenera el contenido cacheado&lt;/li&gt;
&lt;li&gt;Las solicitudes subsiguientes reciben una versión ligeramente obsoleta&lt;/li&gt;
&lt;li&gt;Una vez completada la regeneracion, todos los usuarios reciben contenido fresco&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Implementación con Cloudflare Workers:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Patron de cache locking&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; handleRequest&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; caches.default;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cacheKey&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(request.url);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cache.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(cacheKey);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;response) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; lockKey&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; `lock:${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; lock&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; CACHE_LOCKS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(lockKey);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (lock) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cache.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;cacheKey&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}:stale`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; CACHE_LOCKS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(lockKey, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;locked&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {expirationTtl: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetchOrigin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cache.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(cacheKey, response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cache.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;cacheKey&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}:stale`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El problema del “Thundering Herd” (estampida) es particularmente devastador en sitios de alto tráfico. Imagine un sitio con 100.000 visitantes concurrentes donde el cache de la página principal expira: sin protección, 100.000 solicitudes golpearian simultaneamente el servidor de origen, potencialmente derribandolo. Con cache locking, solo una solicitud llega al origen mientras las demás 99.999 reciben la versión anterior del cache.&lt;/p&gt;
&lt;h2 id=&quot;2-invalidacion-granular-el-poder-del-cache-tagging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-invalidacion-granular-el-poder-del-cache-tagging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Invalidacion granular: El poder del Cache Tagging&lt;/h2&gt;
&lt;p&gt;El problema más grande del cache empresarial siempre ha sido el “Problema de la Purga”. Usted corrige un error tipografico en la página principal, y todo el cache del sitio se elimina, causando una caida masiva del rendimiento y sobrecarga del servidor de origen.&lt;/p&gt;
&lt;p&gt;En 2026, resolvemos esto con &lt;strong&gt;Cache Tagging&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona-el-cache-tagging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-el-cache-tagging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona el Cache Tagging&lt;/h3&gt;
&lt;p&gt;En lugar de tratar el contenido cacheado como archivos aislados, etiquetamos cada elemento cacheado con metadatos sobre sus dependencias:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Página principal: tags=[&quot;home&quot;, &quot;post_123&quot;, &quot;post_124&quot;, &quot;category_noticias&quot;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Entrada de blog: tags=[&quot;post_125&quot;, &quot;category_tutoriales&quot;, &quot;author_juan&quot;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Página de categoria: tags=[&quot;category_tutoriales&quot;, &quot;post_125&quot;, &quot;post_126&quot;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando actualiza “Post A”, solo los elementos etiquetados con &lt;code&gt;post_a&lt;/code&gt; se purgan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El post en si mismo&lt;/li&gt;
&lt;li&gt;Sus páginas de archivo de categoría&lt;/li&gt;
&lt;li&gt;Los widgets de posts relacionados&lt;/li&gt;
&lt;li&gt;Las páginas de archivo del autor&lt;/li&gt;
&lt;li&gt;La página principal (si esta destacado)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El resto de sus 10.000 páginas permanecen cacheadas y rápidas. Esta granularidad es lo que separa a los sitios WordPress empresariales de los sitios WordPress promedio en terminos de rendimiento sostenido.&lt;/p&gt;
&lt;h3 id=&quot;implementación-de-cache-tags-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-de-cache-tags-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación de Cache Tags en WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Con Cloudflare:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar cache tags a Cloudflare&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_cache_tags_header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_single&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $tags &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;author_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_author_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cat) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $tags[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;category_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Cache-Tag: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $tags));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_cache_tags_header&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Purga por etiqueta:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Purgar etiquetas específicas cuando se actualiza un post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; purge_post_cache_tags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $tags &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;author_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_author&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post_id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $api &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Cloudflare\API\Client&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($email, $api_key);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $api&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;zones&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;cachePurgeTags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($zone_id, $tags);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;purge_post_cache_tags&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estrategias-de-invalidacion-basada-en-etiquetas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-invalidacion-basada-en-etiquetas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de invalidacion basada en etiquetas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Jerarquía inteligente de etiquetas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;post_{id}&lt;/code&gt;: Contenido individual del post&lt;/li&gt;
&lt;li&gt;&lt;code&gt;category_{slug}&lt;/code&gt;: Páginas de archivo de categoría&lt;/li&gt;
&lt;li&gt;&lt;code&gt;author_{id}&lt;/code&gt;: Páginas de archivo del autor&lt;/li&gt;
&lt;li&gt;&lt;code&gt;taxonomy_{name}_{term}&lt;/code&gt;: Páginas de taxonomía personalizada&lt;/li&gt;
&lt;li&gt;&lt;code&gt;widget_{id}&lt;/code&gt;: Contenido de widgets dinámicos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;global&lt;/code&gt;: Elementos de todo el sitio (encabezado, pie, menús)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La jerarquía de etiquetas debe disenarse cuidadosamente para equilibrar granularidad con complejidad. Demasiadas etiquetas crean sobrecarga administrativa; muy pocas resultan en purgas demasiado amplias que anulan el propósito del sistema.&lt;/p&gt;
&lt;h2 id=&quot;3-object-caching-persistente-redis-8-en-la-empresa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-object-caching-persistente-redis-8-en-la-empresa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Object Caching persistente: Redis 8+ en la empresa&lt;/h2&gt;
&lt;p&gt;La base de datos es el cuello de botella de WordPress. Cada carga de página dispara docenas de consultas SQL para obtener posts, metadatos, opciones y datos de usuario. El object caching almacena los resultados de estas consultas en memoria, eliminando búsquedas redundantes en la base de datos.&lt;/p&gt;
&lt;h3 id=&quot;por-que-redis-8-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-redis-8-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que Redis 8+ en 2026&lt;/h3&gt;
&lt;p&gt;Redis ha evolucionado significativamente y ahora ofrece funcionalidades criticas para WordPress moderno:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteristicas de Redis 8:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RedisJSON&lt;/strong&gt;: Almacenar y consultar objetos JSON complejos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RedisSearch&lt;/strong&gt;: Búsqueda de texto completo dentro de datos cacheados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RedisTimeSeries&lt;/strong&gt;: Rastrear metricas de rendimiento del cache&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invalidacion basada en etiquetas&lt;/strong&gt;: Soporte nativo para cache tags&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opciones de persistencia&lt;/strong&gt;: RDB y AOF para durabilidad de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Redis vs Memcached (Comparación 2026):&lt;/strong&gt;&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Caracteristica&lt;/th&gt;&lt;th&gt;Redis 8+&lt;/th&gt;&lt;th&gt;Memcached&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Tipos de datos&lt;/td&gt;&lt;td&gt;8+ (strings, hashes, listas, sets, sorted sets, JSON, streams)&lt;/td&gt;&lt;td&gt;1 (strings)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Persistencia&lt;/td&gt;&lt;td&gt;RDB + AOF&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Replicacion&lt;/td&gt;&lt;td&gt;Master-slave + Cluster&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Eficiencia de memoria&lt;/td&gt;&lt;td&gt;Mejor con compresion&lt;/td&gt;&lt;td&gt;Buena&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Invalidacion por etiquetas&lt;/td&gt;&lt;td&gt;Nativa&lt;/td&gt;&lt;td&gt;Implementación manual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Capacidades de consulta&lt;/td&gt;&lt;td&gt;RedisSearch&lt;/td&gt;&lt;td&gt;Ninguna&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;implementación-de-object-cache-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-de-object-cache-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación de Object Cache en WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Configuración básica de Redis (wp-config.php):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Habilitar object cache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_CACHE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Configuración Redis&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;127.0.0.1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PORT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;6379&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_DATABASE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_TIMEOUT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_READ_TIMEOUT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Configuración avanzada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_DISABLE_METRICS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_DISABLE_BANNERS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PREFIX&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de micro-cache:&lt;/strong&gt;
Incluso entradas de cache de corta duracion proporcionan beneficios masivos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cachear comentarios recientes por 30 segundos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cached_recent_comments&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($limit &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;recent_comments_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $limit;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $comments &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cache_key);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $comments) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $comments &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_comments&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $limit,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;approve&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cache_key, $comments, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $comments;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La diferencia entre un sitio WordPress sin Redis y uno con Redis correctamente configurado es dramatica. En pruebas reales, hemos observado reducciones de tiempo de respuesta del 60-80% simplemente habilitando Redis Object Cache. Para sitios con muchas consultas a la base de datos (como tiendas &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt; con miles de productos), la mejora puede ser aun más significativa.&lt;/p&gt;
&lt;h2 id=&quot;4-fragment-caching-esi-la-solución-para-contenido-hibrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-fragment-caching-esi-la-solución-para-contenido-hibrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Fragment Caching (ESI): La solución para contenido hibrido&lt;/h2&gt;
&lt;p&gt;Como se cachea una página que dice “Hola, [Nombre del Usuario]” o muestra el total de un carrito de compras? En 2026, usamos &lt;strong&gt;Edge Side Includes (ESI)&lt;/strong&gt; o &lt;strong&gt;Hidratacion del lado del clientes&lt;/strong&gt; para combinar contenido estatico y dinámico.&lt;/p&gt;
&lt;h3 id=&quot;el-desafio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-desafio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El desafio&lt;/h3&gt;
&lt;p&gt;El cache de página completa tradicional rompe la personalización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los saludos al usuario se vuelven estaticos (“Hola, Invitado” para todos)&lt;/li&gt;
&lt;li&gt;Los carritos de compras muestran estados obsoletos o vacios&lt;/li&gt;
&lt;li&gt;Las barras de administrador aparecen para todos los usuarios&lt;/li&gt;
&lt;li&gt;Los precios dinámicos no se actualizan&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;solución-fragment-caching&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-fragment-caching&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución: Fragment Caching&lt;/h3&gt;
&lt;p&gt;La página principal se cachea al 100% como HTML estatico. Los elementos dinámicos son marcadores de posición rellenados en el Edge o via JavaScript:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación ESI:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Contenido cacheado estatico --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Bienvenido a nuestra tienda&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Fragmento dinamico --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic&quot;&gt;esi:include&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/esi/cart-count.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Contenido estatico continua --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Descubra nuestros ultimos productos...&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Saludo personalizado --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic&quot;&gt;esi:include&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/esi/user-greeting.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Hidratacion del lado del clientes (alternativa):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Marcador de posicion estatico --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;cart-count&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; data-dynamic-url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/api/cart-count&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;placeholder&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;--&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DOMContentLoaded&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;[data-dynamic-url]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(el.dataset.dynamicUrl)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; r.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; el.innerHTML &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; html);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La eleccion entre ESI y hidratacion del lado del clientes depende de su arquitectura. ESI es ideal cuando tiene un proxy inverso (Varnish, Nginx) frente a su WordPress, mientras que la hidratacion del lado del clientes funciona en cualquier entorno y es especialmente adecuada para sitios que ya utilizan una arquitectura JavaScript moderna.&lt;/p&gt;
&lt;h2 id=&quot;5-prefetch-especulativo-prediciendo-el-siguiente-clic&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-prefetch-especulativo-prediciendo-el-siguiente-clic&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Prefetch especulativo: Prediciendo el siguiente clic&lt;/h2&gt;
&lt;p&gt;En 2026, el cache no se trata solo de lo que paso, sino de lo que &lt;em&gt;pasara&lt;/em&gt;. Usando la &lt;strong&gt;Speculation Rules API&lt;/strong&gt;, su sitio WordPress puede predecir y precargar contenido antes de que los usuarios hagan clic.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona-el-prefetch-especulativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-el-prefetch-especulativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona el prefetch especulativo&lt;/h3&gt;
&lt;p&gt;El navegador monitorea patrones de comportamiento del usuario:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pasar el cursor sobre un enlace por más de 200ms&lt;/li&gt;
&lt;li&gt;Desplazarse hacia un enlace&lt;/li&gt;
&lt;li&gt;Patrones históricos de clics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando se alcanza un umbral de prediccion, el navegador pre-renderiza la página destino en una pestana oculta en segundo plano. Para el usuario, el siguiente clic se siente instantaneo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;speculationrules&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &quot;prerender&quot;: [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &quot;source&quot;: &quot;list&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &quot;urls&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;/about/&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;/services/&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;/contact/&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &quot;source&quot;: &quot;document&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &quot;where&quot;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;href_matches&quot;: &quot;/blog/*&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &quot;selector_matches&quot;: &quot;a[rel=&apos;prerender&apos;]&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;integración-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Prefetch inteligente basado en contenido:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar reglas de especulacion basadas en la página actual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_speculation_rules&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $related &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_related_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $urls &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }, $related);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($next &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_next_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $urls[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($next&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $rules &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;prerender&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;source&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;list&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;urls&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $urls,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;script type=&quot;speculationrules&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;         json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($rules) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;         &apos;&amp;#x3C;/script&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_speculation_rules&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta técnica es particularmente poderosa en blogs y sitios de contenido donde los patrones de navegación son predecibles. Un lector que llega a un artículo probablemente navegara al siguiente artículo o a un artículo relacionado. Pre-renderizar estas páginas elimina completamente el tiempo de carga percibido.&lt;/p&gt;
&lt;h2 id=&quot;6-arquitectura-stale-while-revalidate-swr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-arquitectura-stale-while-revalidate-swr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Arquitectura Stale-While-Revalidate (SWR)&lt;/h2&gt;
&lt;p&gt;Los usuarios odian los spinners de carga. SWR permite al navegador servir contenido “obsoleto” (ligeramente antiguo) inmediatamente mientras obtiene la versión fresca en segundo plano.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona-swr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-swr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona SWR&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;El usuario solicita una página&lt;/li&gt;
&lt;li&gt;El navegador verifica el cache&lt;/li&gt;
&lt;li&gt;Si existe contenido cacheado (incluso si expiro), se sirve inmediatamente&lt;/li&gt;
&lt;li&gt;En segundo plano, se obtiene contenido fresco del origen&lt;/li&gt;
&lt;li&gt;Se actualiza el cache y opcionalmente se refresca el contenido de la página&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Cabecera Cache-Control:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cache-Control: max-age=60, stale-while-revalidate=300&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El contenido se considera fresco por 60 segundos&lt;/li&gt;
&lt;li&gt;Despues de 60 segundos, sirve contenido obsoleto por hasta 300 segundos mientras revalida&lt;/li&gt;
&lt;li&gt;Despues de 360 segundos totales, requiere contenido fresco&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implementación-swr-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-swr-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación SWR en WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Implementación con Service Worker:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;self.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fetch&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  event.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;respondWith&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    caches.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(event.request).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; fetchPromise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(event.request).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;networkResponse&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        caches.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dynamic&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          cache.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(event.request, networkResponse.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; networkResponse;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; fetchPromise;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Configuración SWR en Cloudflare:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar cabeceras SWR a contenido dinamico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_swr_headers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($headers) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_user_logged_in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $headers[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Cache-Control&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;public, max-age=60, stale-while-revalidate=300&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $headers;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_headers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_swr_headers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SWR es especialmente valioso para sitios de noticias y blogs donde el contenido se actualiza frecuentemente pero los usuarios esperan carga instantanea. La percepcion del usuario es que el sitio siempre es rápido, mientras que en segundo plano el sistema mantiene la frescura del contenido.&lt;/p&gt;
&lt;h2 id=&quot;7-monitoreo-y-depuracion-del-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-monitoreo-y-depuracion-del-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Monitoreo y depuracion del cache&lt;/h2&gt;
&lt;p&gt;Un cache efectivo requiere visibilidad sobre lo que esta sucediendo. En 2026, usamos herramientas de monitoreo sofisticadas para asegurar la efectividad del cache.&lt;/p&gt;
&lt;h3 id=&quot;cabeceras-x-cache-status&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cabeceras-x-cache-status&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cabeceras X-Cache-Status&lt;/h3&gt;
&lt;p&gt;Agregue cabeceras de depuracion para rastrear el comportamiento del cache:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_cache_debug_headers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;X-Cache-Status: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;did_cache_hit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;HIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;MISS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;X-Cache-TTL: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cache_remaining_ttl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;X-Cache-Tags: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_current_page_cache_tags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_cache_debug_headers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;telemetria-de-cache-en-tiempo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#telemetria-de-cache-en-tiempo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Telemetria de cache en tiempo real&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar metricas de cache en Redis TimeSeries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; log_cache_metric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($metric, $value) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $redis &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Redis&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $redis&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;connect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;127.0.0.1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;6379&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $redis&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rawCommand&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;TS.ADD&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;cache:{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$metric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;*&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $value,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;LABELS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;site&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_site_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wordpress&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log_cache_metric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;requests&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;did_cache_hit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log_cache_metric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hits&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log_cache_metric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;misses&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El monitoreo continuo del cache es tan importante como su implementación. Sin visibilidad, es imposible saber si su estrategia de cache esta funcionando correctamente. Recomendamos establecer alertas para cuando la tasa de aciertos del cache cae por debajo del 90%, lo que podria indicar un problema de configuración o un patron de tráfico inesperado.&lt;/p&gt;
&lt;h2 id=&quot;8-errores-comunes-de-cache-y-soluciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-errores-comunes-de-cache-y-soluciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Errores comunes de cache y soluciones&lt;/h2&gt;
&lt;h3 id=&quot;error-1-cache-demasiado-agresivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-1-cache-demasiado-agresivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 1: Cache demasiado agresivo&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Cachear todo conduce a contenido obsoleto y frustracion del usuario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Implementar exclusiones inteligentes de cache:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; should_cache_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_user_logged_in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;checkout&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_search&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;error-2-cache-stampede&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-2-cache-stampede&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 2: Cache Stampede&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Cuando el cache expira, multiples solicitudes golpean el origen simultaneamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Implementar cache locking y expiracion temprana:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cached_data_with_early_refresh&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($key, $callback, $ttl &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($key);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $refresh_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_refreshing&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;expires&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($refresh_key)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($refresh_key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_schedule_single_event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;refresh_cache_async&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $key,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callback,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;ttl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $ttl,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callback();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;error-3-ignorar-variaciones-móviles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-3-ignorar-variaciones-móviles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 3: Ignorar variaciones móviles&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Los usuarios de escritorio y móvil reciben la misma versión cacheada, rompiendo el diseño responsivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Variar el cache por tipo de dispositivo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_device_cache_key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($base_key) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $device &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_is_mobile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;mobile&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;desktop&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$base_key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$device&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_device_vary_header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($headers) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $headers[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Vary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;User-Agent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $headers;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;9-conclusiones-la-inteligencia-de-la-velocidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusiones-la-inteligencia-de-la-velocidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusiones: La inteligencia de la velocidad&lt;/h2&gt;
&lt;p&gt;El cache ya no se trata de ahorrar espacio, sino de ahorrar tiempo. En 2026, una estrategia de cache inteligente es la diferencia entre un sitio WordPress de nivel empresarial y un competidor rezagado.&lt;/p&gt;
&lt;p&gt;Al dominar &lt;strong&gt;Edge Caching, Cache Tags, Fragment Caching y patrones SWR&lt;/strong&gt;, transforma su sitio WordPress en un motor distribuido de alto rendimiento capaz de manejar millones de solicitudes con tiempos de respuesta inferiores a 50ms.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puntos clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Implemente cache edge de triple capa para rendimiento global&lt;/li&gt;
&lt;li&gt;Use cache tagging para invalidacion quirurgica&lt;/li&gt;
&lt;li&gt;Despliegue Redis 8+ para object caching empresarial&lt;/li&gt;
&lt;li&gt;Combine contenido estatico y dinámico con fragment caching&lt;/li&gt;
&lt;li&gt;Adopte SWR para experiencias de usuario instantaneas&lt;/li&gt;
&lt;li&gt;Monitoree la salud del cache continuamente&lt;/li&gt;
&lt;li&gt;Pruebe exhaustivamente: los bugs cacheados son más dificiles de encontrar&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Su cache esta trabajando a su favor o en su contra?&lt;/strong&gt; Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para auditar y mejorar su arquitectura de cache hoy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Estrategias completas de optimización de rendimiento&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Estrategias de cache específicas para comercio electronico&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación de arquitecturas de alto rendimiento&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad sin comprometer rendimiento&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>performance</category><category>development</category><category domain="tag">wordpress-caching</category><category domain="tag">edge-caching</category><category domain="tag">redis-object-cache</category><category domain="tag">cache-tagging</category><category domain="tag">performance-architecture</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>LLMO: La guía técnica definitiva para optimizar para bots de IA</title><link>https://wppoland.com/es/llmo-optimization-bot-guide/</link><guid isPermaLink="true">https://wppoland.com/es/llmo-optimization-bot-guide/</guid><description>La específicacion técnica completa para la Optimización de Modelos de Lenguaje Grande (LLMO). Inmersion profunda en JSON-LD, embeddings vectoriales y arquitectura de recuperacion.</description><pubDate>Mon, 01 Sep 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La Optimización de Modelos de Lenguaje Grande (LLMO) se ha convertido en una disciplina esencial para cualquier organización que quiera mantener su visibilidad en la web moderna. A medida que los asistentes de IA como ChatGPT, Gemini, Claude y Perplexity se convierten en fuentes primarias de información para millones de usuarios, la capacidad de tu contenido para ser descubierto, interpretado y citado correctamente por estos sistemas determina una porcion creciente de tu visibilidad total.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;que-es-llmo-y-por-que-importa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-llmo-y-por-que-importa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es LLMO y por que importa&lt;/h2&gt;
&lt;p&gt;LLMO es la práctica de estructurar y validar tu contenido para que los agentes de IA puedan descubrirlo de forma fiable, recuperarlo con precision y citarlo correctamente. Es la evolucion natural del SEO: mientras el SEO se dirige a clasificaciónes en buscadores, LLMO se dirige a la inclusion en asistentes de IA, motores de respuestas y agentes autonomos como ChatGPT, Gemini y Perplexity.&lt;/p&gt;
&lt;h3 id=&quot;por-que-llmo-importa-ahora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-llmo-importa-ahora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que LLMO importa ahora&lt;/h3&gt;
&lt;p&gt;Estamos en medio de un giro en como se consume la información. Las interfaces de IA cada vez más sintetizan respuestas directamente, a menudo saltandose la lista tradicional de enlaces. Si tu contenido no esta “listo para IA”, efectivamente desaparece de esta nueva capa de la web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los beneficios centrales de LLMO:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Visibilidad de citaciones&lt;/strong&gt;: Los modelos de IA priorizan pasajes bien estructurados. Si tu contenido es ambiguo, el modelo puede citar a un competidor cuyos datos son más fáciles de parsear.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prevencion de alucinaciones&lt;/strong&gt;: Al proporcionar hechos limpios y estructurados, reduces el riesgo de que un modelo “rellene los vacios” con información incorrecta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad duradera&lt;/strong&gt;: La inclusion temprana en indices de generación aumentada por recuperacion (RAG) construye una presencia semanticamente fuerte que se compone con el tiempo.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;como-los-llms-usan-tu-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-los-llms-usan-tu-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como los LLMs usan tu contenido&lt;/h2&gt;
&lt;p&gt;Los sistemas de IA adquieren datos a través del rastreo web (GPTBot, ClaudeBot), datasets publicos (Common Crawl) y directamente via APIs. Estas páginas se “dividen en fragmentos” y se convierten en embeddings vectoriales. En el momento de la consulta, el sistema recupera el pasaje más relevante y sintetiza una respuesta.&lt;/p&gt;
&lt;h3 id=&quot;los-pilares-principales-de-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-pilares-principales-de-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los pilares principales de LLMO&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claridad e intencion&lt;/strong&gt;: Contenido enfocado en tareas que responde preguntas específicas directamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos estructurados&lt;/strong&gt;: Uso profundo de JSON-LD (schema.org) con identificadores estables (&lt;code&gt;@id&lt;/code&gt;) y enlaces de relación (&lt;code&gt;sameAs&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fundamentos técnicos&lt;/strong&gt;: Páginas rápidas y rastreables con HTML semántico limpio (&lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;section&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;table&gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confianza y procedencia&lt;/strong&gt;: Autoria clara, detalles de organización verificables y licencias de contenido explicitas.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;implementación-técnica-de-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-técnica-de-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación técnica de LLMO&lt;/h2&gt;
&lt;h3 id=&quot;arquitectura-de-datos-estructurados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-de-datos-estructurados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura de datos estructurados&lt;/h3&gt;
&lt;p&gt;El JSON-LD es el formato preferido por los LLMs para entender el contexto de tu contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;TechArticle&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@id&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/es/llmo-optimization-bot-guide/#article&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;headline&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;LLMO: Guia técnica definitiva&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;author&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Person&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Mariusz Szatkowski&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@id&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/#author&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;datePublished&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2025-09-01&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;dateModified&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2025-12-23&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;mainEntityOfPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WebPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@id&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/es/llmo-optimization-bot-guide/&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los identificadores &lt;code&gt;@id&lt;/code&gt; son cruciales. Permiten a los LLMs vincular entidades a través de multiples páginas y fuentes, construyendo un grafo de conocimiento más coherente sobre tu contenido.&lt;/p&gt;
&lt;h3 id=&quot;estructura-de-contenido-para-fragmentacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-de-contenido-para-fragmentacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura de contenido para fragmentacion&lt;/h3&gt;
&lt;p&gt;Los LLMs procesan tu contenido en fragmentos de 300-800 tokens. La forma en que estructuras tu contenido determina la calidad de cada fragmento:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores prácticas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada sección H2/H3 debe ser auto-contenida y responder una pregunta específica&lt;/li&gt;
&lt;li&gt;Las primeras 1-2 oraciones de cada sección deben contener la respuesta directa&lt;/li&gt;
&lt;li&gt;Usa listas con vinetas para datos clave y especificaciones&lt;/li&gt;
&lt;li&gt;Las tablas son altamente efectivas para comparaciones&lt;/li&gt;
&lt;li&gt;Evita parrafos de más de 150 palabras sin estructura&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;html-semántico-para-llms&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#html-semántico-para-llms&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;HTML semántico para LLMs&lt;/h3&gt;
&lt;p&gt;El HTML semántico ayuda a los LLMs a entender la estructura lógica de tu contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Título del artículo&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2025-09-01&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;1 de septiembre, 2025&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Seccion principal&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Contenido con respuesta directa primero...&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;table&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;caption&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Comparacion de metricas&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;caption&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;      &amp;#x3C;!-- datos de tabla --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;table&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;section&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;rastreabilidad-para-bots-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rastreabilidad-para-bots-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rastreabilidad para bots de IA&lt;/h3&gt;
&lt;p&gt;Configura tu &lt;code&gt;robots.txt&lt;/code&gt; para permitir el acceso de bots de IA y asegurate de que tu sitio usa renderizado del lado del servidor (SSR) o generación de sitio estatico para que todo el contenido sea visible en el HTML inicial.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estrategias-avanzadas-de-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de LLMO&lt;/h2&gt;
&lt;h3 id=&quot;enlace-de-entidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enlace-de-entidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enlace de entidades&lt;/h3&gt;
&lt;p&gt;Conecta tu contenido con entidades conocidas usando Wikidata y Wikipedia:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Thing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WordPress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;sameAs&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;https://www.wikidata.org/wiki/Q13166&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;https://en.wikipedia.org/wiki/WordPress&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto ayuda a los LLMs a desambiguar tu contenido y conectarlo con su base de conocimiento existente.&lt;/p&gt;
&lt;h3 id=&quot;secciones-de-hechos-canonicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#secciones-de-hechos-canonicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Secciones de hechos canonicos&lt;/h3&gt;
&lt;p&gt;Crea secciones con declaraciones factuales claras y verificables que los LLMs puedan extraer y citar fácilmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Definiciones precisas&lt;/strong&gt;: “LLMO es la práctica de optimizar contenido para descubrimiento y recuperacion precisa por Modelos de Lenguaje Grande y agentes de IA.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos cuantificables&lt;/strong&gt;: “WordPress impulsa el 43% de todos los sitios web en internet.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comparaciones&lt;/strong&gt;: Tablas con metricas claras y fuentes citadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;procedencia-y-confianza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#procedencia-y-confianza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Procedencia y confianza&lt;/h3&gt;
&lt;p&gt;Los LLMs evaluan la confiabilidad del contenido basandose en señales de procedencia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autor identificable&lt;/strong&gt;: Nombre real, credenciales, enlaces a perfiles profesionales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organización verificable&lt;/strong&gt;: Datos de empresa con schema Organization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fechas de publicación y actualización&lt;/strong&gt;: Marcas de tiempo visibles y en schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fuentes citadas&lt;/strong&gt;: Enlaces a fuentes primarias y autorizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Licencia de contenido&lt;/strong&gt;: Específica claramente como puede usarse tu contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;requisitos-técnicos-y-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-técnicos-y-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos técnicos y de seguridad&lt;/h2&gt;
&lt;h3 id=&quot;renderizado-del-lado-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#renderizado-del-lado-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Renderizado del lado del servidor&lt;/h3&gt;
&lt;p&gt;Asegurate de que tu sitio sirve contenido completo en el HTML inicial. Los LLMs no ejecutan JavaScript del lado del clientes, por lo que el contenido renderizado solo en el navegador es invisible para ellos.&lt;/p&gt;
&lt;h3 id=&quot;protección-contra-inyeccion-de-prompts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protección-contra-inyeccion-de-prompts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protección contra inyeccion de prompts&lt;/h3&gt;
&lt;p&gt;Separa datos no confiables de usuarios de tus instrucciones de sistema principales. Usa licencias de contenido claras (ej., &lt;code&gt;copyrightHolder&lt;/code&gt;) para senalar como tus datos pueden ser legalmente reutilizados en contextos de IA.&lt;/p&gt;
&lt;h3 id=&quot;monitoreo-de-bots-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-de-bots-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo de bots de IA&lt;/h3&gt;
&lt;p&gt;Monitorea los logs de tu servidor para rastrear la actividad de bots de IA:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Verificar acceso de bots en logs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GPTBot, ClaudeBot, PerplexityBot, Google-Extended&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;LLMO se trata de encontrarse a medio camino con los sistemas de IA. Requiere lenguaje preciso, una estructura semántica fuerte y transparencia técnica. Al implementar estas prácticas ahora, aseguras que tu marca este representada de forma precisa y autoritativa en las respuestas del futuro.&lt;/p&gt;
&lt;p&gt;La buena noticia: las mejores prácticas de LLMO también mejoran tu SEO tradicional. No es un compromiso - es una estrategia que beneficia ambos canales de visibilidad.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; para implementar LLMO profesionalmente en tu sitio WordPress.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">guide</category><category domain="tag">wordpress</category><category domain="tag">ai</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Estrategias de integración para CMS empresarial en 2026</title><link>https://wppoland.com/es/enterprise-cms-integration-strategies-2026/</link><guid isPermaLink="true">https://wppoland.com/es/enterprise-cms-integration-strategies-2026/</guid><description>Un CMS corporativo no puede vivir aislado. Exploramos estrategias avanzadas para integrar WordPress con ERP, CRM y bases de datos internas en 2026.</description><pubDate>Sun, 31 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, un CMS ya no es solo un lugar para escribir texto; es la &lt;strong&gt;capa de presentacion&lt;/strong&gt; de una maquina masiva de datos corporativos. Para una organización grande, el valor del CMS esta directamente ligado a lo bien que “habla” con otros sistemas como &lt;strong&gt;Salesforce (CRM)&lt;/strong&gt;, &lt;strong&gt;SAP (ERP)&lt;/strong&gt; y &lt;strong&gt;bases de datos internas de RRHH&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A continuacion presentamos las estrategias criticas de integración para un CMS empresarial, con enfoque en WordPress como plataforma central de conectividad.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-conectividad-api-first&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-conectividad-api-first&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Conectividad API-First&lt;/h2&gt;
&lt;p&gt;Todo debe tener un endpoint. En 2026, los sitios web corporativos son frecuentemente “consumidores” de APIs internas que agregan datos de multiples sistemas en una experiencia unificada para el usuario.&lt;/p&gt;
&lt;h3 id=&quot;rest-vs-graphql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rest-vs-graphql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;REST vs. GraphQL&lt;/h3&gt;
&lt;p&gt;Mientras REST es el veterano confiable, &lt;strong&gt;GraphQL&lt;/strong&gt; es el ganador de 2026 para integraciones empresariales complejas. Permite al CMS solicitar exactamente los datos que necesita (ej., “solo el precio actual y stock del Producto X”) sin sobre-recibir información innecesaria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparativa para integraciones:&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Aspecto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;REST API&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;GraphQL&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Consultas complejas&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Multiples requests&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Una sola consulta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Over-fetching&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Frecuente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Inexistente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Documentación&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual (OpenAPI/Swagger)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Auto-generada (introspection)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cache&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fácil (URL-based)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Requiere persisted queries&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ideal para&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Integraciones simples&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dashboards corporativos complejos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;arquitectura-desacoplada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-desacoplada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura desacoplada&lt;/h3&gt;
&lt;p&gt;Al usar WordPress como un CMS headless, puede extraer datos de cinco sistemas diferentes y renderizarlos en un frontend unificado React o &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Astro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de arquitectura desacoplada:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Frontend Astro 5]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ↓ GraphQL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[WordPress API] ← datos de productos ← [SAP ERP]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ↓ REST        ← datos de clientes ← [Salesforce CRM]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ↓ Webhook     ← datos de RRHH ← [Workday]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ↓ GraphQL     ← datos de soporte ← [Zendesk]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-la-sincronizacion-crm-salesforce-hubspot-y-más-alla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-la-sincronizacion-crm-salesforce-hubspot-y-más-alla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. La sincronizacion CRM: Salesforce, HubSpot y más alla&lt;/h2&gt;
&lt;p&gt;La brecha entre un visitante del sitio web y un lead de ventas debe ser invisible. Cada interacción del usuario en el sitio web debe enriquecer el perfil del clientes en el CRM sin friccion ni retraso.&lt;/p&gt;
&lt;h3 id=&quot;flujos-basados-en-eventos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujos-basados-en-eventos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujos basados en eventos&lt;/h3&gt;
&lt;p&gt;Cuando un usuario actualiza su perfil en el sitio web, un &lt;strong&gt;Webhook&lt;/strong&gt; inmediatamente dispara una actualización en Salesforce. Esta sincronizacion en tiempo real asegura que el equipo de ventas siempre tenga la información más actualizada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flujo de sincronizacion CRM:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Sincronizar datos del formulario con Salesforce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wpforms_process_complete&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fields, $entry, $form_data) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $crm_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;FirstName&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;first_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;LastName&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;last_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Company&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;company&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;LeadSource&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Website - &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $fields[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;message&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Enviar asincrono al CRM&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_schedule_single_event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;sync_to_salesforce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [$crm_data]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;personalización-dinámica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#personalización-dinámica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Personalización dinámica&lt;/h3&gt;
&lt;p&gt;Si un visitante es identificado como un “Lead de Alto Valor” en el CRM, el CMS puede cambiar dinamicamente el contenido de la página principal para mostrar soluciones empresariales personalizadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Niveles de personalización:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visitante anonimo&lt;/strong&gt;: Contenido generico con CTAs de captura de leads&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lead identificado&lt;/strong&gt;: Contenido adaptado a su industria y tamaño de empresa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cliente existente&lt;/strong&gt;: Portal personalizado con información de cuenta y soporte&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lead caliente&lt;/strong&gt;: Ofertas especiales y acceso directo a demostracion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;scoring-de-leads-basado-en-comportamiento-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#scoring-de-leads-basado-en-comportamiento-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Scoring de leads basado en comportamiento web&lt;/h3&gt;
&lt;p&gt;WordPress rastrea el comportamiento del usuario y envia señales al CRM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Páginas visitadas y tiempo de permanencia&lt;/li&gt;
&lt;li&gt;Descargas de whitepapers o casos de estudio&lt;/li&gt;
&lt;li&gt;Visualización de páginas de precios&lt;/li&gt;
&lt;li&gt;Interacción con calculadoras de ROI&lt;/li&gt;
&lt;li&gt;Frecuencia de visitas en los últimos 30 dias&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-conectando-al-mundo-antiguo-erps-legacy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-conectando-al-mundo-antiguo-erps-legacy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Conectando al “mundo antiguo”: ERPs legacy&lt;/h2&gt;
&lt;p&gt;Las grandes empresas frecuentemente operan con software legacy (SAP, Oracle) que no “habla” web moderna. La integración con estos sistemas requiere una capa intermedia que traduzca entre mundos tecnológicos diferentes.&lt;/p&gt;
&lt;h3 id=&quot;el-puente-middleware&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-puente-middleware&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El puente middleware&lt;/h3&gt;
&lt;p&gt;En lugar de conectar WordPress directamente a un ERP de 20 años, construimos un &lt;strong&gt;Middleware&lt;/strong&gt; moderno (usando Node.js o Go). El middleware traduce los datos legacy en JSON limpio que el CMS puede entender.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura de middleware:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[WordPress] ←→ [Middleware Node.js] ←→ [SAP RFC/BAPI]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                     ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;               [Cola de mensajes]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                     ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;               [Logging y monitoreo]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Responsabilidades del middleware:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformación de formatos de datos (XML/SOAP → JSON)&lt;/li&gt;
&lt;li&gt;Validación y sanitizacion de datos&lt;/li&gt;
&lt;li&gt;Manejo de errores y reintentos automáticos&lt;/li&gt;
&lt;li&gt;Logging para auditoria y depuracion&lt;/li&gt;
&lt;li&gt;Rate limiting para proteger sistemas legacy&lt;/li&gt;
&lt;li&gt;Cache de datos frecuentemente solicitados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;bases-de-datos-de-staging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bases-de-datos-de-staging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bases de datos de staging&lt;/h3&gt;
&lt;p&gt;Para proteger el rendimiento del sitio en producción, los datos frecuentemente se sincronizan a una base de datos “intermedia” en lugar de consultar el ERP en tiempo real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de staging:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El ERP exporta datos a una base de datos de staging cada hora&lt;/li&gt;
&lt;li&gt;WordPress consulta la base de datos de staging (rápida, optimizada)&lt;/li&gt;
&lt;li&gt;Los cambios del usuario en WordPress se encolan para sincronizacion al ERP&lt;/li&gt;
&lt;li&gt;Un worker asincrono procesa la cola y actualiza el ERP&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;tipos-de-integración-erp-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-integración-erp-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de integración ERP comunes&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Sistema&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Datos sincronizados&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Frecuencia&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Dirección&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;SAP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Productos, precios, stock&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada 15 min&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bidireccional&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Oracle&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Clientes, facturas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada hora&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;ERP → WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Navision&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pedidos, envios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Tiempo real&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WordPress → ERP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Workday&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Empleados, departamentos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Diaria&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Workday → WordPress&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-búsqueda-federada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-búsqueda-federada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Búsqueda federada&lt;/h2&gt;
&lt;p&gt;Los ecosistemas corporativos frecuentemente tienen contenido distribuido a través de multiples subdominios, centros de ayuda (Zendesk) y almacenes de documentos (SharePoint). Los usuarios esperan encontrar información sin importar donde este almacenada.&lt;/p&gt;
&lt;h3 id=&quot;indexacion-unificada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indexacion-unificada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indexacion unificada&lt;/h3&gt;
&lt;p&gt;Usando &lt;strong&gt;Elasticsearch&lt;/strong&gt;, puede indexar multiples fuentes de datos en una experiencia de búsqueda única. Un usuario en el sitio principal puede buscar y encontrar un artículo de soporte de Zendesk o un PDF del repositorio corporativo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura de búsqueda federada:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Barra de búsqueda unificada]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Elasticsearch Cluster]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ← [Indice WordPress] (páginas, posts, productos)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ← [Indice Zendesk] (tickets, artículos de KB)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ← [Indice SharePoint] (documentos, presentaciones)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ← [Indice Confluence] (documentación técnica)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Resultados unificados con facetas por fuente]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;relevancia-inteligente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#relevancia-inteligente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Relevancia inteligente&lt;/h3&gt;
&lt;p&gt;La búsqueda en 2026 no se limita a coincidencia de palabras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Búsqueda semántica&lt;/strong&gt;: Entiende la intencion detras de la consulta&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalización&lt;/strong&gt;: Los resultados se adaptan al rol y departamento del usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aprendizaje automático&lt;/strong&gt;: La relevancia mejora basandose en el comportamiento de búsqueda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facetas contextuales&lt;/strong&gt;: Filtros dinámicos basados en el tipo de contenido encontrado&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-checklist-de-gobernanza-de-integraciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-checklist-de-gobernanza-de-integraciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Checklist de gobernanza de integraciones&lt;/h2&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Estrategia&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Beneficio&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Dificultad de implementación&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;IdP (SSO)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Seguridad y facilidad de uso&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Webhooks en tiempo real&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sincronizacion instantanea de datos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fácil&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Capa Middleware&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Soporte legacy y seguridad&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Service Mesh&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Microservicios escalables&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;API Gateway&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Control centralizado de acceso&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Message Queue&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Procesamiento asincrono resiliente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;principios-de-gobernanza-de-integraciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#principios-de-gobernanza-de-integraciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Principios de gobernanza de integraciones&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Documentación obligatoria&lt;/strong&gt;: Cada integración debe tener documentación completa de API, flujos de datos y procedimientos de recuperacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo continuo&lt;/strong&gt;: Dashboards que muestran el estado de salud de cada integración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alertas proactivas&lt;/strong&gt;: Notificaciones cuando una integración falla o degrada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas automatizadas&lt;/strong&gt;: Tests de integración que se ejecutan en cada despliegue&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan de rollback&lt;/strong&gt;: Procedimiento documentado para revertir cambios en caso de fallo&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-el-riesgo-del-plugin-bloat-en-integraciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-el-riesgo-del-plugin-bloat-en-integraciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. El riesgo del “plugin bloat” en integraciones&lt;/h2&gt;
&lt;p&gt;Un error comun es usar 50 plugins de “Integración” diferentes para 50 servicios diferentes. Para empresas, este enfoque es insostenible y peligroso.&lt;/p&gt;
&lt;h3 id=&quot;problemás-del-plugin-bloat&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-del-plugin-bloat&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás del plugin bloat&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Cada plugin es una superficie de ataque adicional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Cada plugin agrega carga al servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantenibilidad&lt;/strong&gt;: Dependencia de 50 proveedores diferentes de plugins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflictos&lt;/strong&gt;: Los plugins pueden interferir entre si de formás impredecibles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones&lt;/strong&gt;: Mantener 50 plugins actualizados es una pesadilla logistica&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-solución-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución empresarial&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preferir puentes personalizados&lt;/strong&gt;: Son más fáciles de auditar para seguridad y se adaptan exactamente a sus necesidades. Un bridge personalizado bien escrito reemplaza 5-10 plugins genericos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usar una cola de tareas&lt;/strong&gt;: Las integraciones no deberian ralentizar las cargas de página. Use herramientas como &lt;strong&gt;Action Scheduler&lt;/strong&gt; o &lt;strong&gt;Redis&lt;/strong&gt; para ejecutar tareas de sincronizacion en segundo plano.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Middleware centralizado&lt;/strong&gt;: Un único punto de integración que gestiona todas las conexiónes externas, con logging centralizado, manejo de errores consistente y monitoreo unificado.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-seguridad-en-integraciones-empresariales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-seguridad-en-integraciones-empresariales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Seguridad en integraciones empresariales&lt;/h2&gt;
&lt;h3 id=&quot;autenticación-y-autorización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-y-autorización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación y autorización&lt;/h3&gt;
&lt;p&gt;Cada integración debe usar el método de autenticación más apropiado:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Método&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Uso ideal&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Seguridad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;OAuth 2.0&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;CRM, servicios en la nube&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;JWT (tokens firmados)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;APIs internas, microservicios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;API Keys&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Servicios simples, webhooks&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;mTLS&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Comúnicación servidor a servidor&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alta&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;cifrado-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cifrado-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cifrado de datos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;En transito&lt;/strong&gt;: TLS 1.3 obligatorio para todas las comunicaciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;En reposo&lt;/strong&gt;: Cifrado AES-256 para datos sensibles almacenados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claves&lt;/strong&gt;: Gestión centralizada de claves con rotacion automática&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos PII&lt;/strong&gt;: Enmascaramiento automático en logs y ambientes no productivos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;auditoria-de-integraciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-de-integraciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria de integraciones&lt;/h3&gt;
&lt;p&gt;Cada flujo de datos entre sistemas debe ser rastreable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que datos se transfirieron&lt;/li&gt;
&lt;li&gt;Cuando ocurrio la transferencia&lt;/li&gt;
&lt;li&gt;Quien o que sistema la inicio&lt;/li&gt;
&lt;li&gt;Si fue exitosa o fallo&lt;/li&gt;
&lt;li&gt;Que acciones correctivas se tomaron en caso de fallo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-casos-de-estudio-de-integración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-casos-de-estudio-de-integración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Casos de estudio de integración&lt;/h2&gt;
&lt;h3 id=&quot;retail-omnicanal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#retail-omnicanal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Retail omnicanal&lt;/h3&gt;
&lt;p&gt;Un retailer europeo integro WordPress con 7 sistemas diferentes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SAP para inventario y precios&lt;/li&gt;
&lt;li&gt;Salesforce para gestión de clientes&lt;/li&gt;
&lt;li&gt;Shopify para e-commerce (migrando a &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Zendesk para soporte al clientes&lt;/li&gt;
&lt;li&gt;Mailchimp para email marketing&lt;/li&gt;
&lt;li&gt;Google Analytics 4 para analytics&lt;/li&gt;
&lt;li&gt;Sistema de fidelizacion propietario&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: Vista única del clientes a través de todos los canales, con personalización en tiempo real basada en historial de compras tanto online como en tienda.&lt;/p&gt;
&lt;h3 id=&quot;fintech-b2b&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fintech-b2b&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fintech B2B&lt;/h3&gt;
&lt;p&gt;Una empresa fintech integro WordPress como portal de clientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Datos financieros desde sistema core bancario&lt;/li&gt;
&lt;li&gt;KYC/AML verificación automática&lt;/li&gt;
&lt;li&gt;Generación de documentos regulatorios&lt;/li&gt;
&lt;li&gt;Dashboard de inversiones en tiempo real&lt;/li&gt;
&lt;li&gt;Notificaciones de compliance automáticas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: Tiempo de onboarding de clientes reducido de 2 semanas a 2 dias.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;La integración es la marca&lt;/strong&gt;. Si su clientes ve un precio en su CMS y otro en su factura (ERP), la confianza se rompe. Una estrategia exitosa de CMS empresarial prioriza flujos de datos limpios, seguros y rápidos entre cada rama del stack tecnológico corporativo.&lt;/p&gt;
&lt;p&gt;WordPress, con su API madura y su ecosistema masivo, sigue siendo la plataforma más “integrable” del mercado. Su naturaleza de código abierto permite personalizaciónes profundas que las plataformas SaaS cerradas simplemente no pueden ofrecer. Para empresas que buscan un CMS que sea el hub central de su ecosistema digital, WordPress en 2026 es la eleccion obvia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesita conectar su CMS con el resto de su ecosistema tecnológico? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para disenar su estrategia de integración empresarial.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Integraciones empresariales personalizadas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Integraciones de comercio electronico&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento de integraciones&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad en flujos de datos&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Monitoreo continuo de integraciones&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>business</category><category domain="tag">integration</category><category domain="tag">api</category><category domain="tag">graphql</category><category domain="tag">crm</category><category domain="tag">erp</category><enclosure url="https://wppoland.com/images/og/software-developers-networking.jpg" type="image/jpeg"/></item><item><title>Monitoreo de rendimiento para WordPress empresarial en 2026</title><link>https://wppoland.com/es/performance-monitoring-enterprise-wordpress-2026-comprehensive-guide/</link><guid isPermaLink="true">https://wppoland.com/es/performance-monitoring-enterprise-wordpress-2026-comprehensive-guide/</guid><description>No puedes gestionar lo que no mides. Esta guía exhaustiva de más de 2500 palabras explora las estrategias de monitoreo de rendimiento más avanzadas para WordPress en 2026.</description><pubDate>Wed, 27 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, el monitoreo de rendimiento no es solo un elemento de “checklist” técnico. Para una empresa global, es una &lt;strong&gt;poliza de seguro empresarial&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Una desaceleracion de 500ms en su proceso de checkout o un pico en el Interaction to Next Paint (INP) en sus sitios regionales no es solo un número; es ingreso perdido, autoridad de marca danada y una caida en los rankings de búsqueda. Dado que las arquitecturas WordPress modernas son tan distribuidas (Cloud, Edge, Headless), el monitoreo ha pasado de “verificar si el servidor esta activo” a “observar todo el viaje del usuario en tiempo real”.&lt;/p&gt;
&lt;p&gt;En esta guía exhaustiva de más de 2500 palabras, definimos el stack de monitoreo de rendimiento para la empresa en 2026.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-los-dos-pilares-del-monitoreo-rum-vs-sintetico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-los-dos-pilares-del-monitoreo-rum-vs-sintetico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Los dos pilares del monitoreo: RUM vs. sintetico&lt;/h2&gt;
&lt;p&gt;Para tener una vision completa de su ecosistema, debe monitorear desde dos perspectivas complementarias. Cada una ofrece información que la otra no puede proporcionar, y juntas forman una imagen completa del rendimiento de su sitio.&lt;/p&gt;
&lt;h3 id=&quot;real-user-monitoring-rum&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#real-user-monitoring-rum&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Real User Monitoring (RUM)&lt;/h3&gt;
&lt;p&gt;RUM captura las experiencias de cada visitante individual. No es una simulacion; son datos reales de personas reales usando su sitio en condiciones reales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fragmentacion de dispositivos&lt;/strong&gt;: Monitorear como rinde su sitio en un iPhone de última generación versus un Android de gama media en una zona 4G en Espana versus un visitante con fibra optica en Alemania. Las diferencias pueden ser dramaticas, y sin RUM, estas disparidades permanecen invisibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rastreo de interactividad&lt;/strong&gt;: Capturar cada instancia de click-to-paint (INP) para encontrar los elementos UI específicos que se sienten “pesados” para los usuarios. En 2026, INP ha reemplazado a FID como la metrica de interactividad principal, y su impacto en los rankings de búsqueda es directo y medible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento Edge&lt;/strong&gt;: Ver la latencia real entre su usuario y la ubicacion Edge más cercana. Esta metrica revela si su estrategia de CDN esta funcionando como se espera o si hay regiones geograficas desatendidas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Segmentacion avanzada de datos RUM:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Por tipo de dispositivo (móvil, tablet, escritorio)&lt;/li&gt;
&lt;li&gt;Por velocidad de conexión (4G, 5G, WiFi, fibra)&lt;/li&gt;
&lt;li&gt;Por region geografica (pais, ciudad, ISP)&lt;/li&gt;
&lt;li&gt;Por página o tipo de contenido&lt;/li&gt;
&lt;li&gt;Por hora del dia y dia de la semana&lt;/li&gt;
&lt;li&gt;Por flujo de usuario (primera visita vs. recurrente)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;monitoreo-sintetico-la-linea-base&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-sintetico-la-linea-base&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo sintetico (la linea base)&lt;/h3&gt;
&lt;p&gt;Las pruebas sinteticas utilizan “robots” para probar su sitio bajo condiciones controladas. Mientras RUM muestra lo que esta pasando, el monitoreo sintetico verifica que su base sea solida.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integración CI/CD&lt;/strong&gt;: Ejecutar automáticamente una prueba equivalente a Lighthouse cada vez que un desarrollador envia un cambio a su tema WordPress. Si el cambio degrada el rendimiento, el despliegue se bloquea automáticamente antes de llegar a producción.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verificación de uptime&lt;/strong&gt;: Probar sus rutas de conversión más criticas (ej., “Agregar al carrito” o “Enviar formulario de contacto”) cada 60 segundos desde 20 ubicaciones globales. Esta vigilancia constante asegura que cualquier degradacion se detecte en segundos, no en horas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pruebas de regresion visual&lt;/strong&gt;: Capturar screenshots automáticos despues de cada despliegue y compararlos pixel por pixel con la versión anterior. Si un cambio CSS accidental rompe el layout en móvil, el sistema alerta inmediatamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Configuración de pruebas sinteticas recomendada:&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Tipo de prueba&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Frecuencia&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ubicaciones&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Alerta&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Uptime básico&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30 segundos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;20 globales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Inmediata&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Lighthouse completo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada despliegue&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5 principales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bloqueo de merge&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Flujo de conversión&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5 minutos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10 mercados clave&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 2 minutos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Regresion visual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cada despliegue&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3 viewports&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bloqueo de merge&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-observabilidad-del-lado-del-servidor-apm-application-performance-monitoring&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-observabilidad-del-lado-del-servidor-apm-application-performance-monitoring&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Observabilidad del lado del servidor: APM (Application Performance Monitoring)&lt;/h2&gt;
&lt;p&gt;Monitorear el navegador es solo la mitad de la batalla. En 2026, miramos “bajo el capo” de WordPress para entender que esta sucediendo en el servidor.&lt;/p&gt;
&lt;h3 id=&quot;perfilado-de-ejecucion-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#perfilado-de-ejecucion-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Perfilado de ejecucion PHP&lt;/h3&gt;
&lt;p&gt;Identificar que plugin o función específica esta consumiendo ciclos de CPU. Es una consulta de base de datos legacy? Una llamada a API externa lenta? Un loop ineficiente en un plugin de terceros?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas de perfilado PHP en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Xdebug Profiler&lt;/strong&gt;: Análisis detallado de tiempo de ejecucion por función&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blackfire.io&lt;/strong&gt;: Perfilado continuo de rendimiento en producción&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Relic APM&lt;/strong&gt;: Trazado distribuido que conecta solicitudes del navegador con operaciones del servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query Monitor&lt;/strong&gt;: Plugin WordPress que muestra consultas SQL, hooks ejecutados y uso de memoria en tiempo real&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;telemetria-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#telemetria-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Telemetria de base de datos&lt;/h3&gt;
&lt;p&gt;Monitorear los logs de consultas lentas en tiempo real para encontrar cuellos de botella en &lt;code&gt;wp_postmeta&lt;/code&gt; o &lt;code&gt;wp_options&lt;/code&gt;. Las bases de datos son el talon de Aquiles de WordPress, y sin visibilidad sobre las consultas, los problemas de rendimiento permanecen ocultos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Metricas criticas de base de datos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo promedio de consulta SQL (objetivo: &amp;#x3C; 10ms)&lt;/li&gt;
&lt;li&gt;Número de consultas por carga de página (objetivo: &amp;#x3C; 50)&lt;/li&gt;
&lt;li&gt;Porcentaje de consultas que utilizan indices (objetivo: &gt; 99%)&lt;/li&gt;
&lt;li&gt;Tamaño de la tabla wp_options y filas con autoload (objetivo: &amp;#x3C; 1MB en autoload)&lt;/li&gt;
&lt;li&gt;Conexiones concurrentes a la base de datos (monitorear picos)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;análisis-de-object-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-de-object-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis de Object Cache&lt;/h3&gt;
&lt;p&gt;Asegurar que su tasa de aciertos de Redis o Memcached este por encima del 95% para prevenir que la base de datos sea bombardeada con consultas repetitivas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dashboard de salud del cache:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Tasa de aciertos Redis: 97.3% ✅&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Memoria utilizada: 256MB / 1GB (25%) ✅&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Claves expiradas/s: 12 ✅&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Conexiones activas: 45 ✅&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Latencia promedio: 0.3ms ✅&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando la tasa de aciertos cae por debajo del 90%, es una señal de alerta temprana de que algo ha cambiado: un nuevo plugin que no utiliza el cache, una configuración incorrecta, o un patron de tráfico inesperado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-machine-learning-y-deteccion-de-anomalias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-machine-learning-y-deteccion-de-anomalias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Machine Learning y deteccion de anomalias&lt;/h2&gt;
&lt;p&gt;En 2026, hemos evolucionado más alla de las alertas estaticas (ej., “Alertarme si LCP &gt; 2.5s”). Los sistemas inteligentes de monitoreo ahora aprenden del comportamiento normal de su sitio y detectan desviaciones sutiles que los umbrales fijos nunca capturarian.&lt;/p&gt;
&lt;h3 id=&quot;lineas-base-dinámicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lineas-base-dinámicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lineas base dinámicas&lt;/h3&gt;
&lt;p&gt;El sistema aprende lo que es “normal” para su sitio en diferentes momentos del dia. Si su LCP salta de 1.0s a 1.5s un martes por la manana (cuando usualmente es 0.8s), el sistema le alerta &lt;em&gt;antes&lt;/em&gt; de que alcance la zona roja.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplos de deteccion inteligente:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un plugin actualizado que anade 200ms al TTFB los viernes (dia de despliegues)&lt;/li&gt;
&lt;li&gt;Un proveedor CDN experimentando degradacion en una region específica&lt;/li&gt;
&lt;li&gt;Un pico gradual en tiempo de consulta SQL que indica crecimiento de tabla&lt;/li&gt;
&lt;li&gt;Un cambio sutil en CLS que solo afecta a dispositivos móviles específicos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;alertas-de-escalado-predictivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alertas-de-escalado-predictivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alertas de escalado predictivo&lt;/h3&gt;
&lt;p&gt;Identificar tendencias donde el tráfico esta creciendo más rápido que la capacidad actual del servidor, permitiendo escalado vertical proactivo antes de que los usuarios experimenten degradacion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modelo predictivo:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El sistema analiza patrones históricos de tráfico (diarios, semanales, estacionales)&lt;/li&gt;
&lt;li&gt;Detecta tendencias de crecimiento y las proyecta hacia adelante&lt;/li&gt;
&lt;li&gt;Calcula cuando la capacidad actual será insuficiente&lt;/li&gt;
&lt;li&gt;Recomienda escalado automático con suficiente anticipacion&lt;/li&gt;
&lt;li&gt;Ejecuta el escalado preaprobado sin intervencion manual&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;correlacion-automática-de-eventos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#correlacion-automática-de-eventos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Correlacion automática de eventos&lt;/h3&gt;
&lt;p&gt;Los sistemas de 2026 correlacionan automáticamente las degradaciones de rendimiento con eventos del sistema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Despliegues de código o actualizaciones de plugins&lt;/li&gt;
&lt;li&gt;Campanas de marketing que generan picos de tráfico&lt;/li&gt;
&lt;li&gt;Ataques DDoS o patrones de tráfico anomalos&lt;/li&gt;
&lt;li&gt;Problemás de infraestructura del proveedor de hosting&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-pruebas-de-regresion-visual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-pruebas-de-regresion-visual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Pruebas de regresion visual&lt;/h2&gt;
&lt;p&gt;El rendimiento no es solo velocidad; es &lt;strong&gt;estabilidad&lt;/strong&gt;. En 2026, el monitoreo incluye diffs visuales automáticos que protegen la experiencia del usuario contra cambios inesperados en el layout.&lt;/p&gt;
&lt;h3 id=&quot;como-funcionan-las-pruebas-visuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funcionan-las-pruebas-visuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funcionan las pruebas visuales&lt;/h3&gt;
&lt;p&gt;Si una actualización de plugin causa un layout shift (CLS) de 0.1 en la página principal, el sistema bloquea el despliegue y alerta al equipo de diseño. Este enfoque previene que problemas visuales lleguen a producción.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pipeline de pruebas visuales:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Captura&lt;/strong&gt;: Se toman screenshots de páginas clave en multiples viewports&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comparación&lt;/strong&gt;: Se comparan pixel por pixel con la versión anterior&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis&lt;/strong&gt;: Se identifican diferencias y se clasifican por severidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decision&lt;/strong&gt;: Cambios menores se aprueban automáticamente; cambios significativos requieren revision humana&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentación&lt;/strong&gt;: Se genera un informe visual de todos los cambios detectados&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;viewports-críticos-a-monitorear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#viewports-críticos-a-monitorear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Viewports críticos a monitorear&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Viewport&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Resolución&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Prioridad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Movil vertical&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;375x812&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Crítica&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Movil horizontal&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;812x375&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tablet&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;768x1024&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Desktop HD&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1920x1080&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Desktop 4K&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3840x2160&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;integración-con-el-flujo-de-trabajo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-el-flujo-de-trabajo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con el flujo de trabajo&lt;/h3&gt;
&lt;p&gt;Las pruebas visuales se integran directamente en el pipeline de desarrollo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pre-merge&lt;/strong&gt;: Se ejecutan en cada Pull Request&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Post-deploy&lt;/strong&gt;: Se ejecutan despues de cada despliegue a staging&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Producción&lt;/strong&gt;: Se ejecutan periodicamente para detectar cambios no relacionados con despliegues&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retrospectiva&lt;/strong&gt;: Se archivan para análisis histórico de la evolucion del diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-correlacion-de-rendimiento-con-kpis-de-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-correlacion-de-rendimiento-con-kpis-de-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Correlacion de rendimiento con KPIs de negocio&lt;/h2&gt;
&lt;p&gt;Las configuraciónes corporativas más avanzadas no solo miran “ms” (milisegundos). Correlacionan metricas de rendimiento con resultados de negocio, convirtiendo datos técnicos en información accionable para la dirección ejecutiva.&lt;/p&gt;
&lt;h3 id=&quot;lcp-vs-tasa-de-conversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lcp-vs-tasa-de-conversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;LCP vs. Tasa de conversión&lt;/h3&gt;
&lt;p&gt;Mostrar a los stakeholders exactamente cuanto dinero se gana por cada 100ms de mejora de velocidad. Esta correlacion transforma el rendimiento web de un “problema técnico” a una “oportunidad de ingresos”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo real:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LCP mejora de 2.5s a 1.5s&lt;/li&gt;
&lt;li&gt;Tasa de conversión aumenta del 2.1% al 2.8% (+33%)&lt;/li&gt;
&lt;li&gt;Con 100.000 visitantes mensuales y un valor de conversión promedio de $50&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impacto mensual&lt;/strong&gt;: +$35.000 en ingresos adicionales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;inp-vs-tasa-de-rebote&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inp-vs-tasa-de-rebote&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;INP vs. Tasa de rebote&lt;/h3&gt;
&lt;p&gt;Demostrar que una UI no responsiva esta alejando usuarios de sus formularios de leads. Cada milisegundo de retraso en la respuesta a una interacción del usuario es una oportunidad de engagement perdida.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Datos de correlacion tipicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;INP &gt; 500ms: Tasa de rebote aumenta un 15%&lt;/li&gt;
&lt;li&gt;INP &gt; 300ms: Completacion de formularios cae un 10%&lt;/li&gt;
&lt;li&gt;INP &amp;#x3C; 200ms: Engagement con contenido aumenta un 25%&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cls-vs-satisfaccion-del-usuario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cls-vs-satisfaccion-del-usuario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CLS vs. Satisfaccion del usuario&lt;/h3&gt;
&lt;p&gt;Los cambios inesperados en el layout frustran a los usuarios y erosionan la confianza en la marca:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLS &gt; 0.25: Quejas de soporte aumentan un 40%&lt;/li&gt;
&lt;li&gt;CLS &gt; 0.1: Tasa de clics en CTAs cae un 12%&lt;/li&gt;
&lt;li&gt;CLS = 0: Satisfaccion del usuario reportada aumenta significativamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;dashboard-ejecutivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dashboard-ejecutivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dashboard ejecutivo&lt;/h3&gt;
&lt;p&gt;En 2026, el dashboard de rendimiento para la dirección ejecutiva incluye:&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Valor actual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Impacto en negocio&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Tendencia&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;LCP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.2s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+$42K/mes en conversiones&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mejorando&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;INP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;120ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;85% completacion de formularios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Estable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;CLS&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.02&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;4.7/5 satisfaccion UX&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mejorando&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TTFB&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;45ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;99.98% uptime percibido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Estable&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-monitoreo-de-arquitecturas-headless-y-desacopladas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-monitoreo-de-arquitecturas-headless-y-desacopladas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Monitoreo de arquitecturas Headless y desacopladas&lt;/h2&gt;
&lt;p&gt;Las arquitecturas WordPress modernas requieren monitoreo en multiples capas. Cuando WordPress es headless, con un frontend separado en Astro o Next.js, necesita visibilidad sobre toda la cadena.&lt;/p&gt;
&lt;h3 id=&quot;monitoreo-de-la-capa-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-de-la-capa-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo de la capa API&lt;/h3&gt;
&lt;p&gt;El tiempo de respuesta de la API WordPress es la base de todo el rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Latencia de endpoints REST&lt;/strong&gt;: Objetivo &amp;#x3C; 100ms para endpoints críticos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latencia de consultas GraphQL&lt;/strong&gt;: Objetivo &amp;#x3C; 200ms para consultas complejas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de errores API&lt;/strong&gt;: Objetivo &amp;#x3C; 0.1% (5xx errors)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Throughput&lt;/strong&gt;: Solicitudes por segundo que el backend puede manejar&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;monitoreo-del-frontend-desacoplado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-del-frontend-desacoplado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo del frontend desacoplado&lt;/h3&gt;
&lt;p&gt;El frontend (&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Astro/Next.js&lt;/a&gt;) tiene sus propias metricas criticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo de build y despliegue&lt;/li&gt;
&lt;li&gt;Rendimiento de Static Site Generation (SSG)&lt;/li&gt;
&lt;li&gt;Rendimiento de Incremental Static Regeneration (ISR)&lt;/li&gt;
&lt;li&gt;Hydration time en el clientes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;trazado-distribuido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trazado-distribuido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trazado distribuido&lt;/h3&gt;
&lt;p&gt;Conectar una solicitud del usuario final con cada operación a lo largo de la cadena:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Usuario] → [CDN Edge] → [Frontend Astro] → [API WordPress] → [MySQL/Redis]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  |            |              |                    |                |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  12ms         3ms            45ms                 80ms             15ms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este trazado end-to-end permite identificar exactamente donde se introduce la latencia y priorizar las optimizaciones de mayor impacto.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-automatizacion-de-respuesta-a-incidentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-automatizacion-de-respuesta-a-incidentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Automatizacion de respuesta a incidentes&lt;/h2&gt;
&lt;p&gt;En 2026, el monitoreo no solo detecta problemas; los resuelve automáticamente cuando es posible.&lt;/p&gt;
&lt;h3 id=&quot;auto-remediacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auto-remediacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auto-remediacion&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Acciones automáticas ante problemas comunes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cache corrupto&lt;/strong&gt;: Purga automática y regeneracion del cache afectado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pico de tráfico&lt;/strong&gt;: Escalado automático de infraestructura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin lento&lt;/strong&gt;: Desactivacion temporal y alerta al equipo de desarrollo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error de base de datos&lt;/strong&gt;: Failover automático al replica de lectura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificado SSL&lt;/strong&gt;: Renovacion automática antes de expiracion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;runbooks-automatizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#runbooks-automatizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Runbooks automatizados&lt;/h3&gt;
&lt;p&gt;Cada tipo de incidente tiene un runbook predefinido:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deteccion&lt;/strong&gt;: El sistema identifica el problema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clasificación&lt;/strong&gt;: Se determina la severidad y el tipo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notificación&lt;/strong&gt;: Se alerta al equipo apropiado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remediacion&lt;/strong&gt;: Se ejecutan acciones automáticas si estan preaprobadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación&lt;/strong&gt;: Se confirma que el problema esta resuelto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentación&lt;/strong&gt;: Se genera un informe post-mortem automático&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;canales-de-comunicación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#canales-de-comunicación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Canales de comunicación&lt;/h3&gt;
&lt;p&gt;Las alertas se enrutan inteligentemente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Severidad crítica&lt;/strong&gt;: Llamada telefonica + SMS + Slack + PagerDuty&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Severidad alta&lt;/strong&gt;: Slack + Email inmediato&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Severidad media&lt;/strong&gt;: Canal de Slack dedicado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Informaciónal&lt;/strong&gt;: Dashboard + Email diario de resumen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-presupuesto-de-rendimiento-y-gobernanza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-presupuesto-de-rendimiento-y-gobernanza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Presupuesto de rendimiento y gobernanza&lt;/h2&gt;
&lt;h3 id=&quot;definicion-de-presupuesto-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#definicion-de-presupuesto-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Definicion de presupuesto de rendimiento&lt;/h3&gt;
&lt;p&gt;Un presupuesto de rendimiento establece limites maximos para metricas clave:&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Presupuesto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Accion si se excede&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;LCP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 1.5s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bloqueo de despliegue&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;INP&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 200ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alerta alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;CLS&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 0.05&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Revision de diseño&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TTFB&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 100ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Investigacion de infraestructura&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;JS total&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 200KB gzipped&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Revision de arquitectura&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;CSS total&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 50KB gzipped&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Optimización requerida&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;gobernanza-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gobernanza-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gobernanza del rendimiento&lt;/h3&gt;
&lt;p&gt;El rendimiento no es responsabilidad de un solo equipo; requiere gobernanza organizaciónal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Propietario de rendimiento&lt;/strong&gt;: Un rol dedicado que supervisa metricas de rendimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reuniones semanales&lt;/strong&gt;: Revision de metricas y tendencias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alertas de presupuesto&lt;/strong&gt;: Notificaciones automáticas cuando las metricas se acercan a los limites&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision trimestral&lt;/strong&gt;: Análisis profundo de tendencias y ajuste de objetivos&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-por-que-wppoland-es-su-socio-de-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-por-que-wppoland-es-su-socio-de-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Por que WPPoland es su socio de monitoreo&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, no solo “configuramos alertas”. Proporcionamos observabilidad especializada que transforma datos técnicos en ventaja competitiva.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Diseño de monitoreo Full-Stack&lt;/strong&gt;: Implementamos RUM, sintetico y APM en un dashboard unificado (ej., New Relic o Datadog personalizado para WordPress). Cada capa de su arquitectura tiene visibilidad completa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prevencion de regresiones&lt;/strong&gt;: Construimos las “puertas automáticas” que previenen que código lento llegue a su sitio de producción. Cada despliegue pasa por un pipeline de validación de rendimiento antes de activarse.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reportes estrategicos&lt;/strong&gt;: Traducimos metricas técnicas en insights de negocio que su equipo ejecutivo puede entender y actuar. No entregamos dashboards; entregamos inteligencia accionable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimización continua&lt;/strong&gt;: No solo monitoreamos; optimizamos. Cuando detectamos oportunidades de mejora, implementamos las soluciones proactivamente.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-faq-monitoreo-de-rendimiento-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-faq-monitoreo-de-rendimiento-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. FAQ: Monitoreo de rendimiento en 2026&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cual herramienta de monitoreo es mejor para WordPress?&lt;/strong&gt;
Para empresas, recomendamos una combinación de &lt;strong&gt;New Relic&lt;/strong&gt; para APM y herramientas RUM especializadas que se enfocan en &lt;strong&gt;Core Web Vitals&lt;/strong&gt;. La integración entre ambas proporciona la vision más completa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Como monitoreamos una configuración WordPress Headless?&lt;/strong&gt;
Requiere monitorear dos capas distintas: el tiempo de respuesta de la API del backend WordPress y el rendimiento de renderizado del frontend Astro/Next.js. El trazado distribuido conecta ambas capas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Las herramientas de monitoreo gratuitas son suficientes para una corporacion?&lt;/strong&gt;
No. Herramientas como Google Search Console proporcionan datos con demasiado retraso (frecuentemente promedios de 28 dias). Para empresas, necesita telemetria en tiempo real, segundo a segundo, para reaccionar a problemas cuando ocurren.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cuanto cuesta implementar monitoreo empresarial?&lt;/strong&gt;
El costo tipico esta entre $500 y $3.000 por mes, dependiendo de la escala y complejidad. Sin embargo, el ROI es inmediato: prevenir una sola caida de rendimiento durante un pico de tráfico puede ahorrar decenas de miles de dolares en ingresos perdidos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;El monitoreo afecta el rendimiento del sitio?&lt;/strong&gt;
Los scripts de monitoreo modernos estan optimizados para tener impacto minimo. Se ejecutan via Web Workers y pesan menos de 5KB. El impacto en el rendimiento del usuario es imperceptible.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;11-conclusion-la-visibilidad-es-poder&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-conclusion-la-visibilidad-es-poder&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;11. Conclusion: La visibilidad es poder&lt;/h2&gt;
&lt;p&gt;En el paisaje de alta velocidad de 2026, la ignorancia es el error más costoso que puede cometer. Si no sabe que su sitio es lento en Singapur, esta perdiendo Singapur. Si no detecta una regresion de rendimiento causada por una actualización de plugin, esta perdiendo conversiones durante horas o dias.&lt;/p&gt;
&lt;p&gt;Una estrategia robusta de monitoreo de rendimiento transforma su sitio WordPress de una “caja negra” en una maquina transparente impulsada por datos. La diferencia entre las empresas que prosperan en la web y las que luchan frecuentemente se reduce a una pregunta: &lt;strong&gt;tienen visibilidad completa sobre la experiencia de sus usuarios?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tiene visibilidad completa sobre el rendimiento de su sitio? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para construir su imperio de monitoreo 2026.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Estrategias completas de optimización&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Arquitecturas de alto rendimiento&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad sin comprometer rendimiento&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Monitoreo de arquitecturas headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; - Core Web Vitals como factor de ranking&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>performance</category><category>business</category><category domain="tag">performance-monitoring</category><category domain="tag">enterprise-wordpress</category><category domain="tag">rum-monitoring</category><category domain="tag">synthetic-testing</category><category domain="tag">core-web-vitals-2026</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>WordPress vs. Wix vs. Squarespace 2026: La batalla definitiva por el rendimiento</title><link>https://wppoland.com/es/wordpress-vs-wix-squarespace-2026-comprehensive-comparison/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-vs-wix-squarespace-2026-comprehensive-comparison/</guid><description>Eligiendo entre WordPress, Wix y Squarespace en 2026? Esta comparativa de más de 2500 palabras analiza rendimiento, SEO, E-E-A-T y la escalabilidad a largo plazo de cada plataforma.</description><pubDate>Mon, 25 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Las “guerras de constructores de sitios web” de la última decada han alcanzado su punto más alto en 2026. Lo que solia ser una simple eleccion entre “fácil” y “potente” se ha convertido en una matriz compleja de capacidades de IA, requisitos de SEO técnico y preocupaciones sobre la soberania de datos.&lt;/p&gt;
&lt;p&gt;Si eres propietario de un negocio o gerente de marketing en 2026, no estas buscando simplemente un “sitio bonito”. Estas buscando un activo de alto rendimiento que se posicione en los resultados de búsqueda con IA, proporcione una experiencia de usuario fluida y no atrape tus datos en un silo propietario.&lt;/p&gt;
&lt;p&gt;En esta exhaustiva inmersion de más de 2500 palabras, comparamos &lt;strong&gt;WordPress&lt;/strong&gt;, &lt;strong&gt;Wix&lt;/strong&gt; y &lt;strong&gt;Squarespace&lt;/strong&gt; en las metricas que realmente importan para la web moderna.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-filosofia-central-código-abierto-vs-jardines-amurallados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-filosofia-central-código-abierto-vs-jardines-amurallados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La filosofia central: Código abierto vs. jardines amurallados&lt;/h2&gt;
&lt;p&gt;El diferenciador más significativo en 2026 sigue siendo la &lt;strong&gt;Propiedad&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-la-libertad-de-eleccion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-la-libertad-de-eleccion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: La libertad de eleccion&lt;/h3&gt;
&lt;p&gt;WordPress es el único actor importante en esta comparativa que es &lt;strong&gt;Código Abierto&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Propiedad&lt;/strong&gt;: Eres dueño de cada linea de código y cada byte de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portabilidad&lt;/strong&gt;: Si no te gusta tu hosting, te mudas. Si no te gusta un desarrollador, contratas otro. Nunca estas “atrapado”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidad&lt;/strong&gt;: Con más del 45% de la web impulsada por WordPress, la inteligencia colectiva y el ecosistema de plugins son incomparables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wix-y-squarespace-la-comodidad-del-saas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-y-squarespace-la-comodidad-del-saas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix y Squarespace: La comodidad del SaaS&lt;/h3&gt;
&lt;p&gt;Estas son plataformas &lt;strong&gt;SaaS (Software como Servicio)&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El modelo de “alquiler”&lt;/strong&gt;: Esencialmente estas alquilando tu sitio web. Si dejas de pagar tu factura mensual, tu sitio desaparece.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La promesa “todo en uno”&lt;/strong&gt;: Manejan hosting, seguridad y actualizaciones. Esto es genial para alguien con cero interes técnico pero un riesgo importante para un negocio en crecimiento que puede superar las limitaciones de la plataforma.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-flexibilidad-de-diseño-y-la-experiencia-del-constructor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-flexibilidad-de-diseño-y-la-experiencia-del-constructor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Flexibilidad de diseño y la experiencia del constructor&lt;/h2&gt;
&lt;h3 id=&quot;wordpress-gutenberg-y-patrones-con-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-gutenberg-y-patrones-con-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: Gutenberg y patrones con IA&lt;/h3&gt;
&lt;p&gt;En 2026, el editor &lt;strong&gt;Gutenberg&lt;/strong&gt; de WordPress es una potencia.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IA Nativa&lt;/strong&gt;: El nucleo de WordPress ahora incluye “Blueprint AI” que puede generar diseños de páginas completas basados en un simple prompt de texto, usando los estilos de tu tema existente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistemas de Diseño&lt;/strong&gt;: Para marcas más grandes, WordPress permite la creación de sistemas de diseño estrictos que aseguran que los equipos de marketing solo puedan usar bloques y colores aprobados por la marca.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wix-precision-visual-wix-studio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-precision-visual-wix-studio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix: Precision visual (Wix Studio)&lt;/h3&gt;
&lt;p&gt;Wix ha superado el “desorden de arrastrar y soltar” del pasado.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wix Studio&lt;/strong&gt;: Su plataforma profesional 2026 ofrece increibles herramientas de diseño responsive que se sienten más como Figma que como un constructor de sitios web tradicional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diseño generativo con IA&lt;/strong&gt;: La IA de Wix es posiblemente la más agresiva, capaz de generar sitios enteros incluyendo textos e imágenes en minutos. Sin embargo, editar ese contenido generado por IA a veces puede resultar más restrictivo que el sistema de bloques de WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;squarespace-el-campeon-estetico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#squarespace-el-campeon-estetico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Squarespace: El campeon estetico&lt;/h3&gt;
&lt;p&gt;Squarespace sigue siendo la eleccion para fotografos, diseñadores de interiores y marcas que priorizan la estetica.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fluid Engine&lt;/strong&gt;: Su motor de diseño es fluido e intuitivo, aunque carece de la profunda “lógica” de WordPress (por ejemplo, la visualización condicional de elementos basada en datos del usuario).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restricciones de plantillas&lt;/strong&gt;: La brillantez de Squarespace son sus limitaciones. Hace muy dificil construir un sitio web feo, pero también muy dificil construir una aplicación funcional altamente única o compleja.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-seo-y-optimización-para-llm-llmo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-seo-y-optimización-para-llm-llmo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. SEO y optimización para LLM (LLMO) en 2026&lt;/h2&gt;
&lt;p&gt;En la era de la búsqueda con IA (Perplexity, SearchGPT), la estructura de tu código es más importante que nunca.&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress 2026&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Wix 2026&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Squarespace 2026&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Control Schema.org&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Absoluto (JSON-LD manual/plugin).&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mejorado, pero mayormente automatizado.&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitado; dificil para tipos personalizados.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Velocidad del sitio (INP)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dependiente del edge-hosting (más rápido).&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno, pero sujeto a inflacion SaaS.&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Promedio; control limitado del servidor.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;LLMO (Búsqueda para IA)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Estructura de primera clase.&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Buena metadata automatizada.&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Soporte básico.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Poder de Blogging&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Archivo/Taxonomía inigualable.&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno, pero jerarquía más plana.&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Simple y elegante, pero limitado.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;El factor E-E-A-T:&lt;/strong&gt; Los motores de búsqueda estan obsesionados con “Experiencia, Conocimiento, Autoridad y Confianza.” WordPress domina aquí porque permite un mapeo de relaciones complejo - vinculando autores a sus credenciales externas, multiples categorías y tipos de schema especializados de manera mucho más efectiva que los constructores SaaS más rigidos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-rendimiento-core-web-vitals-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-rendimiento-core-web-vitals-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Rendimiento: Core Web Vitals a escala&lt;/h2&gt;
&lt;p&gt;Si tu sitio no carga en menos de 1.5 segundos, estas perdiendo el 40% de tu tráfico potencial.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento de WordPress&lt;/strong&gt;: Con un enfoque orientado al rendimiento (usando &lt;strong&gt;Vite&lt;/strong&gt;, &lt;strong&gt;Edge Caching&lt;/strong&gt; y &lt;strong&gt;Hosting Optimizado&lt;/strong&gt;), WordPress es la plataforma más rápida de esta lista. En &lt;strong&gt;WPPoland&lt;/strong&gt;, garantizamos puntuaciones de Lighthouse superiores a 90 para nuestros clientes al eliminar la “inflacion SaaS” que viene con Wix y Squarespace. Conoce más sobre nuestra &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento de Wix&lt;/strong&gt;: Wix ha dado pasos enormes en rendimiento. Su infraestructura es global. Sin embargo, la abundancia de JavaScript del lado del clientes requerida para alimentar su constructor visual todavia conduce a puntuaciones más altas de &lt;strong&gt;Interaction to Next Paint (INP)&lt;/strong&gt; que un WordPress ligero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento de Squarespace&lt;/strong&gt;: A menudo el más lento de los tres. Debido a que el código es altamente estandarizado y propietario, tienes muy poca capacidad para optimizar la “ruta crítica” del proceso de renderizado.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-comercio-electronico-escalando-más-alla-de-lo-básico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-comercio-electronico-escalando-más-alla-de-lo-básico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Comercio electronico: Escalando más alla de lo básico&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WooCommerce (WordPress):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ventajas&lt;/strong&gt;: Puedes vender cualquier cosa - desde 5 productos hasta 50,000. Se integra con cada ERP, CRM y proveedor logistico (especialmente los locales como InPost o PayU en Polonia).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desventajas&lt;/strong&gt;: Requiere gestión activa y hosting de nivel superior para tráfico pesado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Wix E-commerce:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ventajas&lt;/strong&gt;: Muy fácil de configurar. Bueno para tiendas pequeñas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desventajas&lt;/strong&gt;: Comisiones por transaccion en algunos planes. Escalar a miles de SKUs implica un lag significativo en la interfaz y obstaculos en la gestión de datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Squarespace E-commerce:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ventajas&lt;/strong&gt;: Las galerias de productos más hermosas. Genial para productos de “estilo de vida”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desventajas&lt;/strong&gt;: Personalización limitada del checkout. Muy dificil implementar sistemas especializados de IVA/impuestos para envios internacionales complejos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Descubre más sobre nuestros servicios de &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;desarrollo WooCommerce&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-análisis-del-costo-total-de-propiedad-tco&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-análisis-del-costo-total-de-propiedad-tco&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Análisis del costo total de propiedad (TCO)&lt;/h2&gt;
&lt;p&gt;Veamos los números a 3 años para un sitio web profesional de negocios.&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Tipo de costo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress (WPPoland Build)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Wix (Plan Business)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Squarespace (Commerce)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo de configuración&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio/Alto (Dev experto)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo/Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tarifa mensual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$30 - $100 (Hosting)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$32 - $159&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$23 - $49&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Apps/Plugins&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$100 - $300 (Anual)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$200 - $600 (Anual)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$100 - $400 (Anual)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo de escalado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo (Upgrade de servidor)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto (Saltos de plan)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto (Brechas funcionales)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Total 3 años&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ganador: Aprox $4,500&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Aprox $6,000+&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Aprox $5,500&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;El “impuesto oculto del SaaS”&lt;/strong&gt;: Frecuentemente vemos clientes migrar de Wix a WordPress porque su factura de Wix crecio a $200+/mes al agregar funcionalidades de negocio que son gratuitas en el ecosistema WordPress.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-seguridad-y-mantenimiento-el-mito-del-jardin-amurallado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-seguridad-y-mantenimiento-el-mito-del-jardin-amurallado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Seguridad y mantenimiento: El mito del jardin amurallado&lt;/h2&gt;
&lt;p&gt;La razon más comun por la que la gente elige Wix o Squarespace es “Seguridad”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La realidad del SaaS&lt;/strong&gt;: Estas protegido de tus &lt;em&gt;propios&lt;/em&gt; errores, pero eres vulnerable a los errores de la &lt;em&gt;plataforma&lt;/em&gt;. Si Wix tiene una caida global, tu negocio esta caido y no hay absolutamente nada que puedas hacer al respecto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La realidad de WordPress&lt;/strong&gt;: Seguro por diseño, pero requiere gestión profesional. En 2026, con &lt;strong&gt;Hosting WordPress Gestionado&lt;/strong&gt;, la seguridad esta automatizada. Las actualizaciones se prueban en staging antes de ir a producción. Para un negocio profesional, un WordPress gestionado profesionalmente es en realidad &lt;em&gt;mas&lt;/em&gt; seguro porque tienes un stack único y reforzado en lugar de un objetivo compartido y de alto valor como Wix.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce nuestros servicios de &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; y &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-migración-graduandose-a-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-migración-graduandose-a-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Migración: Graduandose a WordPress&lt;/h2&gt;
&lt;p&gt;En nuestra experiencia en &lt;strong&gt;WPPoland&lt;/strong&gt;, vemos una tendencia consistente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Las empresas comienzan en &lt;strong&gt;Squarespace&lt;/strong&gt; durante su primer año.&lt;/li&gt;
&lt;li&gt;Se mudan a &lt;strong&gt;Wix&lt;/strong&gt; cuando necesitan un poco más de funcionalidad.&lt;/li&gt;
&lt;li&gt;Se “graduan” a &lt;strong&gt;WordPress&lt;/strong&gt; cuando se ponen serios sobre SEO, propiedad de marca y funcionalidad personalizada.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Migrar &lt;em&gt;desde&lt;/em&gt; Wix o Squarespace es notoriamente dificil. No quieren que te vayas. WordPress, siendo Código Abierto, facilita la exportacion de tus datos. Elegir WordPress primero te ahorra el “Impuesto de Migración” despues.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-veredicto-de-wppoland-cual-se-adapta-a-tu-estrategia-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-veredicto-de-wppoland-cual-se-adapta-a-tu-estrategia-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Veredicto de WPPoland: Cual se adapta a tu estrategia 2026?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Elige WordPress si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Quieres propiedad absoluta de tus activos digitales.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Planeas escalar tu contenido y SEO durante años.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Necesitas integración profunda con herramientas de negocio locales.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Te importan los Core Web Vitals y la velocidad de página como ventaja competitiva.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elige Wix si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Eres un emprendedor en solitario que necesita un sitio &lt;em&gt;hoy&lt;/em&gt;.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; No te importa pagar un “alquiler” mensual perpetuo por tu sitio.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Quieres un editor visual que sea extremadamente guíado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elige Squarespace si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Eres un creativo cuyo único objetivo es “verse bien”.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Tienes un sitio muy simple (menos de 10 páginas) sin necesidades de datos complejas.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;mejor-constructor-de-sitios-web-para-pequeñas-empresas-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejor-constructor-de-sitios-web-para-pequeñas-empresas-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejor constructor de sitios web para pequeñas empresas en 2026&lt;/h2&gt;
&lt;p&gt;Para una pequeña empresa con menos de 20 páginas, presupuesto limitado y sin desarrollador interno, la matriz de decisión es diferente a la de una empresa en crecimiento:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Criterio&lt;/th&gt;&lt;th&gt;WordPress&lt;/th&gt;&lt;th&gt;Wix&lt;/th&gt;&lt;th&gt;Squarespace&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Setup speed&lt;/td&gt;&lt;td&gt;1-2 weeks (with developer)&lt;/td&gt;&lt;td&gt;1-3 days (self-service)&lt;/td&gt;&lt;td&gt;1-3 days (self-service)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Monthly cost (first year)&lt;/td&gt;&lt;td&gt;$30-80 hosting + dev time&lt;/td&gt;&lt;td&gt;$17-36&lt;/td&gt;&lt;td&gt;$16-49&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SEO ceiling&lt;/td&gt;&lt;td&gt;Unlimited&lt;/td&gt;&lt;td&gt;Good for local&lt;/td&gt;&lt;td&gt;Basic&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ownership&lt;/td&gt;&lt;td&gt;100% yours&lt;/td&gt;&lt;td&gt;Platform-dependent&lt;/td&gt;&lt;td&gt;Platform-dependent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Growth path&lt;/td&gt;&lt;td&gt;Unlimited&lt;/td&gt;&lt;td&gt;Requires re-platforming&lt;/td&gt;&lt;td&gt;Requires re-platforming&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Si la empresa planea mantenerse pequeña y local, Wix es el inicio más rápido. Si la empresa planea crecer, invertir en marketing de contenidos o vender en linea, WordPress se paga solo en 12-18 meses gracias a un menor TCO y mejor capacidad SEO.&lt;/p&gt;
&lt;h2 id=&quot;wordpress-vs-wix-vs-squarespace-vs-webflow-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-vs-wix-vs-squarespace-vs-webflow-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress vs Wix vs Squarespace vs Webflow en 2026&lt;/h2&gt;
&lt;p&gt;Webflow merece mencion porque ocupa el terreno intermedio entre la simplicidad SaaS y el control del desarrollador. A diferencia de Wix y Squarespace, Webflow genera HTML semántico limpio y ofrece control CSS completo sin escribir código.&lt;/p&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Factor&lt;/th&gt;&lt;th&gt;WordPress&lt;/th&gt;&lt;th&gt;Wix&lt;/th&gt;&lt;th&gt;Squarespace&lt;/th&gt;&lt;th&gt;Webflow&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Code quality&lt;/td&gt;&lt;td&gt;Developer-controlled&lt;/td&gt;&lt;td&gt;Proprietary&lt;/td&gt;&lt;td&gt;Proprietary&lt;/td&gt;&lt;td&gt;Clean semantic HTML&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CMS flexibility&lt;/td&gt;&lt;td&gt;Unlimited&lt;/td&gt;&lt;td&gt;Medium&lt;/td&gt;&lt;td&gt;Low&lt;/td&gt;&lt;td&gt;High&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Visual builder&lt;/td&gt;&lt;td&gt;Gutenberg + page builders&lt;/td&gt;&lt;td&gt;Wix Studio&lt;/td&gt;&lt;td&gt;Fluid Engine&lt;/td&gt;&lt;td&gt;Strong&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hosting&lt;/td&gt;&lt;td&gt;Your choice&lt;/td&gt;&lt;td&gt;Wix only&lt;/td&gt;&lt;td&gt;Squarespace only&lt;/td&gt;&lt;td&gt;Webflow or export&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pricing at scale&lt;/td&gt;&lt;td&gt;Lowest&lt;/td&gt;&lt;td&gt;High&lt;/td&gt;&lt;td&gt;Medium&lt;/td&gt;&lt;td&gt;High&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Webflow es fuerte para sitios de marketing con mucho diseño, pero se queda corto en ecosistema de plugins, soporte multilingue y profundidad de e-commerce comparado con WordPress.&lt;/p&gt;
&lt;h2 id=&quot;wordpress-vs-wix-vs-squarespace-vs-ghost-para-blogging-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-vs-wix-vs-squarespace-vs-ghost-para-blogging-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress vs Wix vs Squarespace vs Ghost para blogging en 2026&lt;/h2&gt;
&lt;p&gt;Para blogging puro y publicación de contenido, Ghost entra en la conversación como una alternativa enfocada:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: El mejor para blogs que necesitan categorías, etiquetas, taxonomías personalizadas, perfiles de autor y control SEO profundo. El sistema de taxonomía y archivo sigue siendo inigualable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wix&lt;/strong&gt;: Adecuado para blogs simples. Jerarquía plana, páginas de archivo limitadas, sin taxonomías personalizadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Squarespace&lt;/strong&gt;: Diseños de blog hermosos pero categorización limitada y sin soporte real de taxonomías.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ghost&lt;/strong&gt;: Construido exclusivamente para publicación. Newsletters nativos, muros de pago por membresía y velocidad extraordinaria. Sin embargo, sin ecosistema de plugins, personalización visual limitada y sin e-commerce.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si el blogging es tu negocio principal (basado en newsletters, modelo de suscripción), Ghost vale la pena evaluar. Para blogs que forman parte de un sitio web empresarial más grande, WordPress es la elección clara.&lt;/p&gt;
&lt;h2 id=&quot;comparación-de-funciones-seo-de-wix-vs-squarespace-vs-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-funciones-seo-de-wix-vs-squarespace-vs-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de funciones SEO de Wix vs Squarespace vs WordPress&lt;/h2&gt;
&lt;p&gt;El SEO es donde las plataformas divergen más marcadamente:&lt;/p&gt;



























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;SEO feature&lt;/th&gt;&lt;th&gt;WordPress&lt;/th&gt;&lt;th&gt;Wix&lt;/th&gt;&lt;th&gt;Squarespace&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Custom meta titles/descriptions&lt;/td&gt;&lt;td&gt;Full control (plugin or code)&lt;/td&gt;&lt;td&gt;Built-in editor&lt;/td&gt;&lt;td&gt;Built-in editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Schema.org markup&lt;/td&gt;&lt;td&gt;Full JSON-LD control&lt;/td&gt;&lt;td&gt;Automated, limited types&lt;/td&gt;&lt;td&gt;Very limited&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;XML sitemap customization&lt;/td&gt;&lt;td&gt;Full control&lt;/td&gt;&lt;td&gt;Auto-generated, no customization&lt;/td&gt;&lt;td&gt;Auto-generated, basic&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Robots.txt editing&lt;/td&gt;&lt;td&gt;Direct file access&lt;/td&gt;&lt;td&gt;Limited dashboard control&lt;/td&gt;&lt;td&gt;No direct access&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL structure&lt;/td&gt;&lt;td&gt;Fully customizable&lt;/td&gt;&lt;td&gt;Customizable&lt;/td&gt;&lt;td&gt;Partially customizable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hreflang for multilingual&lt;/td&gt;&lt;td&gt;Full control&lt;/td&gt;&lt;td&gt;Wix Multilingual (auto)&lt;/td&gt;&lt;td&gt;Not supported&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Core Web Vitals optimization&lt;/td&gt;&lt;td&gt;Full server and code control&lt;/td&gt;&lt;td&gt;Platform-dependent&lt;/td&gt;&lt;td&gt;Platform-dependent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LLMO (LLM optimization)&lt;/td&gt;&lt;td&gt;Strong schema and structure&lt;/td&gt;&lt;td&gt;Basic metadata&lt;/td&gt;&lt;td&gt;Minimal&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para SEO local, las tres plataformas funcionan. Para búsqueda orgánica competitiva a escala, WordPress es la única plataforma que te da control total sobre cada factor de posicionamiento. Para una comparación más profunda que incluya opciones headless, consulta nuestra &lt;a href=&quot;/es/top-10-cms-platforms-for-saas-2026-comprehensive-guide/&quot;&gt;guía de mejor CMS para SaaS&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;10-faq-preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-faq-preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. FAQ: Preguntas frecuentes&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Es WordPress gratuito?&lt;/strong&gt;
El software es gratuito, pero pagas por hosting y desarrollo especializado. Con el tiempo, generalmente es más barato que Wix.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wix es dueño de mi dominio?&lt;/strong&gt;
Generalmente lo compras a través de ellos, pero puedes transferirlo. Sin embargo, no puedes “transferir” el sitio web en si.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Es Squarespace mejor para fotografos?&lt;/strong&gt;
Visualmente, si. Técnicamente, no. WordPress permite una optimización de imágenes mucho mejor (AVIF, WebP) y galerias de carga más rápida.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puedo usar IA para construir mi sitio WordPress?&lt;/strong&gt;
Si, en 2026, la IA esta profundamente integrada en el proceso de construccion de sitios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cual es mejor para un blog?&lt;/strong&gt;
WordPress, por un amplio margen. Su sistema de taxonomía y archivo es el estándar de la industria.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google prefiere WordPress?&lt;/strong&gt;
Google prefiere &lt;em&gt;buena estructura técnica y velocidad del sitio&lt;/em&gt;. WordPress facilita lograr ambas cosas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Es Wix más dificil de hackear?&lt;/strong&gt;
Wix es una “caja negra”, por lo que es más dificil que &lt;em&gt;tu&lt;/em&gt; lo arruines, pero es un objetivo enorme para ataques a nivel de plataforma.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puedo construir un sitio de membresia en Squarespace?&lt;/strong&gt;
Si, tienen una herramienta nativa, pero es muy cara comparada con las opciones de WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Que es la “ruta de graduacion”?&lt;/strong&gt;
Es la progresion natural de un negocio que pasa de constructores simples al poder de WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WPPoland construye en Wix?&lt;/strong&gt;
No. Creemos en la propiedad de marca y el rendimiento extremo, por lo que solo construimos en el ecosistema WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuanto tiempo toma construir un sitio WordPress?&lt;/strong&gt;
Con herramientas de bloques modernas, un sitio profesional puede estar listo en 2-4 semanas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El soporte al clientes es mejor en Wix?&lt;/strong&gt;
Wix tiene un sistema de tickets. El &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;soporte WordPress&lt;/a&gt; viene de tu desarrollador experto y tu proveedor de hosting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puedo gestionar mi propio sitio WordPress?&lt;/strong&gt;
Si! El panel de 2026 es más fácil de usar que nunca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cual es el mayor riesgo de Wix/Squarespace?&lt;/strong&gt;
El bloqueo de plataforma. Si cambian sus terminos o precios, no tienes poder de negociacion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quien gana la guerra del rendimiento en 2026?&lt;/strong&gt;
El usuario gana cuando un sitio es rápido, accesible y propiedad de la marca.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion-construyendo-para-la-proxima-decada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-construyendo-para-la-proxima-decada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Construyendo para la proxima decada&lt;/h2&gt;
&lt;p&gt;En 2026, tu sitio web es tu propiedad digital más valiosa. No lo construyas en terreno alquilado. Mientras &lt;strong&gt;Wix&lt;/strong&gt; y &lt;strong&gt;Squarespace&lt;/strong&gt; ofrecen facilidad de uso para principiantes, &lt;strong&gt;WordPress&lt;/strong&gt; sigue siendo la única plataforma que ofrece un camino hacia crecimiento infinito, propiedad total y rendimiento de elite.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para graduarte a un sistema WordPress de alto rendimiento? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta a WPPoland hoy&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">wordpress-vs-wix</category><category domain="tag">wordpress-vs-squarespace</category><category domain="tag">comparativa-cms-2026</category><category domain="tag">constructores-web</category><category domain="tag">rendimiento-seo</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-flip.jpg" type="image/jpeg"/></item><item><title>Optimización de base de datos WordPress en 2026: Limpiando el bloat</title><link>https://wppoland.com/es/wordpress-database-optimization-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-database-optimization-guide-2026/</guid><description>Tu sitio WordPress esta lento? El culpable probablemente es tu base de datos. Aprende a optimizar MariaDB 11, limpiar opciones y gestionar postmeta para rendimiento en 2026.</description><pubDate>Sun, 24 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tu base de datos WordPress es el corazon de tu sitio web. Con el tiempo, ese corazon se obstruye con “colesterol digital”: revisiones antiguas, transients expirados y opciones infladas. En 2026, los plugins de optimización no son suficientes. Necesitas un enfoque profesional para la gestión de bases de datos que aborde las causas raiz del rendimiento degradado.&lt;/p&gt;
&lt;p&gt;La optimización de base de datos es una de las areas más subestimadas del rendimiento WordPress, y sin embargo es frecuentemente la diferencia entre un sitio que carga en 200ms y uno que tarda 2 segundos. En esta guía detallada, cubriremos cada aspecto crítico de la optimización de base de datos para WordPress en 2026.&lt;/p&gt;
&lt;h2 id=&quot;1-dominando-mariadb-11-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-dominando-mariadb-11-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Dominando MariaDB 11+ en 2026&lt;/h2&gt;
&lt;p&gt;En 2026, hemos superado el MySQL estándar. MariaDB 11 ofrece mejor rendimiento para las complejas uniones que WordPress frecuentemente requiere, especialmente en sitios con grandes cantidades de contenido, usuarios o productos WooCommerce.&lt;/p&gt;
&lt;h3 id=&quot;optimizador-de-consultas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimizador-de-consultas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimizador de consultas&lt;/h3&gt;
&lt;p&gt;El optimizador de MariaDB 11 es más inteligente al manejar las “trampas de tabla Meta” donde ocurren miles de operaciones &lt;code&gt;JOIN&lt;/code&gt;. Las consultas que involucran &lt;code&gt;wp_postmeta&lt;/code&gt; y &lt;code&gt;wp_usermeta&lt;/code&gt; se ejecutan significativamente más rápido gracias al planificador de consultas mejorado y las estadísticas de tabla más precisas.&lt;/p&gt;
&lt;h3 id=&quot;configuración-recomendada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-recomendada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración recomendada&lt;/h3&gt;
&lt;p&gt;Asegurate de que tu host 2026 use MariaDB 11 y que tus tablas esten usando el motor de almacenamiento &lt;strong&gt;InnoDB&lt;/strong&gt; con formato de archivo &lt;code&gt;barracuda&lt;/code&gt; para mejor compresion. Configura &lt;code&gt;innodb_buffer_pool_size&lt;/code&gt; al 70-80% de tu RAM disponible para maximizar el rendimiento de cache en memoria.&lt;/p&gt;
&lt;h3 id=&quot;comparativa-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparativa-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparativa de rendimiento&lt;/h3&gt;
&lt;p&gt;En nuestras pruebas con sitios WordPress de 50.000+ publicaciónes, MariaDB 11 mostro mejoras del 25-40% en el tiempo de ejecucion de consultas complejas comparado con MySQL 8.0. Las mejoras son aun más pronunciadas en sitios WooCommerce con grandes catálogos de productos y multiples atributos.&lt;/p&gt;
&lt;h2 id=&quot;2-podando-el-autoload-de-wp_options&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-podando-el-autoload-de-wp_options&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Podando el autoload de &lt;code&gt;wp_options&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Este es el asesino oculto del rendimiento. La tabla &lt;code&gt;wp_options&lt;/code&gt; es una de las más accedidas en toda la instalación de WordPress, y su optimización tiene un impacto desproporcionado en el rendimiento general del sitio.&lt;/p&gt;
&lt;h3 id=&quot;el-problema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema&lt;/h3&gt;
&lt;p&gt;Cada vez que instalas un plugin, agrega datos a &lt;code&gt;wp_options&lt;/code&gt;. Si establece &lt;code&gt;autoload&lt;/code&gt; en ‘yes’, esos datos se cargan en &lt;em&gt;cada&lt;/em&gt; página. Con el tiempo, la cantidad de datos autoloaded crece hasta convertirse en un cuello de botella significativo que afecta directamente tu TTFB.&lt;/p&gt;
&lt;h3 id=&quot;la-solución&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución&lt;/h3&gt;
&lt;p&gt;Usa SQL para encontrar los mayores infractores:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(option_value) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; autoload &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;yes&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ORDER BY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; DESC&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; LIMIT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;accion-correctiva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#accion-correctiva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Accion correctiva&lt;/h3&gt;
&lt;p&gt;Si un plugin extinto dejo 500kb de basura, eliminalo o establece &lt;code&gt;autoload&lt;/code&gt; en ‘no’. Revisa regularmente esta tabla para detectar opciones que ya no son necesarias. Establece un umbral maximo de 800KB para datos autoloaded y toma accion cuando se supere.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-diagnóstico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-diagnóstico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de diagnóstico&lt;/h3&gt;
&lt;p&gt;WP-CLI proporciona comandos utiles para auditar opciones: &lt;code&gt;wp option list --autoload=on --format=table&lt;/code&gt; muestra todas las opciones autoloaded con sus tamaños. Para diagnóstico visual, Query Monitor es invaluable para identificar opciones problematicas en tiempo real.&lt;/p&gt;
&lt;h2 id=&quot;3-el-problema-de-escalado-de-wp_postmeta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-el-problema-de-escalado-de-wp_postmeta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. El problema de escalado de &lt;code&gt;wp_postmeta&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Los constructores de páginas y plugins de campos complejos (ACF) almacenan todo como postmeta. En un sitio con 50.000 productos, esta tabla puede alcanzar millones de filas, degradando significativamente el rendimiento de las consultas.&lt;/p&gt;
&lt;h3 id=&quot;indices-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indices-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indices personalizados&lt;/h3&gt;
&lt;p&gt;En 2026, agregamos indices personalizados en las columnas &lt;code&gt;meta_key&lt;/code&gt; y &lt;code&gt;meta_value&lt;/code&gt; para acelerar el filtrado. Los indices predeterminados de WordPress no son suficientes para sitios de gran escala, y los indices personalizados pueden reducir los tiempos de consulta de segundos a milisegundos.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_key_value (meta_key(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;191&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limpieza-de-huerfanos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limpieza-de-huerfanos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limpieza de huerfanos&lt;/h3&gt;
&lt;p&gt;Elimina metadatos “huerfanos”, filas que pertenecen a publicaciónes que ya no existen. Esta es una de las fuentes más comunes de bloat en bases de datos WordPress maduras.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; pm &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta pm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LEFT JOIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts p &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; pm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ID&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; IS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; NULL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estrategias-de-particionamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-particionamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de particionamiento&lt;/h3&gt;
&lt;p&gt;Para sitios con millones de filas en &lt;code&gt;wp_postmeta&lt;/code&gt;, considera el particionamiento de tablas por rango de &lt;code&gt;post_id&lt;/code&gt;. Esto permite que las consultas accedan solo a la particion relevante, mejorando dramaticamente el rendimiento en tablas muy grandes.&lt;/p&gt;
&lt;h2 id=&quot;4-transients-y-revisiones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-transients-y-revisiones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Transients y revisiones&lt;/h2&gt;
&lt;h3 id=&quot;revisiones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#revisiones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Revisiones&lt;/h3&gt;
&lt;p&gt;Cada vez que haces clic en “Guardar”, una nueva fila se agrega a tu base de datos. Sin limitacion, un artículo editado 100 veces tiene 100 copias en la tabla &lt;code&gt;wp_posts&lt;/code&gt;. Limita estas a 5 o 10 versiones en &lt;code&gt;wp-config.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;transients&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transients&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transients&lt;/h3&gt;
&lt;p&gt;Estos son elementos de cache temporales. Si no expiran correctamente, ocupan espacio innecesario y aumentan el tamaño de la tabla &lt;code&gt;wp_options&lt;/code&gt;. Podalos semanalmente usando WP-CLI:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --expired&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limpieza-automatizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limpieza-automatizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limpieza automatizada&lt;/h3&gt;
&lt;p&gt;Implementa un cron job que ejecute la limpieza de transients y revisiones automáticamente. Esto previene la acumulacion gradual de datos innecesarios y mantiene la base de datos en un estado optimo sin intervencion manual.&lt;/p&gt;
&lt;h2 id=&quot;5-ganancias-de-rendimiento-optimización-de-bd-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-ganancias-de-rendimiento-optimización-de-bd-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Ganancias de rendimiento: Optimización de BD 2026&lt;/h2&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Area&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Antes de Optimización&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Despues del Hardening 2026&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TTFB&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;800ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;150ms&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tamaño de Tablas&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.5 GB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;400 MB&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tamaño Autoload&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;4.2 MB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&amp;#x3C; 800 KB&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Velocidad de Consultas&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Lenta (&gt;1s)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Instantanea (&amp;#x3C;50ms)&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;caso-de-estudio-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de estudio real&lt;/h3&gt;
&lt;p&gt;Un sitio WooCommerce con 15.000 productos y 3 millones de filas en &lt;code&gt;wp_postmeta&lt;/code&gt; experimentaba TTFB de 1.2 segundos. Despues de la optimización completa (indices personalizados, limpieza de huerfanos, poda de transients, migración a MariaDB 11 con configuración optimizada), el TTFB cayo a 120ms. Las páginas de categoría que antes tardaban 3 segundos ahora cargan en menos de 500ms.&lt;/p&gt;
&lt;h2 id=&quot;6-monitoreo-continuo-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-monitoreo-continuo-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Monitoreo continuo de la base de datos&lt;/h2&gt;
&lt;h3 id=&quot;alertas-automatizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alertas-automatizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alertas automatizadas&lt;/h3&gt;
&lt;p&gt;Configura alertas que te notifiquen cuando el tamaño de los datos autoloaded supere umbrales definidos, cuando las consultas lentas superen cierta frecuencia o cuando las tablas crezcan más alla de limites esperados.&lt;/p&gt;
&lt;h3 id=&quot;query-monitor-en-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#query-monitor-en-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Query Monitor en desarrollo&lt;/h3&gt;
&lt;p&gt;Usa Query Monitor durante el desarrollo para identificar consultas ineficientes antes de que lleguen a producción. Presta especial atención a consultas duplicadas, consultas sin cache y consultas que realizan full table scans.&lt;/p&gt;
&lt;h3 id=&quot;slow-query-log&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#slow-query-log&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Slow Query Log&lt;/h3&gt;
&lt;p&gt;Activa el log de consultas lentas en MariaDB para identificar las consultas que más impactan el rendimiento. Analiza este log regularmente y optimiza las consultas problematicas con indices apropiados o reestructuracion de la lógica.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pro-tip-cache-de-objetos-redis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pro-tip-cache-de-objetos-redis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PRO-Tip: Cache de objetos (Redis)&lt;/h2&gt;
&lt;p&gt;La optimización de base de datos solo te lleva hasta cierto punto. En 2026, el hack definitivo de base de datos es &lt;strong&gt;no consultar la base de datos en absoluto&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa &lt;strong&gt;Redis&lt;/strong&gt; como cache de objetos.&lt;/li&gt;
&lt;li&gt;Una vez que se obtiene un resultado de consulta (como un menú o una lista de productos), se almacena en RAM.&lt;/li&gt;
&lt;li&gt;El siguiente usuario obtiene los datos instantaneamente sin disparar una sola consulta SQL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Redis reduce la carga de la base de datos entre un 60-90% en sitios tipicos de WordPress, y los efectos son especialmente pronunciados en sitios WooCommerce de alto tráfico.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Una base de datos ligera es una base de datos rápida. Al gestionar estrictamente tus tablas &lt;code&gt;wp_options&lt;/code&gt; y &lt;code&gt;wp_postmeta&lt;/code&gt; en 2026, aseguras que tu sitio WordPress escale elegantemente y permanezca competitivo en la carrera de Core Web Vitals.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; para mantener tu base de datos optimizada de forma continua.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tu base de datos te esta frenando? Limpia el bloat hoy.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>performance</category><category domain="tag">database</category><category domain="tag">sql</category><category domain="tag">mariadb</category><category domain="tag">optimization</category><category domain="tag">backend</category><enclosure url="https://wppoland.com/images/og/wordpress-debloat-optimization-guide.jpg" type="image/jpeg"/></item><item><title>Reduciendo el impacto de scripts de terceros en WordPress 2026</title><link>https://wppoland.com/es/reducing-third-party-script-impact-wordpress-2026-guide/</link><guid isPermaLink="true">https://wppoland.com/es/reducing-third-party-script-impact-wordpress-2026-guide/</guid><description>Los scripts de terceros son el enemigo silencioso del rendimiento WordPress. Esta guía cubre estrategias avanzadas para minimizar su impacto en Core Web Vitals en 2026.</description><pubDate>Fri, 15 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Los scripts de terceros son el enemigo silencioso del rendimiento WordPress. Mientras usted optimiza imágenes y habilita cache, Google Analytics, Facebook Pixel, Hotjar, Intercom y docenas de otros scripts estan bloqueando el hilo principal de su navegador, degradando INP, inflando LCP y frustrando a sus usuarios móviles. En 2026, con Core Web Vitals como señal de ranking directa, cada milisegundo cuenta.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía proporciona estrategias prácticas y código real para minimizar el impacto de scripts de terceros sin perder la funcionalidad que proporcionan.&lt;/p&gt;
&lt;h2 id=&quot;1-el-problema-scripts-de-terceros-y-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-problema-scripts-de-terceros-y-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El problema: Scripts de terceros y Core Web Vitals&lt;/h2&gt;
&lt;h3 id=&quot;cuanto-cuestan-los-scripts-de-terceros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuanto-cuestan-los-scripts-de-terceros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuanto cuestan los scripts de terceros&lt;/h3&gt;
&lt;p&gt;Un sitio WordPress tipico en 2026 carga entre 5 y 20 scripts de terceros. Cada uno consume recursos del navegador:&lt;/p&gt;

































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Script&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Tamaño tipico&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;TBT adicional (móvil)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Impacto en INP&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Google Analytics 4&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;45-80 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-200ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo-Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Google Tag Manager&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;80-150 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-400ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Facebook Pixel&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;60-100 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;150-300ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hotjar&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-200 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-500ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Intercom&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-400 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;300-800ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Recaptcha v3&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;150-300 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-500ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;YouTube embed&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;500-800 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;300-600ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Google Maps embed&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;600-1000 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;400-800ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total acumulado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1.7-3 MB&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1.8-4.1s&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Crítico&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Estos números son mediciones reales en dispositivos móviles de gama media. El impacto acumulado es devastador: un sitio WordPress que seria rápido (PageSpeed 95+) puede caer a PageSpeed 50-70 simplemente por los scripts de terceros.&lt;/p&gt;
&lt;h3 id=&quot;por-que-los-scripts-de-terceros-son-tan-daninos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-scripts-de-terceros-son-tan-daninos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los scripts de terceros son tan daninos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bloquean el hilo principal&lt;/strong&gt;: JavaScript es single-threaded. Mientras un script de terceros se ejecuta, el navegador no puede responder a interacciones del usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cadenas de descarga&lt;/strong&gt;: Un script carga otros scripts que cargan otros scripts. Google Tag Manager es el peor ejemplo: un contenedor GTM puede disparar 10-20 solicitudes adicionales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recursos compartidos&lt;/strong&gt;: Compiten por CPU, memoria y ancho de banda con su propio código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin control&lt;/strong&gt;: Usted no controla el código de terceros. Puede cambiar sin aviso, ralentizarse o fallar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;2-auditoria-de-scripts-de-terceros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-auditoria-de-scripts-de-terceros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Auditoria de scripts de terceros&lt;/h2&gt;
&lt;p&gt;Antes de optimizar, necesita saber exactamente que esta cargando y cuanto cuesta.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-auditoria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-auditoria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de auditoria&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Chrome DevTools - Network panel:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abra DevTools (F12)&lt;/li&gt;
&lt;li&gt;Vaya a la pestana Network&lt;/li&gt;
&lt;li&gt;Filtre por “JS” y “third-party”&lt;/li&gt;
&lt;li&gt;Ordene por “Size” y “Time”&lt;/li&gt;
&lt;li&gt;Identifique los scripts más pesados&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Chrome DevTools - Performance panel:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Registre una carga de página con throttling móvil&lt;/li&gt;
&lt;li&gt;Busque “Long Tasks” (tareas &gt; 50ms)&lt;/li&gt;
&lt;li&gt;Identifique que scripts causan las tareas más largas&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;WebPageTest:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ejecute una prueba con “Mobile - Emerging Markets” como perfil&lt;/li&gt;
&lt;li&gt;Revise el waterfall para identificar scripts bloqueantes&lt;/li&gt;
&lt;li&gt;Use la vista “Opportunities” para priorizar&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;clasificación-de-scripts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#clasificación-de-scripts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Clasificación de scripts&lt;/h3&gt;
&lt;p&gt;Clasifique cada script en tres categorías:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Crítico (cargar inmediatamente):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scripts que afectan al renderizado visible (fuentes, CSS crítico)&lt;/li&gt;
&lt;li&gt;Scripts de funcionalidad esencial (formularios de pago, autenticación)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Importante (cargar despues del LCP):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analytics (GA4, Matomo)&lt;/li&gt;
&lt;li&gt;Seguimiento de conversiones&lt;/li&gt;
&lt;li&gt;A/B testing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;No crítico (cargar al interactuar):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chat en vivo (Intercom, Tidio)&lt;/li&gt;
&lt;li&gt;Mapas (Google Maps)&lt;/li&gt;
&lt;li&gt;Videos (YouTube, Vimeo)&lt;/li&gt;
&lt;li&gt;Widgets de redes sociales&lt;/li&gt;
&lt;li&gt;Hotjar/FullStory&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-estrategias-de-carga-diferida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-estrategias-de-carga-diferida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Estrategias de carga diferida&lt;/h2&gt;
&lt;h3 id=&quot;estrategia-1-carga-basada-en-interacción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-1-carga-basada-en-interacción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 1: Carga basada en interacción&lt;/h3&gt;
&lt;p&gt;El enfoque más efectivo: no cargar scripts no críticos hasta que el usuario interactue con la página.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cargar scripts al primer toque/scroll/clic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loadDeferredScripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (window._deferredScriptsLoaded) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  window._deferredScriptsLoaded &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Google Analytics 4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ga&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ga.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ga.async &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  document.head.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(ga);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Facebook Pixel&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; fb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  fb.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://connect.facebook.net/en_US/fbevents.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  fb.async &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  document.head.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(fb);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Hotjar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; hj&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  hj.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://static.hotjar.com/c/hotjar-XXXXX.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  hj.async &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  document.head.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(hj);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Triggers de carga&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;scroll&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;touchstart&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mouseover&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;keydown&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  window.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(event, loadDeferredScripts, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    once: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    passive: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Fallback: cargar despues de 5 segundos de inactividad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setTimeout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(loadDeferredScripts, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultado tipico&lt;/strong&gt;: Reduccion del TBT móvil en 60-80%.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-2-carga-condicional-por-página&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-2-carga-condicional-por-página&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 2: Carga condicional por página&lt;/h3&gt;
&lt;p&gt;No todas las páginas necesitan todos los scripts. Cargue scripts solo donde son necesarios:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cargar scripts condicionalmente en WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; conditional_script_loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Chat solo en páginas de contacto y producto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;intercom&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;...&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Google Maps solo en página de ubicacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;google-maps&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;...&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Recaptcha solo en páginas con formularios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;registro&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;checkout&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;recaptcha&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;...&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Hotjar solo en la home y landing pages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_front_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_page_template&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;landing-page.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hotjar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;...&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;conditional_script_loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estrategia-3-facade-patterns-fachadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-3-facade-patterns-fachadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 3: Facade patterns (fachadas)&lt;/h3&gt;
&lt;p&gt;Para widgets pesados como YouTube, Google Maps o chat, use una fachada: una imagen o boton ligero que solo carga el widget completo al hacer clic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;YouTube facade:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- En lugar de un iframe de YouTube (800KB+) --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;youtube-facade&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; data-video-id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;XXXXX&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;     style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;background-image: url(&apos;/images/youtube-thumb-XXXXX.jpg&apos;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            cursor: pointer; aspect-ratio: 16/9;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;play-button&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; aria-label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Reproducir video&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Icono de play --&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.youtube-facade&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  el.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; iframe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;iframe&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    iframe.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; `https://www.youtube.com/embed/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;dataset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;videoId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}?autoplay=1`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    iframe.allow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;autoplay; encrypted-media&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    iframe.allowFullscreen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    el.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;replaceWith&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(iframe);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }, { once: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ahorro&lt;/strong&gt;: 500-800 KB de JavaScript y 300-600ms de TBT por cada embed de YouTube.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-4-web-workers-para-analytics&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-4-web-workers-para-analytics&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 4: Web Workers para analytics&lt;/h3&gt;
&lt;p&gt;Los Web Workers ejecutan JavaScript en un hilo separado, sin bloquear el hilo principal:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mover analytics a un Web Worker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// worker-analytics.js&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;self.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;message&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; event.data;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;pageview&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Enviar pageview a GA4 via Measurement Protocol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://www.google-analytics.com/mp/collect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      body: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        clientes_id: data.clientesId,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        events: [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          name: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;page_view&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          params: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            page_location: data.url,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            page_title: data.title,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En la página principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; analyticsWorker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Worker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/worker-analytics.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;analyticsWorker.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;postMessage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  type: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pageview&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  data: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    clientesId: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getClientId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    url: window.location.href,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    title: document.title,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Impacto&lt;/strong&gt;: El analytics se ejecuta sin afectar INP ni TBT.&lt;/p&gt;
&lt;h2 id=&quot;4-alternativas-ligeras-a-scripts-pesados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-alternativas-ligeras-a-scripts-pesados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Alternativas ligeras a scripts pesados&lt;/h2&gt;
&lt;h3 id=&quot;google-analytics---plausible--fathom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-analytics---plausible--fathom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Analytics -&gt; Plausible / Fathom&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Google Analytics 4&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Plausible&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tamaño del script&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;45-80 KB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 1 KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Solicitudes adicionales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5-10&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Impacto TBT&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-200ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 5ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Cookies&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (requiere banner RGPD)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Funcionalidad&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Completa&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Esencial&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para sitios donde no necesita las funcionalidades avanzadas de GA4, Plausible o Fathom ofrecen analytics básicas con impacto de rendimiento practicamente nulo y sin necesidad de banner de cookies.&lt;/p&gt;
&lt;h3 id=&quot;recaptcha-v3---hcaptcha--turnstile&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recaptcha-v3---hcaptcha--turnstile&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recaptcha v3 -&gt; hCaptcha / Turnstile&lt;/h3&gt;
&lt;p&gt;Google Recaptcha v3 es notoriamente pesado (150-300 KB). Alternativas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Turnstile&lt;/strong&gt;: Invisible, ligero (&amp;#x3C; 20 KB), gratuito&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;hCaptcha&lt;/strong&gt;: Privacidad primero, más ligero que Recaptcha&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;intercom---crisp--tawkto-ligero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#intercom---crisp--tawkto-ligero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Intercom -&gt; Crisp / Tawk.to (ligero)&lt;/h3&gt;
&lt;p&gt;Intercom carga 200-400 KB de JavaScript. Alternativas más ligeras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Crisp&lt;/strong&gt;: Widget de chat con &amp;#x3C; 50 KB de carga inicial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tawk.to&lt;/strong&gt;: Gratuito y relativamente ligero&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Implementación en WordPress&lt;/h2&gt;
&lt;h3 id=&quot;plugin-de-optimización-de-scripts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugin-de-optimización-de-scripts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugin de optimización de scripts&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Diferir scripts de terceros automáticamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defer_third_party_scripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tag, $handle, $src) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Lista de scripts a diferir&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $defer_scripts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;google-analytics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;facebook-pixel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;hotjar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;intercom&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($handle, $defer_scripts)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Reemplazar con carga diferida&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; src=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; defer src=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $tag);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tag;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script_loader_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;defer_third_party_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;monitoreo-continuo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-continuo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo continuo&lt;/h3&gt;
&lt;p&gt;Configure alertas que le notifiquen cuando un script de terceros degrada el rendimiento:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Monitorear impacto de scripts via API de CrUX&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; check_cwv_regression&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $crux_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_crux_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($crux_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;inp_p75&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_mail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;Alerta: INP degradado&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &quot;INP P75 actual: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$crux_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;inp_p75&apos;]}ms. Revise scripts de terceros.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;daily_cwv_check&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;check_cwv_regression&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-resultados-esperados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-resultados-esperados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Resultados esperados&lt;/h2&gt;
&lt;h3 id=&quot;antes-vs-despues-de-optimización-de-scripts-de-terceros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#antes-vs-despues-de-optimización-de-scripts-de-terceros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Antes vs. despues de optimización de scripts de terceros&lt;/h3&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Antes&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Despues&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejora&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;PageSpeed móvil&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;62&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;94&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+52%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;TBT&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.8s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.3s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-83%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;INP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;380ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;95ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-75%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;LCP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.8s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.4s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-50%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Scripts de terceros cargados inmediatamente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;12&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-83%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tamaño total JS de terceros&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.1 MB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.3 MB (diferido)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-86%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Estos resultados se traducen directamente en mejores posiciones SEO, mayor tasa de conversión y mejor experiencia de usuario, especialmente en dispositivos móviles donde el impacto es más pronunciado.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Los scripts de terceros son el mayor obstaculo para el rendimiento WordPress en 2026. La buena noticia es que las estrategias de mitigacion son efectivas y relativamente simples de implementar. La carga diferida basada en interacción, las fachadas para widgets pesados y las alternativas ligeras pueden recuperar 60-80% del rendimiento perdido sin sacrificar funcionalidad.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para auditar y optimizar los scripts de terceros de su sitio WordPress, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; ofrece servicios especializados de &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; que incluyen auditoria completa de scripts de terceros.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Servicio completo&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress&lt;/a&gt; - Implementación de optimizaciones&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad&lt;/a&gt; - Scripts de terceros y seguridad&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; - Impacto de rendimiento en posicionamiento&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>performance</category><category>development</category><category domain="tag">third-party-scripts</category><category domain="tag">core-web-vitals</category><category domain="tag">wordpress-performance</category><category domain="tag">javascript-optimization</category><category domain="tag">inp-optimization</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>SEO WordPress para 2026: Dominando E-E-A-T y la búsqueda con IA</title><link>https://wppoland.com/es/wordpress-seo-2026-eeat-ai-search-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-seo-2026-eeat-ai-search-guide/</guid><description>El SEO ha cambiado. Las palabras clave quedaron atrás; las Entidades son lo que importa. Esta guía de más de 2000 palabras revela cómo optimizar WordPress para Google SGE, ChatGPT y los nuevos estándares E-E-A-T.</description><pubDate>Fri, 15 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En la época dorada del blogging (alrededor de 2015), el SEO era un juego de números. Mencionabas una palabra clave las veces suficientes, construías unos cuantos backlinks y posicionabas.&lt;/p&gt;
&lt;p&gt;En 2026, ese juego ha terminado. El auge de la &lt;strong&gt;Búsqueda con IA&lt;/strong&gt; (Google SGE, ChatGPT Search, Perplexity) y la avalancha de contenido generado por inteligencia artificial han obligado a los motores de búsqueda a cambiar fundamentalmente cómo clasifican el valor.&lt;/p&gt;
&lt;p&gt;Hoy, no estás optimizando para un rastreador que cuenta palabras. Estás optimizando para una Red Neuronal que comprende conceptos. El nuevo campo de batalla es &lt;strong&gt;E-E-A-T&lt;/strong&gt; (Experiencia, Expertise, Autoridad, Confiabilidad).&lt;/p&gt;
&lt;p&gt;Esta guía integral (más de 2500 palabras) detalla exactamente cómo configurar tu sitio WordPress para prosperar en el panorama de 2026.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-el-cambio-de-palabras-clave-a-entidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-cambio-de-palabras-clave-a-entidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El cambio: De palabras clave a entidades&lt;/h2&gt;
&lt;p&gt;Durante dos décadas, nos entrenamos para pensar en “Palabras Clave”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;La forma antigua&lt;/em&gt;: “Mejores zapatillas para correr” (Repetir 5 veces).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;La forma nueva (2026)&lt;/em&gt;: La &lt;strong&gt;Entidad&lt;/strong&gt; “Zapatilla de Running” y su relación con “Entrenamiento de Maratón”, “Soporte del Arco” y “Nike”.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;qué-es-el-seo-basado-en-entidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-el-seo-basado-en-entidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué es el SEO basado en entidades?&lt;/h3&gt;
&lt;p&gt;Los motores de búsqueda ahora construyen un &lt;strong&gt;Grafo de Conocimiento&lt;/strong&gt;. Entienden que “Mariusz” (Persona) es el “Autor” de “Post 50” (Artículo) que pertenece a “WPPoland” (Organización).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo implementarlo en WordPress&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deja de hacer keyword stuffing&lt;/strong&gt;: Te perjudica. Escribe de forma natural.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlazado Interno&lt;/strong&gt;: Conecta conceptos relacionados. Si escribes sobre “WordPress Headless”, enlaza a “Desarrollo de APIs”. Esto define la relación entre temas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa sustantivos específicos&lt;/strong&gt;: En lugar de “la herramienta”, di “WP-CLI”. La precisión construye confianza en las entidades.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-e-e-a-t-la-era-de-la-experiencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-e-e-a-t-la-era-de-la-experiencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. E-E-A-T: La era de la “experiencia”&lt;/h2&gt;
&lt;p&gt;Google añadió una “E” extra por &lt;strong&gt;Experiencia&lt;/strong&gt;. ¿Por qué? Para eliminar el contenido de IA.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IA&lt;/strong&gt;: Puede resumir las especificaciones de una cámara.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Humano&lt;/strong&gt;: Puede contarte cómo la cámara se siente pesada después de 3 horas de senderismo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Esa experiencia específica y subjetiva es ahora un factor de ranking masivo.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;demostrando-experiencia-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#demostrando-experiencia-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Demostrando experiencia en WordPress&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Biografías de Autor&lt;/strong&gt;: Cada publicación debe tener un cuadro de autor robusto. Enlaza a LinkedIn. Muestra credenciales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medios Originales&lt;/strong&gt;: Las fotos de stock son neutrales. Las fotos originales (incluso las malas tomadas con un teléfono) son una señal fuerte de presencia física.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Narrativa en Primera Persona&lt;/strong&gt;: Usa “Yo”, “Nosotros” y “Nuestras pruebas mostraron…”. La voz pasiva es la marca distintiva del contenido de IA.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-seo-técnico-para-ia-schemaorg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-seo-técnico-para-ia-schemaorg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. SEO técnico para IA (Schema.org)&lt;/h2&gt;
&lt;p&gt;Los bots de IA (LLMs) no “leen” páginas como los humanos. Extraen datos. Los &lt;strong&gt;Datos Estructurados&lt;/strong&gt; (JSON-LD) son la forma en que les proporcionas esos datos directamente.&lt;/p&gt;
&lt;h3 id=&quot;schema-obligatorio-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-obligatorio-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema obligatorio en 2026&lt;/h3&gt;
&lt;p&gt;Usando un plugin como &lt;strong&gt;SEO Framework&lt;/strong&gt; o &lt;strong&gt;RankMath&lt;/strong&gt;, debes implementar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Schema de Article&lt;/strong&gt;: Con &lt;code&gt;author&lt;/code&gt; y &lt;code&gt;datePublished&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema de Organization&lt;/strong&gt;: Define el logo de tu marca y perfiles sociales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema de FAQ&lt;/strong&gt;: Si haces una pregunta, envuelve la respuesta en schema. Así es como llegas a los resultados del “AI Snapshot”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema de ProfilePage&lt;/strong&gt;: Para tus archivos de autor.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Article&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;headline&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;SEO WordPress 2026&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;author&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Person&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Mariusz Szatkowski&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;jobTitle&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Lead Developer&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-el-foso-de-contenido-autoridad-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-el-foso-de-contenido-autoridad-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. El foso de contenido: Autoridad temática&lt;/h2&gt;
&lt;p&gt;Ya no puedes ser generalista. Los sitios de nicho ganan.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Foso&lt;/strong&gt;: Un cluster de más de 50 artículos interconectados cubriendo &lt;em&gt;cada aspecto individual&lt;/em&gt; de un tema estrecho.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ejemplo&lt;/strong&gt;: No escribas sobre “Desarrollo Web”. Escribe sobre “Arquitecturas Headless WordPress Empresariales para Fintech”.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estructurando-clusters-de-contenido-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructurando-clusters-de-contenido-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructurando clusters de contenido en WordPress&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Página Pilar&lt;/strong&gt;: Una visión general amplia (por ejemplo, “Guía Completa de WP Headless”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido del Cluster&lt;/strong&gt;: 20 publicaciónes específicas enlazando de vuelta al Pilar (por ejemplo, “Next.js vs Astro”, “Seguridad Headless”, “Tutorial de Faust.js”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El Resultado&lt;/strong&gt;: Google te ve como la autoridad definitiva en esa porción estrecha del conocimiento.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-búsqueda-por-voz-y-conversacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-búsqueda-por-voz-y-conversacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Búsqueda por voz y conversacional&lt;/h2&gt;
&lt;p&gt;Las personas hablan con sus computadoras ahora. “Oye Google, ¿cómo aseguro mi sitio WP?”&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preguntas Long-Tail&lt;/strong&gt;: Tus encabezados H2 deberían ser preguntas literales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respuestas Directas&lt;/strong&gt;: El párrafo inmediatamente después del H2 debería ser una respuesta directa y concisa de 40 palabras. Esto es optimización de “Posición Zero”.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-el-rendimiento-es-seo-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-el-rendimiento-es-seo-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. El rendimiento &lt;em&gt;es&lt;/em&gt; SEO (Core Web Vitals)&lt;/h2&gt;
&lt;p&gt;Lo cubrimos antes, pero vale la pena repetirlo: &lt;strong&gt;LCP&lt;/strong&gt; e &lt;strong&gt;INP&lt;/strong&gt; son factores de ranking.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si tu sitio tarda 3 segundos en cargar, el rastreador de IA podría agotar el tiempo de espera antes de indexar tus datos semánticos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile First&lt;/strong&gt;: Google &lt;em&gt;solo&lt;/em&gt; indexa la versión móvil de tu sitio. Si el contenido está oculto en móvil vía CSS, no existe.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-el-futuro-optimización-para-motores-de-respuesta-aeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-futuro-optimización-para-motores-de-respuesta-aeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El futuro: “Optimización para motores de respuesta” (AEO)&lt;/h2&gt;
&lt;p&gt;Estamos pasando de Motores de Búsqueda (encontrar enlaces) a Motores de Respuesta (encontrar verdades).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tu Objetivo&lt;/strong&gt;: Ser la fuente que la IA cita.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cómo&lt;/strong&gt;: Sé factualmente preciso. Cita fuentes. Usa tablas de datos. La IA adora las tablas estructuradas porque son fáciles de procesar.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-estrategia-de-enlazado-interno-para-máxima-autoridad-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-estrategia-de-enlazado-interno-para-máxima-autoridad-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Estrategia de enlazado interno para máxima autoridad temática&lt;/h2&gt;
&lt;p&gt;El enlazado interno ha evolucionado más allá de simplemente conectar páginas entre sí. En 2026, tu estructura de enlaces internos es efectivamente un &lt;strong&gt;mapa semántico&lt;/strong&gt; que le dice a la IA exactamente cómo se relacionan tus temas.&lt;/p&gt;
&lt;h3 id=&quot;el-modelo-hub-and-spoke&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-modelo-hub-and-spoke&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El modelo Hub-and-Spoke&lt;/h3&gt;
&lt;p&gt;Piensa en tu sitio web como una rueda de bicicleta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Hub (centro)&lt;/strong&gt;: Tu página pilar principal sobre un tema amplio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los Spokes (radios)&lt;/strong&gt;: Artículos individuales del cluster que profundizan en subtemas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Llanta&lt;/strong&gt;: Enlaces cruzados entre artículos del cluster que crean un circuito cerrado&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implementación-práctica-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-práctica-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación práctica en WordPress&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Audita tu contenido existente&lt;/strong&gt;: Identifica todas las páginas que cubren temas relacionados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crea una matriz de enlaces&lt;/strong&gt;: Documenta qué páginas deberían enlazar a cuáles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa texto ancla descriptivo&lt;/strong&gt;: En lugar de “haz clic aquí”, usa “guía completa de &lt;a href=&quot;/es/wordpress-migration-complete-guide-2024/&quot;&gt;migración WordPress&lt;/a&gt;”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantén la jerarquía&lt;/strong&gt;: Las páginas pilar enlazan hacia abajo a los clusters; los clusters enlazan hacia arriba al pilar y horizontalmente entre sí&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;el-impacto-en-el-ranking&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-impacto-en-el-ranking&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El impacto en el ranking&lt;/h3&gt;
&lt;p&gt;Google utiliza los enlaces internos como una de sus principales señales para entender la &lt;strong&gt;relevancia temática&lt;/strong&gt; de una página. Un artículo que recibe 15 enlaces internos desde páginas temáticamente relacionadas tendrá significativamente más peso que un artículo con solo 2 enlaces internos.&lt;/p&gt;
&lt;p&gt;Estudios recientes muestran que sitios con una arquitectura de enlazado interno bien diseñada experimentan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hasta un 40% más de páginas indexadas&lt;/li&gt;
&lt;li&gt;Tiempos de rastreo un 25% más eficientes&lt;/li&gt;
&lt;li&gt;Mejoras del 15-20% en posiciones de ranking promedio&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-contenido-que-los-llms-pueden-citar-el-arte-del-dato-estructurado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-contenido-que-los-llms-pueden-citar-el-arte-del-dato-estructurado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Contenido que los LLMs pueden citar: El arte del dato estructurado&lt;/h2&gt;
&lt;p&gt;Los grandes modelos de lenguaje (LLMs) como ChatGPT, Gemini y Perplexity tienen una necesidad fundamental: &lt;strong&gt;fuentes citables&lt;/strong&gt;. Cuando un usuario pregunta “¿cómo optimizo WordPress para SEO en 2026?”, la IA busca contenido que pueda citar con confianza.&lt;/p&gt;
&lt;h3 id=&quot;qué-hace-que-tu-contenido-sea-citable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hace-que-tu-contenido-sea-citable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué hace que tu contenido sea “citable”?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Declaraciones factísticas claras&lt;/strong&gt;: “WordPress impulsa el 43% de la web” es citable. “WordPress es muy popular” no lo es.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos con contexto temporal&lt;/strong&gt;: “En 2026, el LCP promedio de sitios WordPress optimizados es de 0.8 segundos” proporciona un hecho verificable y actualizado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listas estructuradas&lt;/strong&gt;: Los LLMs procesan listas con extrema facilidad. Cuando presentas información en formato de lista, aumentas dramáticamente las probabilidades de ser citado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tablas de comparación&lt;/strong&gt;: Si comparas herramientas, frameworks o estrategias, hazlo en tablas. Las tablas son el formato más fácil de procesar para cualquier modelo de IA.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;implementación-de-json-ld-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-de-json-ld-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación de JSON-LD avanzado&lt;/h3&gt;
&lt;p&gt;El schema básico ya no es suficiente. En 2026, necesitas implementar capas de datos estructurados que se refuercen mutuamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@graph&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Article&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;headline&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;SEO WordPress 2026&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;author&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Person&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Mariusz Szatkowski&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;sameAs&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          &quot;https://linkedin.com/in/mariusz-szatkowski&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          &quot;https://github.com/mariusz-szatkowski&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;publisher&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Organization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WPPoland&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;FAQPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;mainEntity&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Question&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;¿Las palabras clave siguen siendo importantes en 2026?&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;          &quot;acceptedAnswer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Answer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;El contexto es lo que manda. Enfocarse en cubrir un tema de forma integral es más importante que la densidad de palabras clave.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-auditoría-seo-práctica-para-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-auditoría-seo-práctica-para-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Auditoría SEO práctica para WordPress en 2026&lt;/h2&gt;
&lt;p&gt;No basta con conocer la teoría; necesitas un proceso sistemático para evaluar y mejorar el SEO de tu sitio WordPress. Aquí presentamos un framework de auditoría completo.&lt;/p&gt;
&lt;h3 id=&quot;fase-1-auditoría-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-auditoría-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Auditoría técnica&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Velocidad de carga&lt;/strong&gt;: Mide LCP, INP y CLS usando Lighthouse y PageSpeed Insights&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indexabilidad&lt;/strong&gt;: Verifica que robots.txt y sitemap.xml sean correctos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema markup&lt;/strong&gt;: Válida todos los datos estructurados con el Rich Results Test de Google&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile-first&lt;/strong&gt;: Comprueba que todo el contenido sea accesible y funcional en dispositivos móviles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Confirma HTTPS, HSTS y cabeceras de seguridad adecuadas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-auditoría-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-auditoría-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Auditoría de contenido&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cobertura temática&lt;/strong&gt;: ¿Estás cubriendo todos los subtemas relevantes de tu nicho?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frescura del contenido&lt;/strong&gt;: ¿Cuándo se actualizó por última vez cada artículo?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Señales de E-E-A-T&lt;/strong&gt;: ¿Cada artículo tiene un autor real con credenciales verificables?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad de los medios&lt;/strong&gt;: ¿Estás usando imágenes originales o solo fotos de stock?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profundidad del contenido&lt;/strong&gt;: ¿Tus artículos responden exhaustivamente a la intención de búsqueda?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-3-auditoría-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-auditoría-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Auditoría de enlaces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estructura de enlazado interno&lt;/strong&gt;: ¿Tus páginas pilar reciben suficientes enlaces desde los clusters?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces rotos&lt;/strong&gt;: Identifica y corrige todos los enlaces 404&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfil de backlinks&lt;/strong&gt;: Analiza la calidad y diversidad de los enlaces entrantes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Texto ancla&lt;/strong&gt;: ¿Estás usando texto ancla variado y descriptivo?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-4-auditoría-para-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-auditoría-para-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Auditoría para IA&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Citabilidad&lt;/strong&gt;: ¿Tu contenido contiene hechos claros y verificables?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM Card&lt;/strong&gt;: ¿Has implementado metadatos específicos para que los LLMs comprendan tu contenido?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respuestas directas&lt;/strong&gt;: ¿Los primeros párrafos después de cada H2 proporcionan respuestas concisas?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos estructurados avanzados&lt;/strong&gt;: ¿Estás usando @graph para conectar múltiples tipos de schema?&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;11-herramientas-esenciales-para-seo-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-herramientas-esenciales-para-seo-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;11. Herramientas esenciales para SEO WordPress en 2026&lt;/h2&gt;
&lt;p&gt;El stack de herramientas SEO ha evolucionado significativamente. Aquí están las herramientas que consideramos indispensables para cualquier estrategia SEO seria en WordPress:&lt;/p&gt;
&lt;h3 id=&quot;para-análisis-y-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-análisis-y-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para análisis y monitoreo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;: Sigue siendo la fuente de verdad para datos de rendimiento de búsqueda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahrefs/Semrush&lt;/strong&gt;: Para análisis de competencia y oportunidades de palabras clave basadas en entidades&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screaming Frog&lt;/strong&gt;: Para auditorías técnicas exhaustivas del sitio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;para-datos-estructurados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-datos-estructurados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para datos estructurados&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Schema Pro o RankMath&lt;/strong&gt;: Para implementación automatizada de schema en WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rich Results Test de Google&lt;/strong&gt;: Para validar tus datos estructurados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema Markup Validator&lt;/strong&gt;: Para verificar la sintaxis JSON-LD&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;para-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para rendimiento&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PageSpeed Insights&lt;/strong&gt;: Para análisis de Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebPageTest&lt;/strong&gt;: Para pruebas detalladas de rendimiento desde múltiples ubicaciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lighthouse CI&lt;/strong&gt;: Para integrar pruebas de rendimiento en tu flujo de CI/CD&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;para-contenido-y-e-e-a-t&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-contenido-y-e-e-a-t&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para contenido y E-E-A-T&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clearscope o Surfer SEO&lt;/strong&gt;: Para optimización de contenido basada en entidades&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MarketMuse&lt;/strong&gt;: Para análisis de cobertura temática y gap de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Originality.ai&lt;/strong&gt;: Para detectar contenido generado por IA en tu propio sitio&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;12-errores-seo-comunes-en-wordpress-que-debes-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#12-errores-seo-comunes-en-wordpress-que-debes-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;12. Errores SEO comunes en WordPress que debes evitar&lt;/h2&gt;
&lt;p&gt;Incluso los profesionales experimentados cometen errores. Estos son los más frecuentes que vemos en auditorías de sitios WordPress en 2026:&lt;/p&gt;
&lt;h3 id=&quot;error-1-schema-incorrecto-o-duplicado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-1-schema-incorrecto-o-duplicado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 1: Schema incorrecto o duplicado&lt;/h3&gt;
&lt;p&gt;Muchos sitios implementan múltiples plugins de SEO que generan schema conflictivo. El resultado son datos estructurados duplicados o contradictorios que confunden a los motores de búsqueda. La solución es usar una única fuente de verdad para todos tus datos estructurados.&lt;/p&gt;
&lt;h3 id=&quot;error-2-ignorar-la-experiencia-del-usuario-en-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-2-ignorar-la-experiencia-del-usuario-en-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 2: Ignorar la experiencia del usuario en móvil&lt;/h3&gt;
&lt;p&gt;Con la indexación mobile-first, cualquier contenido o funcionalidad que no esté disponible en móvil es efectivamente invisible para Google. Esto incluye menús desplegables complejos, tablas que no son responsivas y contenido oculto detrás de acordeones.&lt;/p&gt;
&lt;h3 id=&quot;error-3-contenido-huérfano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-3-contenido-huérfano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 3: Contenido huérfano&lt;/h3&gt;
&lt;p&gt;Las páginas que no reciben ningún enlace interno son “huérfanas” a los ojos de los motores de búsqueda. Cada página de tu sitio debería recibir al menos 3-5 enlaces internos desde páginas temáticamente relevantes.&lt;/p&gt;
&lt;h3 id=&quot;error-4-velocidad-de-carga-deficiente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-4-velocidad-de-carga-deficiente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 4: Velocidad de carga deficiente&lt;/h3&gt;
&lt;p&gt;Un LCP superior a 2.5 segundos sigue siendo uno de los mayores obstáculos para el posicionamiento. En WordPress, las causas más comunes son: imágenes sin optimizar, demasiados plugins, hosting compartido de baja calidad y falta de caché a nivel de servidor.&lt;/p&gt;
&lt;h3 id=&quot;error-5-no-actualizar-el-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-5-no-actualizar-el-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 5: No actualizar el contenido&lt;/h3&gt;
&lt;p&gt;El contenido estático pierde relevancia rápidamente. Google premia el contenido que se actualiza regularmente con información fresca y relevante. Establece un calendario de revisión para tus artículos más importantes y actualízalos al menos trimestralmente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;13-conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#13-conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;13. Conclusión&lt;/h2&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO, GEO y AEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;El SEO en 2026 es más difícil, pero más justo. Penaliza el spam y recompensa la experiencia genuina. Si eres un experto real construyendo una marca real con WordPress, este es tu momento de ejecutar.&lt;/p&gt;
&lt;p&gt;La convergencia de la búsqueda tradicional con los motores de respuesta basados en IA ha creado un nuevo paradigma donde la calidad, la autenticidad y la estructura de datos son los pilares fundamentales. Los sitios que dominen estos tres aspectos no solo posicionarán bien en Google, sino que serán citados por ChatGPT, Gemini y Perplexity como fuentes de autoridad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Tu estrategia de contenido está anclada en 2020? Deja que WPPoland audite tu Grafo de Entidades.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>seo</category><category domain="tag">seo-2026</category><category domain="tag">e-e-a-t</category><category domain="tag">ai-search</category><category domain="tag">schema-markup</category><category domain="tag">content-strategy</category><enclosure url="https://wppoland.com/images/og/software-developers-networking.jpg" type="image/jpeg"/></item><item><title>Desarrollo API-First en WordPress: Conectando WordPress a todo en 2026</title><link>https://wppoland.com/es/wordpress-api-first-development-2026-integration-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-api-first-development-2026-integration-guide/</guid><description>En 2026, WordPress ya no es solo un CMS, es un motor API. Esta guía de más de 2500 palabras explora como construir aplicaciones API-first con WordPress.</description><pubDate>Mon, 11 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, la percepcion de WordPress ha cambiado fundamentalmente. Ya no se ve simplemente como un motor de blogs o un constructor de páginas; ha madurado hasta convertirse en un poderoso &lt;strong&gt;Motor API&lt;/strong&gt;. Un enfoque “API-First” significa que el nucleo de su implementación WordPress es la &lt;strong&gt;estructura de datos y su accesibilidad&lt;/strong&gt;, no el tema visual.&lt;/p&gt;
&lt;p&gt;Para empresas, WordPress frecuentemente sirve como el “Hub de Contenido” que alimenta un sitio web principal, una aplicación móvil y diversas herramientas internas. Para prosperar en este ecosistema, los desarrolladores deben ir más alla de &lt;code&gt;wp_head()&lt;/code&gt; y &lt;code&gt;wp_footer()&lt;/code&gt; y dominar el arte de la &lt;strong&gt;orquestacion de datos headless&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En esta guía de más de 2500 palabras, exploramos las estrategias y tecnologías detras del WordPress API-First en 2026.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-que-es-wordpress-api-first&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-que-es-wordpress-api-first&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Que es WordPress API-First?&lt;/h2&gt;
&lt;p&gt;El desarrollo tradicional comienza con un diseño PSD/Figma y construye un tema alrededor de el. El desarrollo API-First comienza con &lt;strong&gt;tipos personalizados y endpoints&lt;/strong&gt;. Este cambio de paradigma tiene implicaciones profundas para la arquitectura, escalabilidad y mantenibilidad del sistema.&lt;/p&gt;
&lt;h3 id=&quot;el-contrato-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-contrato-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El contrato de datos&lt;/h3&gt;
&lt;p&gt;Usted define exactamente como los datos (posts, productos, usuarios) seran estructurados y expuestos al mundo. Este “contrato” es la base sobre la que se construye todo lo demas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de contrato de datos:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;endpoint&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/wp-json/v1/products&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;method&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;GET&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;response&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;integer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;string (max: 200)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;price&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;float (2 decimals)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;currency&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;string (ISO 4217)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;categories&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;array&amp;#x3C;string&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;availability&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;enum: in_stock|out_of_stock|preorder&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;seo_title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;string (max: 60)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;seo_description&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;string (max: 160)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;independencia-del-backend&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#independencia-del-backend&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Independencia del backend&lt;/h3&gt;
&lt;p&gt;Una vez que la API esta lista, su equipo React, su equipo Movil y su equipo SEO pueden trabajar todos en paralelo usando la misma fuente de datos. Esta paralelizacion reduce dramaticamente los tiempos de desarrollo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Equipos trabajando en paralelo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frontend web&lt;/strong&gt;: Consume la API para renderizar el sitio con Astro/Next.js&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App móvil&lt;/strong&gt;: Usa los mismos endpoints para Flutter/React Native&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Marketing&lt;/strong&gt;: Accede a datos via API para personalización y analytics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: Utiliza la API para generación automática de schema y sitemaps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integraciones&lt;/strong&gt;: Conecta con CRM, ERP y herramientas de terceros&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-dominando-endpoints-rest-api-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-dominando-endpoints-rest-api-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Dominando endpoints REST API personalizados&lt;/h2&gt;
&lt;p&gt;Mientras la API REST predeterminada de WordPress cubre el 80% de las necesidades, los proyectos empresariales requieren &lt;strong&gt;lógica personalizada&lt;/strong&gt; que optimice las consultas y proteja los datos sensibles.&lt;/p&gt;
&lt;h3 id=&quot;aislamiento-de-lógica-de-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aislamiento-de-lógica-de-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aislamiento de lógica de negocio&lt;/h3&gt;
&lt;p&gt;En lugar de hacer 10 solicitudes para obtener el historial de compras de un usuario, construimos un único endpoint &lt;code&gt;wp-json/v1/user-commerce&lt;/code&gt; que retorna todo en un objeto JSON optimizado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación de endpoint personalizado:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_api_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_rest_route&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;v1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/user-commerce/(?P&amp;#x3C;id&gt;\d+)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;methods&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;GET&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;get_user_commerce_data&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;permission_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;verify_api_token&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;args&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;validate_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($param) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; is_numeric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($param);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_user_commerce_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($request) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $user_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $request[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;orders&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_user_orders&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user_id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;subscriptions&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_user_subscriptions&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user_id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;loyalty_points&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_user_loyalty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user_id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;recommendations&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_ai_recommendations&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user_id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;validación-y-sanitizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#validación-y-sanitizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Validación y sanitizacion&lt;/h3&gt;
&lt;p&gt;Usamos las funciones nativas &lt;code&gt;register_rest_route&lt;/code&gt; para forzar validación estricta de entrada, asegurando que su API sea segura contra inyecciones maliciosas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capas de validación:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tipo de dato&lt;/strong&gt;: Cada parametro se válida contra su tipo esperado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rango&lt;/strong&gt;: Valores numericos se verifican contra limites minimos y maximos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formato&lt;/strong&gt;: Strings se validan contra patrones regex&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sanitizacion&lt;/strong&gt;: Toda entrada se sanitiza antes de procesamiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autorización&lt;/strong&gt;: Cada solicitud verifica permisos del token&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-wordpress-como-servicio-wpaas-el-content-mesh&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-wordpress-como-servicio-wpaas-el-content-mesh&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. WordPress como servicio (WPaaS): El Content Mesh&lt;/h2&gt;
&lt;p&gt;En 2026, las grandes organizaciónes adoptan una estrategia de “Content Mesh” donde WordPress es un nodo central en una red de servicios interconectados.&lt;/p&gt;
&lt;h3 id=&quot;sincronizacion-con-sistemas-externos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sincronizacion-con-sistemas-externos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sincronizacion con sistemas externos&lt;/h3&gt;
&lt;p&gt;WordPress no solo almacena contenido; lo sincroniza bidirecionalmente. Una actualización de un producto en su SAP ERP puede disparar una actualización de la API WordPress, que luego actualiza su tienda web y app móvil instantaneamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flujo de sincronizacion:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[SAP ERP] → webhook → [WordPress API] → webhook → [Frontend Astro]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                       → webhook → [App Movil Flutter]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                       → webhook → [CRM Salesforce]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;webhooks-y-eventos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webhooks-y-eventos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webhooks y eventos&lt;/h3&gt;
&lt;p&gt;Usamos hooks basados en eventos para notificar servicios externos cuando se pública un post o se registra un usuario, creando un flujo de datos fluido a través de todo el stack corporativo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación de webhooks:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Disparar webhook cuando se publica contenido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;transition_post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($new, $old, $post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($new &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $old &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $payload &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;event&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;content_published&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_title,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;timestamp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Notificar a todos los suscriptores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $subscribers &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_webhook_subscribers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;content_published&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($subscribers &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $subscriber) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            wp_remote_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($subscriber[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;body&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($payload),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;headers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;application/json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;timeout&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;arquitectura-event-driven&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-event-driven&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura event-driven&lt;/h3&gt;
&lt;p&gt;En 2026, la arquitectura basada en eventos ha reemplazado las integraciones punto a punto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cola de mensajes&lt;/strong&gt;: Redis Streams o RabbitMQ como broker de eventos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procesamiento asincrono&lt;/strong&gt;: Los eventos se procesan en segundo plano sin afectar rendimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retry automático&lt;/strong&gt;: Los eventos fallidos se reintentan con backoff exponencial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dead letter queue&lt;/strong&gt;: Los eventos que fallan repetidamente se almacenan para investigación&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-rendimiento-headless-y-la-capa-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-rendimiento-headless-y-la-capa-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Rendimiento headless y la capa API&lt;/h2&gt;
&lt;p&gt;Una de las mayores quejas historicas sobre la API WordPress era su velocidad. En 2026, resolvemos esto con &lt;strong&gt;caching inteligente y multicapa&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;object-caching-redis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#object-caching-redis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Object Caching (Redis)&lt;/h3&gt;
&lt;p&gt;Almacenamos respuestas API en memoria para evitar repetir consultas SQL costosas. Cada endpoint tiene su propia estrategia de cache basada en la volatilidad de los datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de cache por tipo de endpoint:&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Endpoint&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;TTL Redis&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Invalidacion&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;/posts&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5 minutos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Al publicar/actualizar post&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;/products&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2 minutos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Al cambiar precio/stock&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;/menú&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1 hora&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Al editar menú&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;/settings&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;24 horas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Al cambiar opciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;/user-data&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0 (no cache)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Datos en tiempo real&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;edge-caching&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#edge-caching&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Edge Caching&lt;/h3&gt;
&lt;p&gt;Usando plataformas como Cloudflare, cacheamos la salida JSON en el edge de la red. Esto significa que un usuario en Madrid obtiene una respuesta API desde un servidor en Madrid en menos de 20ms.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cabeceras de cache para API:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_api_cache_headers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($response) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($response)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Cache-Control&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;public, max-age=300, stale-while-revalidate=60&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;CDN-Cache-Control&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;max-age=600&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Surrogate-Control&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;max-age=3600&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_post_dispatch&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_api_cache_headers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;graphql-como-alternativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#graphql-como-alternativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GraphQL como alternativa&lt;/h3&gt;
&lt;p&gt;Para consultas complejas, &lt;a href=&quot;/es/wordpress-rest-api-vs-graphql-2026/&quot;&gt;GraphQL via WPGraphQL&lt;/a&gt; elimina el over-fetching:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;graphql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ProductPage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;123&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    price&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    description&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    categories&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      slug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    relatedProducts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;first&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      thumbnail&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una sola consulta GraphQL reemplaza 4-5 llamadas REST separadas, reduciendo dramaticamente la latencia total.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-seguridad-en-un-mundo-api-abierto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-seguridad-en-un-mundo-api-abierto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Seguridad en un mundo API abierto&lt;/h2&gt;
&lt;p&gt;Abrir su sitio WordPress via API requiere una mentalidad “Security-First”. Cada endpoint expuesto es una superficie de ataque potencial que debe ser protegida proactivamente.&lt;/p&gt;
&lt;h3 id=&quot;tokens-con-alcance-limitado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tokens-con-alcance-limitado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tokens con alcance limitado&lt;/h3&gt;
&lt;p&gt;Otorgamos acceso de “Minimo Privilegio”. Un script de tracking podria tener un token que solo puede &lt;em&gt;leer&lt;/em&gt; datos, mientras que una herramienta de sincronizacion CRM tiene un token que puede &lt;em&gt;actualizar&lt;/em&gt; registros de usuario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Niveles de acceso por token:&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Token&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Permisos&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ejemplo de uso&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;read_public&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Solo lectura de contenido público&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Frontend web, CDN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;read_private&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Lectura de contenido privado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;App móvil autenticada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;write_content&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Crear/editar contenido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;CMS editorial&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;write_users&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gestionar usuarios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sincronizacion CRM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;admin&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Acceso completo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Solo administradores internos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;rate-limiting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rate-limiting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rate limiting&lt;/h3&gt;
&lt;p&gt;Para prevenir ataques DDoS en la API, implementamos limites de tasa estrictos (ej., 60 solicitudes por minuto por IP) a nivel de servidor.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Rate limiting básico via WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; api_rate_limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($result) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $ip &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REMOTE_ADDR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;rate_limit_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($ip);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($key);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 60&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;rate_limited&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;Demasiadas solicitudes. Intente de nuevo en 60 segundos.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 429&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($key, $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_pre_dispatch&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;api_rate_limit&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;seguridad-adicional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-adicional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad adicional&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CORS estricto&lt;/strong&gt;: Solo dominios autorizados pueden acceder a la API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cifrado en transito&lt;/strong&gt;: HTTPS obligatorio para todas las comunicaciones API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logging de acceso&lt;/strong&gt;: Cada solicitud API se registra para auditoria&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deteccion de anomalias&lt;/strong&gt;: Patrones de acceso inusuales activan alertas automáticas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rotacion de tokens&lt;/strong&gt;: Los tokens expiran y se renuevan automáticamente&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-wordpress-api-para-aplicaciones-móviles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-wordpress-api-para-aplicaciones-móviles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. WordPress API para aplicaciones móviles&lt;/h2&gt;
&lt;p&gt;En 2026, WordPress es el backend preferido para miles de aplicaciones móviles empresariales. Su API madura y su ecosistema de plugins lo hacen ideal para este caso de uso.&lt;/p&gt;
&lt;h3 id=&quot;arquitectura-móvil-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-móvil-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura móvil con WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[App Flutter/React Native]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[API Gateway (Cloudflare/Kong)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[WordPress REST API / GraphQL]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[MySQL + Redis + Elasticsearch]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;funcionalidades-móviles-soportadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#funcionalidades-móviles-soportadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Funcionalidades móviles soportadas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autenticación&lt;/strong&gt;: Login via OAuth 2.0 con soporte biometrico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notificaciones push&lt;/strong&gt;: Disparadas por eventos WordPress (nuevo contenido, respuesta a comentario)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sincronizacion offline&lt;/strong&gt;: Datos cacheados localmente con sincronizacion cuando hay conexión&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carga de medios&lt;/strong&gt;: Subida directa a S3 con procesamiento en segundo plano&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Búsqueda&lt;/strong&gt;: Elasticsearch para búsqueda rápida y relevante&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-para-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-para-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización para móvil&lt;/h3&gt;
&lt;p&gt;La API debe estar optimizada para las restricciones de dispositivos móviles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Respuestas compactas&lt;/strong&gt;: Solo los campos necesarios, sin over-fetching&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginación eficiente&lt;/strong&gt;: Cursor-based págination para listas largas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compresion&lt;/strong&gt;: gzip/brotli para reducir tamaño de transferencia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imágenes adaptativas&lt;/strong&gt;: URLs de imágenes con parametros de tamaño y formato&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-integraciones-empresariales-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-integraciones-empresariales-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Integraciones empresariales comunes&lt;/h2&gt;
&lt;h3 id=&quot;wordpress--salesforce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress--salesforce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress + Salesforce&lt;/h3&gt;
&lt;p&gt;Sincronizacion bidireccional de contactos, leads y oportunidades:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Formularios WordPress crean leads en Salesforce automáticamente&lt;/li&gt;
&lt;li&gt;Actualizaciones de CRM se reflejan en el portal del clientes WordPress&lt;/li&gt;
&lt;li&gt;Scoring de leads basado en interacciones en el sitio web&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress--saperp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress--saperp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress + SAP/ERP&lt;/h3&gt;
&lt;p&gt;Integración de catálogo de productos, inventario y pedidos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precios y disponibilidad sincronizados en tiempo real&lt;/li&gt;
&lt;li&gt;Pedidos de &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt; enviados al ERP para fulfillment&lt;/li&gt;
&lt;li&gt;Datos de facturacion sincronizados para contabilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress--mauticmarketing-automation&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress--mauticmarketing-automation&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress + Mautic/Marketing Automation&lt;/h3&gt;
&lt;p&gt;Automatizacion de marketing basada en comportamiento del sitio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tracking de visitas y acciones del usuario&lt;/li&gt;
&lt;li&gt;Segmentacion automática basada en contenido consumido&lt;/li&gt;
&lt;li&gt;Campanas de email personalizadas según intereses detectados&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-por-que-wppoland-es-su-socio-api-first&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-por-que-wppoland-es-su-socio-api-first&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Por que WPPoland es su socio API-First&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, construimos la “fontaneria” que hace funcionar su mundo digital.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Desarrollo de endpoints personalizados&lt;/strong&gt;: Disenamos y construimos APIs de alto rendimiento adaptadas a su aplicación móvil o web, con documentación completa y pruebas automatizadas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Integraciones de sistemas&lt;/strong&gt;: Nos especializamos en conectar WordPress con ERPs (SAP, Navision), CRMs (HubSpot, Salesforce) y bases de datos personalizadas. Cada integración se construye con seguridad y rendimiento como prioridades.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Consultoria headless&lt;/strong&gt;: Le ayudamos a decidir si un enfoque API-First es correcto para su proyecto y lo guíamos a través de la transicion arquitectonica con minimo riesgo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitoreo de API&lt;/strong&gt;: Implementamos &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;monitoreo continuo&lt;/a&gt; de rendimiento y disponibilidad de sus endpoints críticos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-el-hub-de-la-web-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-el-hub-de-la-web-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: El hub de la web moderna&lt;/h2&gt;
&lt;p&gt;WordPress es el backend más flexible en 2026. Al adoptar una filosofia API-First, se libera del molde del “Sitio Web Estándar” y convierte su CMS en una plataforma de contenido global. Ya sea que este construyendo un portal basado en React, una app nativa iOS o un sistema de kioscos interactivos, la API WordPress es la clave de su éxito.&lt;/p&gt;
&lt;p&gt;La transicion a API-First no es solo un cambio tecnológico; es un cambio de mentalidad que desbloquea posibilidades que antes eran imposibles o prohibitivamente costosas. WordPress en 2026 ha demostrado que un CMS de código abierto puede competir con y superar a las soluciones SaaS más costosas del mercado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sus datos WordPress estan atrapados en un tema tradicional? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para desbloquear el poder del desarrollo API-First hoy.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - APIs empresariales personalizadas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Frontends modernos para APIs WordPress&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - APIs de comercio electronico&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento de APIs&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad de endpoints API&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>architecture</category><category domain="tag">api-first</category><category domain="tag">rest-api</category><category domain="tag">graphql</category><category domain="tag">integrations</category><category domain="tag">backend-development</category><enclosure url="https://wppoland.com/images/og/modern-office-coding-setup.jpg" type="image/jpeg"/></item><item><title>Escalando WordPress Multisite en 2026 - Gestionando más de 100 sitios web</title><link>https://wppoland.com/es/managing-100-websites-wordpress-multisite-2026/</link><guid isPermaLink="true">https://wppoland.com/es/managing-100-websites-wordpress-multisite-2026/</guid><description>Aprenda como escalar WordPress Multisite en 2026 para más de 100 sitios, con mejores prácticas para gobernanza, hosting, actualizaciones, sindicacion de contenido y rendimiento.</description><pubDate>Wed, 06 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gestionar un punado de sitios web es fácil. Gestionar &lt;strong&gt;más de 100 sitios web&lt;/strong&gt; para un conglomerado global o una red de franquicias es una pesadilla logistica, a menos que utilice la arquitectura correcta. En 2026, &lt;strong&gt;WordPress Multisite&lt;/strong&gt; sigue siendo el estándar de la industria para la gestión de flotas web a gran escala.&lt;/p&gt;
&lt;p&gt;A continuacion, explicamos como disenar, gobernar y escalar una red de 100+ sitios de manera eficiente y sostenible.&lt;/p&gt;
&lt;p&gt;Respuesta corta: WordPress Multisite sigue funcionando muy bien en 2026 cuando necesita control centralizado, código compartido y gobernanza consistente a través de muchos sitios. Se convierte en la opción incorrecta cuando necesita aislamiento estricto de datos, infraestructura radicalmente diferente por sitio o autonomia total para cada equipo.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-fuente-única-de-verdad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-fuente-única-de-verdad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La fuente única de verdad&lt;/h2&gt;
&lt;p&gt;La ventaja principal de Multisite es tener un único código base para gestionar. Esta centralizacion es el pilar sobre el que se construyen todas las demás ventajas de la arquitectura.&lt;/p&gt;
&lt;h3 id=&quot;actualizaciones-centralizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizaciones-centralizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizaciones centralizadas&lt;/h3&gt;
&lt;p&gt;Cuando se lanza un parche de seguridad, lo actualiza una vez a nivel de Red. Los 100 sitios quedan asegurados instantaneamente. En un escenario con 100 instalaciones separadas, este proceso podria tomar dias o semanas, dejando ventanas de vulnerabilidad inaceptables.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios de la centralizacion:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un solo punto de actualización para el nucleo de WordPress&lt;/li&gt;
&lt;li&gt;Control unificado de versiones de plugins y temas&lt;/li&gt;
&lt;li&gt;Politicas de seguridad aplicadas consistentemente en toda la red&lt;/li&gt;
&lt;li&gt;Reduccion del 90% en tiempo dedicado a mantenimiento rutinario&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;biblioteca-compartida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#biblioteca-compartida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Biblioteca compartida&lt;/h3&gt;
&lt;p&gt;Temás y plugins se comparten entre todos los sitios. Si desea actualizar los colores corporativos de la marca, modifica un tema y se refleja en todos los sitios regionales automáticamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gestión de activos compartidos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Temás corporativos&lt;/strong&gt;: Un tema padre con variaciones por sitio via temas hijo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins esenciales&lt;/strong&gt;: SEO, seguridad, cache y analytics gestionados centralmente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Media Library&lt;/strong&gt;: Opción de biblioteca de medios compartida para activos de marca&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloques Gutenberg&lt;/strong&gt;: Patrones de bloques sincronizados disponibles en toda la red&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;consistencia-de-marca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consistencia-de-marca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consistencia de marca&lt;/h3&gt;
&lt;p&gt;La consistencia visual y funcional es automática:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mismos componentes de UI en todos los sitios&lt;/li&gt;
&lt;li&gt;Fuentes, colores y espaciado controlados desde &lt;code&gt;theme.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Footer y header corporativos sincronizados&lt;/li&gt;
&lt;li&gt;Formularios de contacto y CTAs estandarizados&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-arquitectura-multi-red-avanzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-arquitectura-multi-red-avanzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Arquitectura multi-red avanzada&lt;/h2&gt;
&lt;p&gt;Para organizaciónes que han superado el multisite “simple”, &lt;strong&gt;Multi-network&lt;/strong&gt; (usando plugins como WP Multi Network) es el estándar de 2026. Esta arquitectura permite una organización lógica que refleja la estructura empresarial real.&lt;/p&gt;
&lt;h3 id=&quot;agrupacion-regional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agrupacion-regional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agrupacion regional&lt;/h3&gt;
&lt;p&gt;Puede tener una “Red” para Europa, una “Red” para Americas y una “Red” para APAC, todas dentro de una sola instalación. Cada red puede tener su propio conjunto de administradores, plugins habilitados y configuraciónes específicas de la region.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estructura tipica de multi-red empresarial:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Red Global (Super Admin)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── Red Europa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── sitio-espana.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── sitio-alemania.de&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── sitio-francia.fr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── sitio-italia.it&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── Red Americas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── sitio-usa.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── sitio-mexico.mx&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   ├── sitio-brasil.com.br&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│   └── sitio-canada.ca&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── Red APAC&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── sitio-japon.jp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── sitio-australia.com.au&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └── sitio-india.in&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;database-sharding&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#database-sharding&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Database sharding&lt;/h3&gt;
&lt;p&gt;Para prevenir que la base de datos se convierta en un cuello de botella, utilizamos &lt;code&gt;db.php&lt;/code&gt; drop-ins para distribuir datos de los sitios a través de multiples servidores de base de datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategias de sharding:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Por region&lt;/strong&gt;: Cada red regional tiene su propio servidor de base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Por volumen&lt;/strong&gt;: Sitios con alto tráfico se asignan a servidores dedicados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Por tipo&lt;/strong&gt;: Contenido estatico separado de datos transaccionales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hibrido&lt;/strong&gt;: Combinación de las estrategias anteriores basada en necesidades específicas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-por-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-por-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración por red&lt;/h3&gt;
&lt;p&gt;Cada red puede tener configuraciónes independientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugins habilitados específicos para la region&lt;/li&gt;
&lt;li&gt;Temás hijo con variaciones locales&lt;/li&gt;
&lt;li&gt;Configuraciónes de idioma y zona horaria&lt;/li&gt;
&lt;li&gt;Integraciones con sistemas locales (CRM, ERP, pasarelas de pago)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-gobernanza-e-identidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-gobernanza-e-identidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Gobernanza e identidad&lt;/h2&gt;
&lt;p&gt;Con 100 sitios, probablemente tiene más de 500 usuarios. No puede gestionarlos manualmente. La gobernanza automatizada es esencial para mantener la seguridad y la productividad.&lt;/p&gt;
&lt;h3 id=&quot;integración-sso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-sso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración SSO&lt;/h3&gt;
&lt;p&gt;Integre su Multisite con Okta o Azure AD. Cuando un empleado deja la empresa, su acceso a los 100 sitios web se revoca con un solo clic. Esta centralizacion elimina el riesgo de “cuentas huerfanas” que son un vector comun de ataques.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios del SSO centralizado:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provisionamiento automático de usuarios al unirse a la organización&lt;/li&gt;
&lt;li&gt;Desaprovisionamiento automático al salir&lt;/li&gt;
&lt;li&gt;Politicas de contraseña centralizadas y consistentes&lt;/li&gt;
&lt;li&gt;Autenticación multifactor (MFA) aplicada uniformemente&lt;/li&gt;
&lt;li&gt;Registro completo de auditorias de acceso&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;controles-de-super-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#controles-de-super-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Controles de Super Admin&lt;/h3&gt;
&lt;p&gt;Defina que sitios pueden activar que plugins. Un equipo de marketing regional no deberia poder instalar un plugin riesgoso que podria romper toda la red.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jerarquía de roles recomendada:&lt;/strong&gt;&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Rol&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Alcance&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Permisos&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Super Admin&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Red global&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Control total&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Admin de red&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Red regional&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gestión de sitios en su region&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Admin de sitio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sitio individual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Configuración del sitio asignado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Editor&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sitio individual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Publicación de contenido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Autor&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sitio individual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Creación de borradores&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;SEO Manager&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Red global&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Edicion de meta tags y schema&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;politicas-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#politicas-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Politicas de plugins&lt;/h3&gt;
&lt;p&gt;La gestión de plugins en una red de 100+ sitios requiere gobernanza estricta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lista blanca&lt;/strong&gt;: Solo plugins aprobados pueden ser activados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisiones de seguridad&lt;/strong&gt;: Cada plugin pasa por auditoria antes de la aprobacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones automáticas&lt;/strong&gt;: Parches de seguridad se aplican automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo de rendimiento&lt;/strong&gt;: Plugins que degradan el rendimiento se identifican y reemplazan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-sindicacion-de-contenido-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-sindicacion-de-contenido-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Sindicacion de contenido a escala&lt;/h2&gt;
&lt;p&gt;En 2026, el contenido no solo vive en un sitio. La sindicacion de contenido permite maximizar el valor de cada pieza de contenido distribuyendola estrategicamente a través de la red.&lt;/p&gt;
&lt;h3 id=&quot;broadcast-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#broadcast-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Broadcast de contenido&lt;/h3&gt;
&lt;p&gt;Publique un anuncio corporativo global una vez, y “transmitalo” a los 100 sitios simultaneamente. Esta capacidad es esencial para comunicaciones corporativas, actualizaciones de politicas y noticias de la empresa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de contenido para broadcast:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comúnicados de prensa corporativos&lt;/li&gt;
&lt;li&gt;Actualizaciones de productos y funcionalidades&lt;/li&gt;
&lt;li&gt;Alertas de seguridad y cumplimiento&lt;/li&gt;
&lt;li&gt;Noticias de recursos humanos y cultura corporativa&lt;/li&gt;
&lt;li&gt;Contenido estacional (campanas de fin de año, eventos globales)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;búsqueda-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#búsqueda-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Búsqueda global&lt;/h3&gt;
&lt;p&gt;Use Elasticsearch (via ElasticPress) para proporcionar una barra de búsqueda que pueda encontrar contenido a través de cada sitio en toda la red.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura de búsqueda global:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Barra de búsqueda] → [Elasticsearch Cluster]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                           ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    [Indice Site 1] + [Indice Site 2] + ... + [Indice Site 100]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                           ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                    [Resultados unificados con facetas por sitio]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;flujos-de-contenido-regional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujos-de-contenido-regional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujos de contenido regional&lt;/h3&gt;
&lt;p&gt;El contenido puede fluir en multiples direcciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Top-down&lt;/strong&gt;: Contenido global se distribuye a sitios regionales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bottom-up&lt;/strong&gt;: Contenido local exitoso se promueve a nivel global&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lateral&lt;/strong&gt;: Sitios regionales comparten contenido entre si&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traduccion automática&lt;/strong&gt;: Contenido se traduce y adapta automáticamente para cada mercado&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;api-de-sindicacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#api-de-sindicacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;API de sindicacion&lt;/h3&gt;
&lt;p&gt;WordPress Multisite en 2026 ofrece APIs robustas para sindicacion programatica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webhooks que notifican a sitios suscritos sobre nuevo contenido&lt;/li&gt;
&lt;li&gt;Endpoints REST para consultar contenido de cualquier sitio en la red&lt;/li&gt;
&lt;li&gt;GraphQL para consultas complejas de contenido multi-sitio&lt;/li&gt;
&lt;li&gt;Colas de tareas asincronas para distribucion masiva sin impacto en rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-checklist-de-rendimiento-para-100-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-checklist-de-rendimiento-para-100-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Checklist de rendimiento para 100+ sitios&lt;/h2&gt;
&lt;p&gt;El rendimiento en una red Multisite requiere atención especial. Cada componente de la infraestructura debe estar optimizado para manejar la carga combinada de todos los sitios.&lt;/p&gt;
&lt;h3 id=&quot;componentes-críticos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#componentes-críticos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Componentes críticos&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Componente&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Estándar 2026&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Por que importa&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Object Cache&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Redis (Cluster)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Previene sobrecarga de base de datos por consultas compartidas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;CDN&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Edge Rendering&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Acelera TTFB para sitios globales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Almacenamiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;S3-Compatible&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Descarga archivos multimedia para prevenir hinchamiento del servidor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Búsqueda&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Elasticsearch&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;La búsqueda nativa de WP no puede manejar datos de 100 sitios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Base de datos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;MySQL 8+ con replicas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Distribuye carga de lectura entre multiples servidores&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Monitoreo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;New Relic/Datadog&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Visibilidad por sitio y por red&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;optimización-de-redis-para-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-redis-para-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de Redis para Multisite&lt;/h3&gt;
&lt;p&gt;Redis en un entorno Multisite requiere configuración especializada:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prefijos por sitio&lt;/strong&gt;: Cada sitio tiene su propio namespace en Redis para evitar colisiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis Cluster&lt;/strong&gt;: Distribucion de claves entre multiples nodos para escalabilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTL inteligente&lt;/strong&gt;: Tiempos de vida diferentes para contenido estatico vs. dinámico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo de memoria&lt;/strong&gt;: Alertas cuando el uso de memoria se acerca al limite&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-cdn-para-red-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-cdn-para-red-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de CDN para red global&lt;/h3&gt;
&lt;p&gt;Para una red de sitios distribuidos globalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multi-CDN&lt;/strong&gt;: Usar diferentes proveedores CDN para diferentes regiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge Computing&lt;/strong&gt;: Ejecutar lógica de personalización en el edge&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache por sitio&lt;/strong&gt;: Cada sitio tiene su propia estrategia de cache basada en su patron de tráfico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Purga inteligente&lt;/strong&gt;: Actualizar un sitio no purga el cache de los demas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;base-de-datos-optimizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#base-de-datos-optimizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Base de datos optimizada&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Servidor primario (escritura)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Replica lectura Europa] + [Replica lectura Americas] + [Replica lectura APAC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Cada sitio lee de la replica más cercana geograficamente]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-automatizacion-y-devops-para-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-automatizacion-y-devops-para-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Automatizacion y DevOps para Multisite&lt;/h2&gt;
&lt;h3 id=&quot;despliegues-automatizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despliegues-automatizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despliegues automatizados&lt;/h3&gt;
&lt;p&gt;En una red de 100+ sitios, los despliegues manuales son imposibles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CI/CD pipeline&lt;/strong&gt;: Cada cambio de código pasa por pruebas automáticas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue canary&lt;/strong&gt;: Los cambios se despliegan primero en 5% de los sitios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rollback automático&lt;/strong&gt;: Si las metricas degradan, se revierte automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue por fases&lt;/strong&gt;: Europe primero, luego Americas, luego APAC&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wp-cli-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wp-cli-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WP-CLI a escala&lt;/h3&gt;
&lt;p&gt;WP-CLI es la herramienta principal para gestión de Multisite:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Actualizar todos los sitios en la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --field=url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; xargs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -I&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{} core update&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Activar un plugin en sitios específicos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --field=url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network=europe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; xargs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -I&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{} plugin activate new-feature&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar estadisticas de todos los sitios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --post_type=post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;monitoreo-y-alertas-por-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-y-alertas-por-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo y alertas por sitio&lt;/h3&gt;
&lt;p&gt;Cada sitio en la red debe tener su propio conjunto de alertas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uptime individual (el sitio principal puede estar arriba pero un subsitio no)&lt;/li&gt;
&lt;li&gt;Core Web Vitals por sitio (diferentes sitios pueden tener diferentes rendimientos)&lt;/li&gt;
&lt;li&gt;Errores PHP por sitio (un plugin activado en un sitio puede causar errores)&lt;/li&gt;
&lt;li&gt;Consumo de base de datos por sitio (identificar sitios que consumen recursos excesivos)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-cuando-no-usar-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-cuando-no-usar-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Cuando NO usar Multisite&lt;/h2&gt;
&lt;p&gt;Multisite no siempre es la respuesta. Es importante reconocer las situaciones donde otra arquitectura seria más apropiada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Evitelo si:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Requisitos únicos&lt;/strong&gt;: Si el Sitio A necesita una configuración de servidor completamente diferente o una versión de PHP especializada que el Sitio B.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reputacion de IP&lt;/strong&gt;: Si un sitio en la red es “spam”, podria afectar la reputacion de todos los demás sitios en esa misma IP. Esto es especialmente crítico para sitios de e-commerce que dependen de la entregabilidad de email.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aislamiento de datos&lt;/strong&gt;: Si un clientes requiere que sus datos esten en una base de datos completamente separada por razones legales (GDPR, regulaciones financieras, datos de salud).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Autonomia total de equipo&lt;/strong&gt;: Si cada equipo necesita control total sobre su infraestructura, incluyendo la capacidad de elegir sus propios plugins y configuraciónes sin restricciones.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Escala extrema&lt;/strong&gt;: Si un solo sitio en la red genera el 90% del tráfico, puede ser más eficiente separarlo para optimizar su infraestructura independientemente.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;alternativas-a-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativas-a-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativas a Multisite&lt;/h3&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Escenario&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Alternativa recomendada&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Aislamiento de datos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Instalaciones separadas con herramientas de gestión centralizada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Autonomia de equipo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WordPress como servicio (WPaaS) con gobernanza de API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Escala extrema&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Arquitectura hibrida: sitios críticos separados + Multisite para el resto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Requisitos heterogeneos&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Plataforma de orquestacion (Kubernetes) con multiples instalaciones&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-migración-a-multisite-guia-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-migración-a-multisite-guia-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Migración a Multisite: Guia paso a paso&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-auditoria-semanas-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-auditoria-semanas-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Auditoria (Semanas 1-2)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Inventario de todos los sitios existentes&lt;/li&gt;
&lt;li&gt;Análisis de plugins y temas utilizados&lt;/li&gt;
&lt;li&gt;Evaluación de requisitos de datos y aislamiento&lt;/li&gt;
&lt;li&gt;Identificacion de integraciones por sitio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-arquitectura-semanas-3-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-arquitectura-semanas-3-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Arquitectura (Semanas 3-4)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Diseño de la estructura de red (simple vs. multi-red)&lt;/li&gt;
&lt;li&gt;Planificacion de la estrategia de base de datos&lt;/li&gt;
&lt;li&gt;Definicion de la jerarquía de roles y permisos&lt;/li&gt;
&lt;li&gt;Seleccion de hosting e infraestructura&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-3-implementación-semanas-5-10&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-implementación-semanas-5-10&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Implementación (Semanas 5-10)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configuración del entorno Multisite&lt;/li&gt;
&lt;li&gt;Migración de contenido sitio por sitio&lt;/li&gt;
&lt;li&gt;Implementación de SSO y gobernanza&lt;/li&gt;
&lt;li&gt;Configuración de cache y CDN&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-4-optimización-semanas-11-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-optimización-semanas-11-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Optimización (Semanas 11-12)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pruebas de rendimiento bajo carga&lt;/li&gt;
&lt;li&gt;Ajuste fino de cache y base de datos&lt;/li&gt;
&lt;li&gt;Capacitacion de administradores de red&lt;/li&gt;
&lt;li&gt;Documentación de procesos operaciónales&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WordPress Multisite&lt;/strong&gt; es la herramienta de poder definitiva para el “Gestor de Flota Web”. Proporciona la eficiencia de la gestión centralizada con la flexibilidad de la creación de contenido descentralizada.&lt;/p&gt;
&lt;p&gt;Si busca escalar de 10 sitios a 100 o 1.000, disenar su Multisite correctamente desde el primer dia es la decision técnica más importante que tomara. Una arquitectura bien planificada no solo ahorra costos operaciónales; permite velocidad de ejecucion, consistencia de marca y seguridad que simplemente no son posibles con instalaciones independientes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesita escalar su red de sitios WordPress? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para disenar su arquitectura Multisite empresarial.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Arquitectura empresarial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento para redes de sitios&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad a escala de red&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Gestión continua de Multisite&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - E-commerce multi-sitio&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>business</category><category domain="tag">multisite</category><category domain="tag">enterprise</category><category domain="tag">scalability</category><category domain="tag">automation</category><category domain="tag">governance</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-flip.jpg" type="image/jpeg"/></item><item><title>WordUp Varsovia y el Poder de la Comunidad WordPress</title><link>https://wppoland.com/es/wordup-community-power-wordpress/</link><guid isPermaLink="true">https://wppoland.com/es/wordup-community-power-wordpress/</guid><description>Descubre el poder de la comunidad WordPress en los meetups WordUp de Varsovia. Networking, aprendizaje y colaboración entre profesionales.</description><pubDate>Fri, 01 Aug 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Este artículo en español resume el tema “WordUp Warsaw And The Power Of Wordpress Comunidad” con un enfoque práctico y actual. La idea no es repetir un titular sin contexto, sino explicar por qué este asunto sigue siendo relevante, qué decisiones conviene tomar y dónde suelen aparecer los errores más comunes en proyectos WordPress reales.&lt;/p&gt;
&lt;h2 id=&quot;contexto-y-relevancia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-relevancia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y relevancia&lt;/h2&gt;
&lt;p&gt;En temas SEO no conviene perseguir atajos. Los mejores resultados llegan cuando la parte técnica, la estructura de contenidos y la autoridad externa avanzan juntas. Si una página no responde bien a la intención de búsqueda, ni los enlaces ni los ajustes de metadatos compensan esa carencia durante mucho tiempo.&lt;/p&gt;
&lt;h2 id=&quot;qué-conviene-tener-en-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-conviene-tener-en-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué conviene tener en cuenta&lt;/h2&gt;
&lt;p&gt;También hay que distinguir entre señales útiles y ruido. Muchas métricas de herramientas son orientativas, no objetivos en sí mismos. Lo que interesa de verdad es mejorar rastreo, indexación, relevancia temática y capacidad de atraer visitas que luego conviertan.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión práctica&lt;/h2&gt;
&lt;p&gt;Por eso este tema debe leerse como una guía de criterio. Sirve para ordenar prioridades, evitar decisiones improvisadas y construir una base SEO que aguante cambios de algoritmo sin depender de tácticas frágiles.&lt;/p&gt;
&lt;p&gt;Fuente base revisada: wordup-community-power-wordpress.en.md. El contenido se ha adaptado a una versión española útil, evitando dejar una entrada mínima o vacía dentro del repositorio multilingüe.&lt;/p&gt;</content:encoded><category>community</category><category>events</category><category domain="tag">wordup</category><category domain="tag">wordcamp</category><category domain="tag">networking</category><category domain="tag">wordpress-community</category><category domain="tag">professional-development</category><category domain="tag">tech-events</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Generación automatizada de contenido para WordPress en 2026</title><link>https://wppoland.com/es/automated-content-generation-for-wordpress-2026-comprehensive-guide/</link><guid isPermaLink="true">https://wppoland.com/es/automated-content-generation-for-wordpress-2026-comprehensive-guide/</guid><description>Guia práctica de flujos de contenido automatizados para WordPress en 2026, incluyendo redaccion con IA, publicación programatica, controles editoriales y riesgos de calidad.</description><pubDate>Thu, 31 Jul 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La automatizacion de contenido en WordPress ha pasado de ser una idea experimental a una práctica operativa madura en 2026. Sin embargo, la diferencia entre automatizacion exitosa y desastrosa reside en un único principio: automatizar el proceso, no la calidad. Esta guía cubre como implementar flujos de contenido automatizados que realmente funcionan sin convertir su sitio en una granja de contenido de bajo valor.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO y contenido optimizado&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;1-el-espectro-de-automatizacion-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-espectro-de-automatizacion-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El espectro de automatizacion de contenido&lt;/h2&gt;
&lt;p&gt;No toda la automatizacion de contenido es igual. Existe un espectro que va desde la asistencia minima hasta la publicación totalmente automática, y cada punto del espectro tiene diferentes niveles de riesgo y recompensa.&lt;/p&gt;
&lt;h3 id=&quot;nivel-1-asistencia-ia-bajo-riesgo-alto-valor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-1-asistencia-ia-bajo-riesgo-alto-valor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 1: Asistencia IA (Bajo riesgo, alto valor)&lt;/h3&gt;
&lt;p&gt;La IA asiste en partes específicas del flujo de trabajo humano:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Investigacion de temas&lt;/strong&gt;: IA analiza tendencias, gaps de contenido y oportunidades de keywords.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación de briefs&lt;/strong&gt;: IA genera briefs de contenido estructurados basados en datos SEO.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización post-escritura&lt;/strong&gt;: IA sugiere mejoras de SEO, legibilidad y cobertura temática.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impacto&lt;/strong&gt;: Reduce el tiempo de producción un 30-40% sin afectar la calidad.&lt;/p&gt;
&lt;h3 id=&quot;nivel-2-borrador-asistido-riesgo-medio-valor-alto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-2-borrador-asistido-riesgo-medio-valor-alto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 2: Borrador asistido (Riesgo medio, valor alto)&lt;/h3&gt;
&lt;p&gt;La IA genera borradores que son revisados y enriquecidos por humanos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Primer borrador completo&lt;/strong&gt;: IA genera un artículo de 1500-3000 palabras basado en un brief detallado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision editorial&lt;/strong&gt;: Un editor humano verifica precision, anade experiencia directa, ajusta tono de marca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enriquecimiento&lt;/strong&gt;: Se anaden datos propios, capturas de pantalla, ejemplos reales que la IA no puede proporcionar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impacto&lt;/strong&gt;: Reduce el tiempo de producción un 50-70%, la calidad depende de la profundidad de la revision.&lt;/p&gt;
&lt;h3 id=&quot;nivel-3-contenido-programatico-riesgo-alto-valor-variable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-3-contenido-programatico-riesgo-alto-valor-variable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 3: Contenido programatico (Riesgo alto, valor variable)&lt;/h3&gt;
&lt;p&gt;Generación automática a escala de páginas basadas en datos y plantillas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas de ubicacion&lt;/strong&gt;: “[Servicio] en [Ciudad]” generadas para cientos de ciudades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de comparación&lt;/strong&gt;: “[Producto A] vs [Producto B]” generadas automáticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de FAQ&lt;/strong&gt;: Generadas a partir de datos de soporte y búsqueda.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impacto&lt;/strong&gt;: Puede multiplicar el tráfico organico por 5-10x, pero requiere controles estrictos para evitar contenido fino.&lt;/p&gt;
&lt;h3 id=&quot;nivel-4-publicación-totalmente-automática-riesgo-muy-alto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-4-publicación-totalmente-automática-riesgo-muy-alto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 4: Publicación totalmente automática (Riesgo muy alto)&lt;/h3&gt;
&lt;p&gt;La IA genera, revisa y pública contenido sin intervencion humana. En 2026, esto sigue siendo arriesgado para la mayoria de los casos. Los riesgos incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Información factualmente incorrecta publicada sin verificación&lt;/li&gt;
&lt;li&gt;Contenido generico que no anade valor único&lt;/li&gt;
&lt;li&gt;Penalizaciones por contenido fino o duplicado&lt;/li&gt;
&lt;li&gt;Dano a la reputacion de marca&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion&lt;/strong&gt;: Evitar para la mayoria de los casos. Solo viable para contenido de muy bajo riesgo (actualizaciones de datos, listings automáticos).&lt;/p&gt;
&lt;h2 id=&quot;2-implementación-práctica-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-implementación-práctica-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Implementación práctica en WordPress&lt;/h2&gt;
&lt;h3 id=&quot;pipeline-de-contenido-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pipeline-de-contenido-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pipeline de contenido automatizado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Datos de entrada]     -&gt;  [Procesamiento IA]      -&gt;  [Revision humana]  -&gt;  [Publicacion]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                            |                            |                      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Keywords + Competencia      Brief automático             Editor revisa          Programada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Datos de producto           Borrador IA                  Verifica hechos        Optimizada SEO&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Datos de soporte            Optimización SEO             Enriquece contenido    Monitorizada&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;integración-con-wordpress-via-rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-wordpress-via-rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con WordPress via REST API&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Crear posts automáticamente via WordPress REST API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; create_automated_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($title, $content, $category, $status &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;draft&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_strip_all_tags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($title),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $status, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// &apos;draft&apos; para revision humana&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [$category],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;meta_input&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;_automated_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;_ai_model_used&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;claude-3-opus&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;_generation_date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mysql&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;_review_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;pending&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_insert_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Notificar al editor para revision&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_mail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &quot;Nuevo borrador automatizado: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &quot;Un nuevo borrador generado por IA esta listo para revision: &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            admin_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;post.php?post={&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x26;action=edit&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;controles-de-calidad-automatizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#controles-de-calidad-automatizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Controles de calidad automatizados&lt;/h3&gt;
&lt;p&gt;Antes de que un editor vea el borrador, implemente verificaciónes automáticas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificaciones de calidad automatizadas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; automated_quality_checks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $issues &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Verificar longitud minima&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $word_count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_word_count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strip_tags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($word_count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $issues[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Contenido demasiado corto: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$word_count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;} palabras (minimo 800)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Verificar presencia de enlaces internos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $internal_links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_match_all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;href=[&quot;\&apos;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;es&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $content);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($internal_links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $issues[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Insuficientes enlaces internos: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$internal_links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;} (minimo 2)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Verificar presencia de encabezados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $headings &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_match_all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;h[2-3]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $content);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($headings &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $issues[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Insuficientes subencabezados: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$headings&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;} (minimo 3)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Verificar contenido duplicado (básico)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $first_paragraph &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; strip_tags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $similar_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;s&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_paragraph,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post__not_in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [$post_id],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($similar_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $issues[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Posible contenido duplicado detectado&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_quality_issues&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $issues);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_quality_score&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($issues) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;pass&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;needs_review&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $issues;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;automated_quality_checks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;3-contenido-programatico-la-estrategia-de-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-contenido-programatico-la-estrategia-de-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Contenido programatico: La estrategia de escala&lt;/h2&gt;
&lt;p&gt;El contenido programatico es la automatizacion más ambiciosa: generar cientos o miles de páginas a partir de datos estructurados y plantillas.&lt;/p&gt;
&lt;h3 id=&quot;casos-de-uso-exitosos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-exitosos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso exitosos&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Páginas de servicio por ubicacion:&lt;/strong&gt;
Para una empresa de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; que opera en multiples ciudades, generar páginas como “Mantenimiento WordPress en Madrid”, “Mantenimiento WordPress en Barcelona”, etc. Cada página incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Datos específicos de la ciudad (poblacion, industrias principales)&lt;/li&gt;
&lt;li&gt;Testimonios de clientes locales (reales)&lt;/li&gt;
&lt;li&gt;Estadísticas de proyectos completados en esa zona&lt;/li&gt;
&lt;li&gt;Información de contacto local&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Páginas de integración:&lt;/strong&gt;
Para un producto SaaS, generar páginas como “WordPress + Salesforce”, “WordPress + HubSpot”, etc. Cada página incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Como funciona la integración específica&lt;/li&gt;
&lt;li&gt;Beneficios únicos de esa combinación&lt;/li&gt;
&lt;li&gt;Pasos de configuración reales&lt;/li&gt;
&lt;li&gt;Preguntas frecuentes específicas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reglas-de-oro-del-contenido-programatico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reglas-de-oro-del-contenido-programatico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reglas de oro del contenido programatico&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cada página debe tener datos únicos&lt;/strong&gt;: No basta con cambiar el nombre de la ciudad. Necesita datos reales, estadísticas locales, testimonios específicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La plantilla debe ser lo suficientemente flexible&lt;/strong&gt;: Evite que todas las páginas suenen identicas. Varien la estructura y el enfoque.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responder a intencion de búsqueda real&lt;/strong&gt;: Verifique que hay volumen de búsqueda para cada variacion antes de generar la página.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorear indexacion&lt;/strong&gt;: Use Search Console para verificar que Google indexa y valora las páginas generadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminar contenido fino&lt;/strong&gt;: Si una página no recibe tráfico despues de 3 meses, eliminela o consolidela con otra.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;4-herramientas-para-automatizacion-de-contenido-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-herramientas-para-automatizacion-de-contenido-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Herramientas para automatizacion de contenido WordPress&lt;/h2&gt;
&lt;h3 id=&quot;herramientas-de-generación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-generación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de generación&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude API / OpenAI API&lt;/strong&gt;: Para generación de borradores a escala via API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Surfer SEO API&lt;/strong&gt;: Para optimización SEO automática de borradores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepL API&lt;/strong&gt;: Para traduccion automatizada de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-de-publicación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-publicación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de publicación&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP-CLI&lt;/strong&gt;: Para crear posts programaticamente desde la linea de comandos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress REST API&lt;/strong&gt;: Para integración con pipelines de automatizacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;n8n / Make / Zapier&lt;/strong&gt;: Para orquestar flujos de trabajo sin código&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-de-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de monitoreo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console API&lt;/strong&gt;: Para rastrear indexacion y rendimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query Monitor&lt;/strong&gt;: Para detectar problemas de rendimiento con contenido masivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom dashboards&lt;/strong&gt;: Para metricas de calidad y rendimiento de contenido automatizado&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-riesgos-y-mitigacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-riesgos-y-mitigacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Riesgos y mitigacion&lt;/h2&gt;
&lt;h3 id=&quot;riesgo-1-contenido-fino-thin-content&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgo-1-contenido-fino-thin-content&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgo 1: Contenido fino (thin content)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Mitigacion&lt;/strong&gt;: Establecer minimos de calidad (longitud, datos únicos, enlaces internos) y auditar regularmente.&lt;/p&gt;
&lt;h3 id=&quot;riesgo-2-desinformación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgo-2-desinformación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgo 2: Desinformación&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Mitigacion&lt;/strong&gt;: Revision humana obligatoria para contenido factual. Verificación automática contra fuentes confiables.&lt;/p&gt;
&lt;h3 id=&quot;riesgo-3-penalizacion-google&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgo-3-penalizacion-google&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgo 3: Penalizacion Google&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Mitigacion&lt;/strong&gt;: Seguir las directrices de Google sobre contenido util. Priorizar valor para el usuario sobre volumen.&lt;/p&gt;
&lt;h3 id=&quot;riesgo-4-inconsistencia-de-marca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgo-4-inconsistencia-de-marca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgo 4: Inconsistencia de marca&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Mitigacion&lt;/strong&gt;: Definir guía de estilo detallada. Verificación automática de tono y terminologia.&lt;/p&gt;
&lt;h3 id=&quot;riesgo-5-dependencia-de-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgo-5-dependencia-de-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgo 5: Dependencia de IA&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Mitigacion&lt;/strong&gt;: Mantener capacidad editorial humana. La IA es un multiplicador, no un reemplazo.&lt;/p&gt;
&lt;h2 id=&quot;6-metricas-de-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-metricas-de-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Metricas de éxito&lt;/h2&gt;
&lt;h3 id=&quot;kpis-para-contenido-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kpis-para-contenido-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;KPIs para contenido automatizado&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Objetivo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Frecuencia de revision&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Contenido producido/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;+200% vs. manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mensual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Coste por artículo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-50% vs. manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mensual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tasa de aprobacion editorial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&gt; 70% al primer envio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Semanal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tráfico organico de páginas automatizadas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&gt; 50% del tráfico total&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mensual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Posición media keywords programaticos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Top 20 en 3 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mensual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tasa de rebote contenido automatizado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 5% peor que manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mensual&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La automatizacion de contenido en WordPress es una herramienta poderosa cuando se implementa con disciplina. La clave es automatizar el proceso (investigación, borradores, optimización, publicación) mientras se mantiene la calidad bajo control humano. Las empresas que dominan esta combinación pueden producir 3-5x más contenido a menor coste sin sacrificar la calidad que Google y los usuarios exigen.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para implementar flujos de contenido automatizados en WordPress, contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO programatico&lt;/a&gt; y &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio con IA&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; - SEO programatico y automatizado&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress&lt;/a&gt; - Implementación de pipelines de contenido&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;Comercio e IA&lt;/a&gt; - IA para contenido de producto&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Monitoreo de sitios con contenido a escala&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>marketing</category><category domain="tag">wordpress-automation</category><category domain="tag">ai-content</category><category domain="tag">programmatic-seo</category><category domain="tag">llm-integration</category><category domain="tag">content-strategy-2026</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>El auge de la búsqueda IA: Optimización para SGE y citaciones LLM</title><link>https://wppoland.com/es/seo-ai-search-llm-citations-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/seo-ai-search-llm-citations-guide-2026/</guid><description>La búsqueda en 2026 es un motor de respuestas. Aprende a optimizar tu sitio WordPress para ser citado por Google SGE, Perplexity y OpenAI.</description><pubDate>Fri, 18 Jul 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La era del “enlace azul” ha terminado oficialmente. En 2026, la búsqueda ya no es un proceso de descubrimiento, es un &lt;strong&gt;proceso de respuesta&lt;/strong&gt;. Si tu sitio WordPress no esta optimizado para la Búsqueda IA (SGE) y las citaciones LLM, simplemente no existes en el ecosistema web moderno. Esta realidad ha transformado fundamentalmente la forma en que los profesionales de SEO y los propietarios de sitios WordPress deben abordar la visibilidad en linea.&lt;/p&gt;
&lt;p&gt;La transicion de motores de búsqueda basados en enlaces a motores de respuestas impulsados por IA representa el cambio más significativo en la historia del SEO. En esta guía exhaustiva, exploraremos las estrategias, técnicas y mejores prácticas que necesitas para posicionar tu sitio WordPress como fuente autorizada en esta nueva era.&lt;/p&gt;
&lt;h2 id=&quot;1-el-panorama-de-búsqueda-2026-motores-de-respuestas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-panorama-de-búsqueda-2026-motores-de-respuestas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El panorama de búsqueda 2026: Motores de respuestas&lt;/h2&gt;
&lt;p&gt;Google SGE, Perplexity y OpenAI Search han transformado como los usuarios encuentran información. No quieren una lista de sitios; quieren una respuesta resumida que les ahorre tiempo y les proporcione la información que necesitan de forma inmediata y verificable.&lt;/p&gt;
&lt;h3 id=&quot;la-oportunidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-oportunidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La oportunidad&lt;/h3&gt;
&lt;p&gt;Cada respuesta IA viene con citaciones. Ser la “fuente de verdad” para un hecho específico es el nuevo objetivo SEO número 1. A diferencia del SEO tradicional donde competias por posiciones en una lista de diez resultados, en la búsqueda IA compites por ser &lt;em&gt;la&lt;/em&gt; fuente citada. La diferencia es monumental: una citacion en una respuesta SGE puede generar más tráfico de alta calidad que el primer resultado organico tradicional.&lt;/p&gt;
&lt;h3 id=&quot;el-cambio-de-paradigma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-cambio-de-paradigma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El cambio de paradigma&lt;/h3&gt;
&lt;p&gt;En el modelo tradicional, los motores de búsqueda eran intermediarios que dirigian tráfico a sitios web. En 2026, los motores de IA son sintetizadores que extraen información de multiples fuentes y la presentan directamente al usuario. Tu sitio ya no necesita “atraer clics”; necesita “alimentar respuestas” con datos verificables y únicos.&lt;/p&gt;
&lt;h3 id=&quot;impacto-en-diferentes-industrias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-diferentes-industrias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en diferentes industrias&lt;/h3&gt;
&lt;p&gt;Las industrias basadas en información factual (tecnología, finanzas, salud) experimentan el mayor impacto. Los sitios que proporcionan datos originales, estudios de caso y análisis expertos son citados frecuentemente, mientras que los agregadores de contenido generico ven caidas dramaticas en tráfico.&lt;/p&gt;
&lt;h2 id=&quot;2-optimizando-para-citaciones-llm-aio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-optimizando-para-citaciones-llm-aio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Optimizando para citaciones LLM (AIO)&lt;/h2&gt;
&lt;p&gt;AIO (AI Optimization) es la evolucion del SEO. Mientras que el SEO tradicional se enfoca en palabras clave y backlinks, el AIO se centra en la claridad, verificabilidad y unicidad de tu contenido.&lt;/p&gt;
&lt;h3 id=&quot;claridad-de-afirmacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#claridad-de-afirmacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Claridad de afirmacion&lt;/h3&gt;
&lt;p&gt;Evita el relleno. Usa oraciones declarativas. En lugar de “Pensamos que WordPress podria ser bueno para la velocidad”, usa “WordPress 6.9 logra una mejora del 30% en rendimiento a través de su nueva capa de cache del nucleo.” Las afirmaciones claras, cuantificables y verificables son las que los LLM prefieren citar.&lt;/p&gt;
&lt;p&gt;La claridad de afirmacion no significa simplificacion excesiva. Significa ser preciso, directo y respaldado por datos. Los LLM estan entrenados para identificar contenido que proporciona respuestas definitivas a preguntas específicas, y tu contenido debe estructurarse para facilitar esta extraccion.&lt;/p&gt;
&lt;h3 id=&quot;ganancia-de-información&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ganancia-de-información&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ganancia de información&lt;/h3&gt;
&lt;p&gt;Si solo repites lo que dice Wikipedia, una IA no te citara. Debes proporcionar datos únicos, estudios de caso o opiniones de expertos que no esten disponibles en otro lugar. Este concepto, conocido como “Information Gain”, es el factor más crítico para las citaciones LLM en 2026.&lt;/p&gt;
&lt;p&gt;Fuentes de ganancia de información incluyen: investigación original, datos propietarios de tu negocio, análisis de tendencias basados en experiencia directa, comparativas técnicas realizadas internamente y opiniones fundamentadas de profesionales verificados en el campo.&lt;/p&gt;
&lt;h3 id=&quot;estructura-semántica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-semántica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura semántica&lt;/h3&gt;
&lt;p&gt;Los LLM procesan contenido de forma jerarquica. Asegurate de que tu estructura de encabezados refleje la jerarquía lógica de la información. Cada sección debe poder extraerse independientemente y tener sentido por si misma. Esto facilita que los modelos de lenguaje identifiquen y citen fragmentos específicos de tu contenido.&lt;/p&gt;
&lt;h2 id=&quot;3-la-estrategia-llm-card-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-la-estrategia-llm-card-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. La estrategia “LLM Card” para WordPress&lt;/h2&gt;
&lt;p&gt;En WPPoland incluimos “Resumenes de Datos” estructurados en la parte superior de cada publicación de formato largo. Esta estrategia ha demostrado ser extraordinariamente efectiva para obtener citaciones de modelos de lenguaje.&lt;/p&gt;
&lt;h3 id=&quot;por-que-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que funciona&lt;/h3&gt;
&lt;p&gt;Los rastreadores IA priorizan estos bloques porque son fáciles de ingerir, verificar y citar. Un resumen bien estructurado proporciona exactamente el tipo de contenido que los LLM buscan: afirmaciones claras, datos verificables y contexto suficiente para determinar la relevancia.&lt;/p&gt;
&lt;h3 id=&quot;implementación-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación técnica&lt;/h3&gt;
&lt;p&gt;Usa un bloque de Gutenberg estilizado como una caja de “Puntos Clave”. Detras de escena, asegurate de que estos datos esten envueltos en el &lt;strong&gt;Schema&lt;/strong&gt; apropiado de &lt;strong&gt;Product&lt;/strong&gt; o &lt;strong&gt;Article&lt;/strong&gt;. La combinación de presentacion visual clara y datos estructurados maximiza la probabilidad de citacion tanto por rastreadores IA como por motores de búsqueda tradicionales.&lt;/p&gt;
&lt;h3 id=&quot;formato-optimo-de-llm-card&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#formato-optimo-de-llm-card&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Formato optimo de LLM Card&lt;/h3&gt;
&lt;p&gt;Cada LLM Card debe contener: el nombre de la entidad principal, 3-5 hechos verificables con datos específicos, la fecha de última verificación, la fuente primaria y el nivel de confianza. Este formato estandarizado facilita la extraccion automatizada por parte de rastreadores y agentes IA.&lt;/p&gt;
&lt;h2 id=&quot;4-arquitectura-de-contenido-conversacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-arquitectura-de-contenido-conversacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Arquitectura de contenido conversacional&lt;/h2&gt;
&lt;p&gt;Las consultas de búsqueda IA son a menudo largas y conversacionales: &lt;em&gt;“Como escalo un WordPress Multisite para 100 subdominios empresariales usando Docker?”&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;la-solución&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución&lt;/h3&gt;
&lt;p&gt;Usa tu sección de FAQ estrategicamente. Formula tus preguntas exactamente como un usuario las diria en su telefono o escribiria en un chatbox. No uses jerga interna ni formatos academicos; usa el lenguaje natural que refleja como las personas realmente hacen preguntas.&lt;/p&gt;
&lt;h3 id=&quot;profundidad-de-respuesta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#profundidad-de-respuesta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Profundidad de respuesta&lt;/h3&gt;
&lt;p&gt;Responde el “como” y el “por que”, no solo el “que”. Las respuestas superficiales no generan citaciones. Los LLM buscan contenido que proporcione explicaciones completas, incluyendo contexto, matices y casos de uso específicos. Una respuesta de FAQ que incluye un ejemplo práctico tiene exponencialmente más probabilidades de ser citada que una respuesta generica.&lt;/p&gt;
&lt;h3 id=&quot;long-tail-conversacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#long-tail-conversacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Long-tail conversacional&lt;/h3&gt;
&lt;p&gt;Crea contenido que responda a preguntas de cola larga con formatos conversacionales. En lugar de optimizar para “WordPress SEO”, crea contenido que responda a “como puedo mejorar el SEO de mi tienda WooCommerce con productos en multiples idiomas”. Estas consultas específicas son exactamente las que los usuarios hacen a los motores de búsqueda IA.&lt;/p&gt;
&lt;h2 id=&quot;5-matriz-de-visibilidad-búsqueda-ia-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-matriz-de-visibilidad-búsqueda-ia-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Matriz de visibilidad: Búsqueda IA 2026&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Plataforma&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Método de Citacion&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Prioridad de Contenido&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Audiencia Objetivo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Google SGE&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Carrusel / Enlaces&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Autoridad Tematica&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Consumidores Globales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Perplexity&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Notas al Pie&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Precision Factual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Investigadores / Profesionales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;OpenAI Search&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Enlaces Conversacionales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Prominencia de Marca&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Lógica General&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Apple Intelligence&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fragmentos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Local / Personal&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Usuarios Moviles&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;estrategias-por-plataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-por-plataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias por plataforma&lt;/h3&gt;
&lt;p&gt;Cada plataforma de búsqueda IA tiene sus propias preferencias y algoritmos de citacion. Google SGE favorece sitios con autoridad temática demostrada a través de clusters de contenido interconectados. Perplexity prioriza la precision factual y las fuentes verificables. OpenAI Search valora la prominencia de marca y la presencia digital consistente.&lt;/p&gt;
&lt;h3 id=&quot;optimización-multiplataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-multiplataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización multiplataforma&lt;/h3&gt;
&lt;p&gt;No optimices para una sola plataforma. Implementa una estrategia que cubra los factores comunes a todas: datos estructurados Schema.org, contenido original verificable, autoria clara y estructura semántica solida. Estos factores fundamentales mejoran tu visibilidad en todas las plataformas de búsqueda IA simultaneamente.&lt;/p&gt;
&lt;h2 id=&quot;6-schema-markup-para-búsqueda-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-schema-markup-para-búsqueda-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Schema markup para búsqueda IA&lt;/h2&gt;
&lt;h3 id=&quot;article-schema-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#article-schema-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Article Schema avanzado&lt;/h3&gt;
&lt;p&gt;Mas alla del schema básico de Article, implementa propiedades avanzadas como &lt;code&gt;speakable&lt;/code&gt;, &lt;code&gt;about&lt;/code&gt;, &lt;code&gt;mentions&lt;/code&gt; y &lt;code&gt;citation&lt;/code&gt;. Estas propiedades ayudan a los rastreadores IA a entender el contexto, la relevancia y la autoridad de tu contenido.&lt;/p&gt;
&lt;h3 id=&quot;person-schema-para-autores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#person-schema-para-autores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Person Schema para autores&lt;/h3&gt;
&lt;p&gt;Cada autor en tu sitio debe tener un schema de Person robusto que incluya credenciales, afiliaciones, publicaciónes y enlaces a perfiles profesionales verificables. Los LLM verifican la existencia y credibilidad de los autores antes de citar su contenido.&lt;/p&gt;
&lt;h2 id=&quot;7-metricas-y-medicion-del-rendimiento-aio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-metricas-y-medicion-del-rendimiento-aio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Metricas y medicion del rendimiento AIO&lt;/h2&gt;
&lt;h3 id=&quot;nuevas-metricas-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nuevas-metricas-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nuevas metricas para 2026&lt;/h3&gt;
&lt;p&gt;Las metricas tradicionales de SEO (posiciones, CTR, impresiones) siguen siendo relevantes, pero necesitas agregar metricas específicas de AIO: frecuencia de citacion en respuestas IA, share of voice en SGE, precision de las citaciones y tráfico de referencia desde motores de respuestas.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de monitoreo&lt;/h3&gt;
&lt;p&gt;Utiliza herramientas como Ahrefs (que ahora rastrea citaciones SGE), SEMrush AI Search Monitor y herramientas propietarias que monitorizan menciones de tu marca en respuestas de LLM. El monitoreo manual también es valioso: busca regularmente tus temas principales en SGE, Perplexity y ChatGPT para verificar si tu sitio esta siendo citado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pro-tip-verificación-y-confianza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pro-tip-verificación-y-confianza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PRO-Tip: Verificación y confianza&lt;/h2&gt;
&lt;p&gt;En 2026, las “alucinaciones” son el enemigo de la búsqueda IA. Los LLM estan programados para citar la fuente más &lt;em&gt;verificada&lt;/em&gt;. Para maximizar tus probabilidades de citacion:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enlaza a estudios externos de alta autoridad que respalden tus afirmaciones.&lt;/li&gt;
&lt;li&gt;Asegurate de que tu &lt;strong&gt;Schema de Autor&lt;/strong&gt; (&lt;code&gt;Person&lt;/code&gt;) sea robusto, mostrando que el escritor es un experto real en el campo.&lt;/li&gt;
&lt;li&gt;La transparencia en las citaciones construye la confianza necesaria para que la IA te recomiende.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO y optimización GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Optimizar para la búsqueda IA no se trata de manipular un sistema; se trata de proporcionar la mejor y más clara información a los bots que ahora gobiernan el descubrimiento humano. Al enfocarte en la &lt;strong&gt;Claridad de Afirmacion&lt;/strong&gt; y la &lt;strong&gt;Ganancia de Información&lt;/strong&gt; en tu contenido WordPress, aseguras tu lugar en las citaciones de 2026.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio IA WordPress&lt;/a&gt; para integrar la inteligencia artificial en tu estrategia comercial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tu sitio esta listo para ser la respuesta? Optimiza para la búsqueda IA hoy.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">ai-search</category><category domain="tag">sge</category><category domain="tag">llm-optimization</category><category domain="tag">citations</category><category domain="tag">future-of-search</category><enclosure url="https://wppoland.com/images/og/web-development-seminar-room.jpg" type="image/jpeg"/></item><item><title>Desarrollo WordPress impulsado por IA: Productividad y personalización en 2026</title><link>https://wppoland.com/es/ai-driven-wordpress-development-2026-productivity-guide/</link><guid isPermaLink="true">https://wppoland.com/es/ai-driven-wordpress-development-2026-productivity-guide/</guid><description>La IA ya no solo genera texto. En 2026, impulsa todo el ciclo de vida del desarrollo. Esta guía de más de 2500 palabras explora la codificacion asistida por IA y el contenido dinámico.</description><pubDate>Mon, 14 Jul 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Para 2026, la era de la “codificacion manual” esta llegando a su fin. La Inteligencia Artificial ha pasado de ser un curioso experimento a convertirse en el &lt;strong&gt;sistema operativo del desarrollador&lt;/strong&gt;. Para la agencia WordPress moderna, la IA es el socio silencioso involucrado en cada commit, cada decision de diseño y cada interacción del usuario.&lt;/p&gt;
&lt;p&gt;En esta guía exhaustiva de más de 2500 palabras, analizamos como el desarrollo impulsado por IA esta remodelando el panorama de WordPress, desde el IDE hasta la experiencia del frontend, transformando fundamentalmente la manera en que concebimos, construimos y optimizamos sitios web empresariales.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-el-código-base-ai-first-mas-alla-del-boilerplate&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-código-base-ai-first-mas-alla-del-boilerplate&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El código base AI-First: Mas alla del boilerplate&lt;/h2&gt;
&lt;p&gt;Codificar para WordPress en 2026 se trata de &lt;strong&gt;ingenieria de prompts y orquestacion&lt;/strong&gt;. Los desarrolladores ya no escriben cada linea de código desde cero; en su lugar, dirigen agentes de IA que comprenden profundamente el ecosistema WordPress.&lt;/p&gt;
&lt;h3 id=&quot;ides-conscientes-del-contexto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ides-conscientes-del-contexto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IDEs conscientes del contexto&lt;/h3&gt;
&lt;p&gt;Herramientas como Cursor y GitHub Copilot 2026 han sido entrenadas específicamente en el nucleo de Gutenberg y los estándares de codificacion de WordPress. No solo “adivinan” código; comprenden los matices del sistema de hooks, la jerarquía de templates y las mejores prácticas de seguridad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capacidades clave en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autocompletado semántico&lt;/strong&gt;: El IDE sugiere hooks y filtros de WordPress basandose en el contexto del archivo actual&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación de bloques&lt;/strong&gt;: Crear un bloque Gutenberg personalizado completo a partir de una descripción en lenguaje natural&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refactorizacion inteligente&lt;/strong&gt;: Convertir código procesal antiguo en clases modernas con tipado estricto PHP 8.3+&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deteccion de vulnerabilidades&lt;/strong&gt;: Identificar patrones inseguros como inyecciones SQL o XSS antes de que el código llegue a producción&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;refactorizacion-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#refactorizacion-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Refactorizacion a escala&lt;/h3&gt;
&lt;p&gt;Los agentes de IA ahora pueden tomar un plugin basado en jQuery legacy y refactorizarlo en bloques modernos basados en React en minutos, manteniendo la lógica mientras modernizan la arquitectura. Este proceso que antes tomaba semanas de trabajo manual ahora se completa en horas con supervision humana.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo práctico:&lt;/strong&gt; Un clientes de WPPoland tenia un plugin de formularios personalizado con 15.000 lineas de código jQuery escrito en 2017. Utilizando agentes de IA con supervision de nuestro equipo senior, refactorizamos el plugin completo a React con bloques Gutenberg en 3 dias, manteniendo el 100% de la funcionalidad original mientras mejoramos el rendimiento en un 60%.&lt;/p&gt;
&lt;h3 id=&quot;generación-de-pruebas-automatizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generación-de-pruebas-automatizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Generación de pruebas automatizada&lt;/h3&gt;
&lt;p&gt;La IA no solo escribe código; también lo prueba. En 2026, los agentes de IA generan automáticamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pruebas unitarias para cada función pública&lt;/li&gt;
&lt;li&gt;Pruebas de integración para interacciones entre plugins&lt;/li&gt;
&lt;li&gt;Pruebas de rendimiento que identifican cuellos de botella antes del despliegue&lt;/li&gt;
&lt;li&gt;Pruebas de accesibilidad que verifican el cumplimiento WCAG 2.2&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-personalización-dinámica-la-interfaz-que-se-auto-ajusta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-personalización-dinámica-la-interfaz-que-se-auto-ajusta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Personalización dinámica: La interfaz que se auto-ajusta&lt;/h2&gt;
&lt;p&gt;En 2026, un sitio WordPress ya no es estatico. Es un camaleon que se adapta a su visitante, ofreciendo experiencias únicas basadas en datos comportamentales y contextuales en tiempo real.&lt;/p&gt;
&lt;h3 id=&quot;prediccion-de-intenciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prediccion-de-intenciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prediccion de intenciones&lt;/h3&gt;
&lt;p&gt;Utilizando IA en el edge (borde de la red), WordPress predice si un usuario busca comprar, investigar o conectarse. Esta prediccion se realiza en milisegundos, sin enviar datos personales a servidores externos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como funciona:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El usuario llega al sitio desde una búsqueda específica&lt;/li&gt;
&lt;li&gt;La IA analiza el query de búsqueda, la hora del dia y el tipo de dispositivo&lt;/li&gt;
&lt;li&gt;Se genera un perfil de intencion anonimo (comprador, investigador, comparador)&lt;/li&gt;
&lt;li&gt;El contenido se adapta automáticamente al perfil&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;morphing-de-layout&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#morphing-de-layout&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Morphing de layout&lt;/h3&gt;
&lt;p&gt;Las secciones de Gutenberg pueden reordenarse automáticamente o destacar funcionalidades específicas basandose en el comportamiento previo del usuario, un nivel de personalización que antes estaba reservado para plataformas SaaS de millones de dolares.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación práctica:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Patron de personalización basada en intencion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; personalize_gutenberg_layout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($blocks, $user_intent) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $intent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; detect_user_intent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($intent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;buyer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; prioritize_blocks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($blocks, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pricing&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;testimonials&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cta&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($intent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;researcher&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; prioritize_blocks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($blocks, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;features&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;comparison&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;documentation&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $blocks;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;aprendizaje-en-el-dispositivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aprendizaje-en-el-dispositivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aprendizaje en el dispositivo&lt;/h3&gt;
&lt;p&gt;La personalización en 2026 no depende de cookies de terceros ni de servidores centralizados de datos. En su lugar, utiliza &lt;strong&gt;modelos de aprendizaje automático en el dispositivo&lt;/strong&gt; que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Respetan la privacidad del usuario al 100%&lt;/li&gt;
&lt;li&gt;Funcionan sin conexión a internet&lt;/li&gt;
&lt;li&gt;Mejoran con cada interacción sin enviar datos personales&lt;/li&gt;
&lt;li&gt;Cumplen nativamente con GDPR, CCPA y otras regulaciones de privacidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta arquitectura representa un cambio fundamental: la personalización ya no requiere sacrificar la privacidad del usuario. WordPress en 2026 demuestra que es posible ofrecer experiencias altamente relevantes mientras se mantiene el maximo respeto por los datos personales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-rag-y-el-futuro-de-la-búsqueda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-rag-y-el-futuro-de-la-búsqueda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. RAG y el futuro de la búsqueda&lt;/h2&gt;
&lt;p&gt;La búsqueda tradicional de WordPress (basada en SQL) esta muerta en 2026 para sitios de alto rendimiento. Ha sido reemplazada por &lt;strong&gt;Búsqueda Vectorial y RAG (Generación Aumentada por Recuperacion)&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;bases-de-conocimiento-inteligentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bases-de-conocimiento-inteligentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bases de conocimiento inteligentes&lt;/h3&gt;
&lt;p&gt;Al indexar su contenido en una base de datos vectorial, la barra de búsqueda de su sitio se convierte en un asistente de IA. Proporciona respuestas &lt;em&gt;extraidas directamente de sus publicaciónes&lt;/em&gt;, citando fuentes y proporcionando contexto relevante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura de una búsqueda RAG en WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Indexacion vectorial&lt;/strong&gt;: Cada post, página y producto se convierte en embeddings vectoriales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento&lt;/strong&gt;: Los vectores se almacenan en bases de datos especializadas (Pinecone, Weaviate o pgvector)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consulta semántica&lt;/strong&gt;: Cuando un usuario busca, su query se convierte en un vector y se buscan los contenidos más similares semanticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación de respuesta&lt;/strong&gt;: Un LLM genera una respuesta natural utilizando los fragmentos recuperados como contexto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Citacion de fuentes&lt;/strong&gt;: Cada respuesta incluye enlaces a las páginas originales del sitio&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ayuda-contextual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ayuda-contextual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ayuda contextual&lt;/h3&gt;
&lt;p&gt;Para portales corporativos complejos, la navegación impulsada por IA sugiere el whitepaper o caso de estudio exacto que el usuario necesita basandose en su vista de página actual, historial de navegación y perfil profesional inferido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios medibles:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduccion del 45% en solicitudes de soporte al clientes&lt;/li&gt;
&lt;li&gt;Aumento del 30% en el tiempo de permanencia en el sitio&lt;/li&gt;
&lt;li&gt;Mejora del 25% en tasas de conversión de contenido premium&lt;/li&gt;
&lt;li&gt;Disminucion del 60% en la tasa de rebote de páginas de documentación&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;búsqueda-conversacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#búsqueda-conversacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Búsqueda conversacional&lt;/h3&gt;
&lt;p&gt;En 2026, los usuarios no solo buscan; &lt;strong&gt;conversan&lt;/strong&gt; con su sitio. La búsqueda RAG permite dialogos multi-turno donde el sistema recuerda el contexto de preguntas anteriores y refina progresivamente las respuestas. Esta capacidad transforma un sitio WordPress de un repositorio pasivo de información en un asistente activo de conocimiento.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-flujos-de-trabajo-de-contenido-inteligentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-flujos-de-trabajo-de-contenido-inteligentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Flujos de trabajo de contenido inteligentes&lt;/h2&gt;
&lt;p&gt;La IA ha transformado la “Experiencia del Editor” en 2026, convirtiendo el proceso de creación de contenido en una colaboración hombre-maquina que produce resultados superiores en menos tiempo.&lt;/p&gt;
&lt;h3 id=&quot;cumplimiento-automático-de-e-e-a-t&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cumplimiento-automático-de-e-e-a-t&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cumplimiento automático de E-E-A-T&lt;/h3&gt;
&lt;p&gt;Mientras escribe en Gutenberg, un agente de IA analiza su contenido en busca de señales E-E-A-T, sugiriendo fuentes para citar o identificando areas donde debe enfatizarse la experiencia personal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Funcionalidades del asistente E-E-A-T:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifica que cada afirmacion factual tenga una fuente citada&lt;/li&gt;
&lt;li&gt;Sugiere enlaces internos relevantes para fortalecer la autoridad temática&lt;/li&gt;
&lt;li&gt;Identifica oportunidades para agregar experiencia de primera mano&lt;/li&gt;
&lt;li&gt;Recomienda mejoras en la estructura del contenido para optimizar la legibilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;generación-multimodal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generación-multimodal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Generación multimodal&lt;/h3&gt;
&lt;p&gt;Dele a WordPress un video de webinar, y automáticamente generara un post resumen, una transcripcion completa, y clips segmentados para redes sociales, todo optimizado para el SEO de 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flujo de trabajo multimodal:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Entrada&lt;/strong&gt;: Video del webinar (60 minutos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procesamiento&lt;/strong&gt;: Transcripcion automática con marcas de tiempo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación&lt;/strong&gt;: Post de blog con puntos clave y citas textuales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización&lt;/strong&gt;: Schema markup automático (VideoObject, HowTo, FAQ)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribucion&lt;/strong&gt;: 10 clips de 60 segundos para redes sociales con subtitulos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: Meta descripciones, alt text para thumbnails y datos estructurados&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;traduccion-y-localización-inteligente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#traduccion-y-localización-inteligente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Traduccion y localización inteligente&lt;/h3&gt;
&lt;p&gt;La IA en 2026 no solo traduce; &lt;strong&gt;localiza&lt;/strong&gt;. Entiende matices culturales, adapta ejemplos al mercado local y ajusta el tono del contenido para diferentes audiencias geograficas. Para una agencia como WPPoland que trabaja con clientes en Polonia, Alemania, Austria y toda Europa, esta capacidad es transformadora.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-la-pila-de-ia-etica-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-la-pila-de-ia-etica-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. La pila de IA etica para WordPress&lt;/h2&gt;
&lt;p&gt;“IA Responsable” es un requisito arquitectonico primario en 2026, no un complemento opcional. Las empresas que ignoran la etica de la IA enfrentan riesgos legales, reputacionales y operaciónales significativos.&lt;/p&gt;
&lt;h3 id=&quot;soberania-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soberania-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soberania de datos&lt;/h3&gt;
&lt;p&gt;Implementamos LLMs locales o instancias de API privadas para asegurar que los datos sensibles de los clientes nunca abandonen el entorno corporativo con fines de entrenamiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura de IA privada:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLMs on-premise&lt;/strong&gt;: Modelos como Llama 3 ejecutandose en infraestructura propia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API gateways seguros&lt;/strong&gt;: Proxy que filtra datos sensibles antes de enviarlos a APIs externas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento cifrado&lt;/strong&gt;: Todos los embeddings vectoriales se almacenan con cifrado AES-256&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registros de auditoria&lt;/strong&gt;: Cada interacción con la IA se registra para cumplimiento regulatorio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;auditoria-de-sesgos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-de-sesgos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria de sesgos&lt;/h3&gt;
&lt;p&gt;Usamos IA para auditar otros modelos de IA en busca de sesgos en la personalización, asegurando una experiencia de usuario justa y transparente. Esto incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Análisis de equidad en recomendaciónes de contenido&lt;/li&gt;
&lt;li&gt;Deteccion de patrones discriminatorios en la segmentacion de audiencias&lt;/li&gt;
&lt;li&gt;Verificación de que la personalización no cree “burbujas de filtro”&lt;/li&gt;
&lt;li&gt;Informes trimestrales de sesgo con metricas cuantificables&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;transparencia-algorritmica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transparencia-algorritmica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transparencia algorritmica&lt;/h3&gt;
&lt;p&gt;En 2026, los usuarios tienen derecho a saber cuando interactuan con contenido generado o personalizado por IA. Implementamos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Etiquetas claras para contenido generado por IA&lt;/li&gt;
&lt;li&gt;Explicaciones accesibles de por que se muestra contenido personalizado&lt;/li&gt;
&lt;li&gt;Opciones para que los usuarios desactiven la personalización&lt;/li&gt;
&lt;li&gt;Cumplimiento con la Ley de IA de la UE y regulaciones similares&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-automatizacion-del-pipeline-de-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-automatizacion-del-pipeline-de-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Automatizacion del pipeline de desarrollo&lt;/h2&gt;
&lt;p&gt;La IA en 2026 no solo ayuda a escribir código; automatiza todo el pipeline de desarrollo WordPress.&lt;/p&gt;
&lt;h3 id=&quot;cicd-inteligente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cicd-inteligente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CI/CD inteligente&lt;/h3&gt;
&lt;p&gt;Los pipelines de integración continua utilizan IA para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Priorizar pruebas&lt;/strong&gt;: Ejecutar primero las pruebas más relevantes para los cambios realizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detectar regresiones&lt;/strong&gt;: Identificar cambios que podrian afectar el rendimiento antes del merge&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizar builds&lt;/strong&gt;: Reducir los tiempos de compilacion seleccionando inteligentemente que se necesita reconstruir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisar código&lt;/strong&gt;: Proporcionar revisiones automáticas de código que van más alla del linting básico&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;monitoreo-predictivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-predictivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo predictivo&lt;/h3&gt;
&lt;p&gt;La IA analiza patrones de tráfico y rendimiento para predecir problemas antes de que ocurran:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alertas proactivas de degradacion de rendimiento&lt;/li&gt;
&lt;li&gt;Prediccion de picos de tráfico basada en patrones históricos&lt;/li&gt;
&lt;li&gt;Escalado automático de infraestructura antes de eventos de alto tráfico&lt;/li&gt;
&lt;li&gt;Deteccion temprana de ataques de seguridad basada en patrones anomalos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;documentación-automática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#documentación-automática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Documentación automática&lt;/h3&gt;
&lt;p&gt;Los agentes de IA generan y mantienen la documentación actualizada automáticamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documentación de API para endpoints personalizados&lt;/li&gt;
&lt;li&gt;Guias de usuario para bloques Gutenberg personalizados&lt;/li&gt;
&lt;li&gt;Changelogs automáticos basados en commits&lt;/li&gt;
&lt;li&gt;Diagramás de arquitectura generados a partir del código fuente&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-casos-de-uso-empresariales-reales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-casos-de-uso-empresariales-reales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Casos de uso empresariales reales&lt;/h2&gt;
&lt;h3 id=&quot;portal-de-comercio-electronico-con-personalización-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#portal-de-comercio-electronico-con-personalización-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Portal de comercio electronico con personalización IA&lt;/h3&gt;
&lt;p&gt;Un clientes de WPPoland con una &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tienda WooCommerce&lt;/a&gt; de más de 10.000 productos implemento personalización basada en IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: Aumento del 35% en valor promedio de pedido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Método&lt;/strong&gt;: Recomendaciones de productos basadas en comportamiento de navegación en tiempo real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tecnologia&lt;/strong&gt;: WordPress headless + modelos de recomendación en el edge&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;portal-de-noticias-con-contenido-adaptativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#portal-de-noticias-con-contenido-adaptativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Portal de noticias con contenido adaptativo&lt;/h3&gt;
&lt;p&gt;Un medio digital con 500 artículos mensuales utilizo flujos de trabajo de IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: Reduccion del 50% en tiempo de producción de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Método&lt;/strong&gt;: Generación de borradores, optimización SEO automática y traduccion simultanea&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tecnologia&lt;/strong&gt;: WordPress + RAG para búsqueda interna + agentes de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sitio-corporativo-multilingue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitio-corporativo-multilingue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitio corporativo multilingue&lt;/h3&gt;
&lt;p&gt;Una empresa europea con presencia en 12 paises implemento localización inteligente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: 60% menos de costos de traduccion con mejor calidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Método&lt;/strong&gt;: Traduccion asistida por IA con revision humana minima&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tecnologia&lt;/strong&gt;: WordPress Multisite + modelos de traduccion especializados&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-herramientas-y-tecnologías-clave-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-herramientas-y-tecnologías-clave-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Herramientas y tecnologías clave en 2026&lt;/h2&gt;
&lt;h3 id=&quot;stack-de-desarrollo-ia-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stack-de-desarrollo-ia-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Stack de desarrollo IA para WordPress&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Herramienta&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Función&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Integración WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cursor IDE&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Codificacion asistida por IA&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extensiones WP nativas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Autocompletado inteligente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Conocimiento del ecosistema WP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WPGraphQL + IA&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Consultas optimizadas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Generación automática de schemás&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Pinecone/Weaviate&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Búsqueda vectorial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Plugin RAG para WordPress&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cloudflare Workers AI&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;IA en el edge&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Personalización sin latencia&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;metricas-de-productividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-productividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de productividad&lt;/h3&gt;
&lt;p&gt;Las agencias que adoptan desarrollo IA-first reportan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;40% más rápido&lt;/strong&gt; en desarrollo de temas personalizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;60% menos bugs&lt;/strong&gt; en producción gracias a pruebas automáticas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30% menos tiempo&lt;/strong&gt; en depuracion y mantenimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;50% de reduccion&lt;/strong&gt; en tiempo de onboarding de nuevos desarrolladores&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-por-que-wppoland-es-su-socio-de-desarrollo-impulsado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-por-que-wppoland-es-su-socio-de-desarrollo-impulsado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Por que WPPoland es su socio de desarrollo impulsado por IA&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, somos “IA-Nativos”. No tratamos la IA como un complemento; es parte integral de cada proyecto que emprendemos.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Integración de flujos de trabajo IA&lt;/strong&gt;: Ayudamos a su equipo interno a integrar herramientas de IA para acelerar los ciclos de contenido y desarrollo. Desde la configuración del IDE hasta la implementación de pipelines automatizados, proporcionamos la infraestructura y el conocimiento necesarios.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes RAG personalizadas&lt;/strong&gt;: Convertimos su sitio WordPress en un hub de conocimiento inteligente utilizando las últimás tecnologías de búsqueda vectorial. Sus usuarios obtienen respuestas precisas instantaneamente, no listas de resultados irrelevantes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Personalización avanzada&lt;/strong&gt;: Construimos frontends de alta conversión impulsados por IA que se adaptan a su audiencia en tiempo real, respetando siempre la privacidad y las regulaciones vigentes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Auditoria de IA&lt;/strong&gt;: Evaluamos su stack tecnológico actual e identificamos oportunidades para integrar IA de manera etica, segura y rentable.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; y como la IA mejora el rendimiento de su sitio.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-conclusion-el-futuro-inteligente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-conclusion-el-futuro-inteligente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Conclusion: El futuro inteligente&lt;/h2&gt;
&lt;p&gt;El desarrollo en 2026 se trata de &lt;strong&gt;inteligencia, no solo de código&lt;/strong&gt;. WordPress ha evolucionado para ser el anfitrion perfecto de experiencias impulsadas por IA. Al adoptar estas herramientas, no solo esta construyendo un sitio web más rápido; esta construyendo un negocio más inteligente.&lt;/p&gt;
&lt;p&gt;La transicion hacia el desarrollo WordPress impulsado por IA no es una tendencia pasajera; es una transformación fundamental en como concebimos y construimos la web. Las agencias y equipos de desarrollo que adopten estas prácticas hoy estaran posicionados para liderar manana. Los que se resistan quedaran atrapados en flujos de trabajo manuales que simplemente no pueden competir en velocidad, calidad ni costo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Su flujo de trabajo de desarrollo esta todavia atrapado en la era manual? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para construir su futuro WordPress impulsado por IA hoy.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Servicios de desarrollo de alto rendimiento&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Comercio electronico inteligente con IA&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;Comercio IA WordPress&lt;/a&gt; - Estrategias de comercio impulsado por inteligencia artificial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; - Optimización para motores de búsqueda con IA&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad inteligente para sitios modernos&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>ai</category><category domain="tag">ai-driven-development</category><category domain="tag">machine-learning</category><category domain="tag">copilot</category><category domain="tag">personalization</category><category domain="tag">wordpress-2026</category><enclosure url="https://wppoland.com/images/og/web-development-seminar-room.jpg" type="image/jpeg"/></item><item><title>Plataformás de experiencia digital (DXP) vs. WordPress: Comparación 2026</title><link>https://wppoland.com/es/digital-experience-platform-dxp-vs-wordpress-2026/</link><guid isPermaLink="true">https://wppoland.com/es/digital-experience-platform-dxp-vs-wordpress-2026/</guid><description>Su empresa esta lista para un DXP, o puede WordPress escalar para satisfacer sus necesidades? Analizamos el TCO, la agilidad y las capacidades de integración de Adobe/Sitecore vs. WordPress Enterprise.</description><pubDate>Mon, 07 Jul 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, las empresas enfrentan una decision crítica: invertir cientos de miles de euros en una Plataforma de Experiencia Digital (DXP) monolitica como Adobe Experience Manager o Sitecore, o construir un DXP composable con WordPress como nucleo y herramientas best-of-breed conectadas via APIs. La respuesta, para la gran mayoria de las organizaciónes, favorece la segunda opción.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía analiza ambos enfoques en profundidad, comparando funcionalidades, costes, agilidad y riesgos para ayudarle a tomar la decision correcta.&lt;/p&gt;
&lt;h2 id=&quot;1-que-es-un-dxp-y-por-que-importa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-que-es-un-dxp-y-por-que-importa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Que es un DXP y por que importa&lt;/h2&gt;
&lt;p&gt;Una Plataforma de Experiencia Digital (DXP) es un conjunto integrado de tecnologías disenadas para crear, gestionar y optimizar experiencias digitales a través de multiples canales. Los componentes tipicos incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CMS&lt;/strong&gt; (Content Management System): Gestión de contenido web y digital&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAM&lt;/strong&gt; (Digital Asset Management): Gestión de activos visuales y multimedia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDP&lt;/strong&gt; (Customer Data Platform): Datos unificados del clientes para personalización&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalización&lt;/strong&gt;: Motor de reglas para experiencias adaptadas por segmento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commerce&lt;/strong&gt;: Funcionalidades de comercio electronico integradas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analytics&lt;/strong&gt;: Analiticas integradas con el resto de la plataforma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Marketing Automation&lt;/strong&gt;: Flujos de marketing automatizados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-problema-del-dxp-monolitico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-del-dxp-monolitico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema del DXP monolitico&lt;/h3&gt;
&lt;p&gt;Los DXPs monoliticos como Adobe AEM y Sitecore prometen que todos estos componentes funcionan perfectamente juntos. La realidad en 2026 es diferente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Costes astronómicos&lt;/strong&gt;: Licencias de 150.000 a 1.000.000+ EUR anuales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementación lenta&lt;/strong&gt;: 6-18 meses para una implementación completa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vendor lock-in extremo&lt;/strong&gt;: Migrar despues de 3 años de inversión es prohibitivamente costoso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Talento escaso&lt;/strong&gt;: Los especialistas en AEM o Sitecore son caros y dificiles de encontrar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funcionalidades infrautilizadas&lt;/strong&gt;: La mayoria de las empresas usan menos del 30% de las capacidades por las que pagan&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-wordpress-como-nucleo-del-dxp-composable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-wordpress-como-nucleo-del-dxp-composable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. WordPress como nucleo del DXP Composable&lt;/h2&gt;
&lt;p&gt;El concepto de &lt;strong&gt;DXP Composable&lt;/strong&gt; ha ganado traccion masiva en 2026. En lugar de comprar una suite monolitica, las empresas ensamblan su propia pila de tecnología usando las mejores herramientas en cada categoría, conectadas via APIs.&lt;/p&gt;
&lt;h3 id=&quot;arquitectura-wordpress-dxp-composable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-wordpress-dxp-composable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura WordPress DXP Composable&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;WordPress (CMS) &amp;#x3C;--API--&gt; Algolia (Búsqueda)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      +--API--&gt; Cloudinary/Bunny (DAM)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      +--API--&gt; Segment (CDP)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      +--API--&gt; WooCommerce/Shopify (Commerce)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      +--API--&gt; Mailchimp/HubSpot (Marketing)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      +--API--&gt; Mixpanel/Amplitude (Analytics)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      +--API--&gt; Astro/Next.js (Frontend)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ventajas-del-enfoque-composable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-del-enfoque-composable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas del enfoque composable&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Best-of-breed en cada categoría&lt;/strong&gt;: Algolia es mejor para búsqueda que el modulo de búsqueda de AEM. Segment es mejor para CDP que el CDP integrado de Sitecore. Puede elegir la mejor herramienta en cada categoría.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Flexibilidad total&lt;/strong&gt;: Si Algolia no funciona, puede reemplazarlo por Typesense sin tocar el resto de la pila. Con un DXP monolitico, esta atrapado con cada componente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Coste predecible y modular&lt;/strong&gt;: Pague solo por lo que usa. Si no necesita CDP todavia, no lo implemente. Anadalo cuando lo necesite.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Time-to-market rápido&lt;/strong&gt;: Puede tener un MVP funcional en semanas, no meses. Itere y aada componentes incrementalmente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Talento accesible&lt;/strong&gt;: Los desarrolladores WordPress, React y especialistas en herramientas individuales son abundantes y asequibles.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;3-comparación-funcional-detallada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-comparación-funcional-detallada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Comparación funcional detallada&lt;/h2&gt;
&lt;h3 id=&quot;gestión-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de contenido&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Capacidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;DXP Monolitico&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Composable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Editor visual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (complejo)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (Gutenberg + Elementor)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Workflows de aprobacion&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (nativo)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (plugins editoriales)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Versionado de contenido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (nativo desde WP 2.0)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Multilingue&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (nativo)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (WPML, Polylang, Weglot)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Contenido estructurado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (ACF Pro, Pods, Meta Box)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;API de contenido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (REST API + WPGraphQL)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Empate&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Empate&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;personalización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#personalización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Personalización&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Capacidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;DXP Monolitico&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Composable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Segmentacion básica&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (plugins + CDP externo)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;A/B Testing&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (nativo)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (Google Optimize, VWO)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Personalización en tiempo real&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (superior)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Parcial (requiere CDP)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Machine learning&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (integrado)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Via integración (Segment + ML)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;DXP gana&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Para el 90% de los casos, WordPress es suficiente&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;comercio-electronico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comercio-electronico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comercio electronico&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Capacidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;DXP Monolitico&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Composable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Catálogo de productos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt;)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Checkout personalizable&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Total control&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Pasarelas de pago&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitadas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ilimitadas (Stripe, PayPal, etc.)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Escalabilidad&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta (con HPOS y Redis)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WordPress gana&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mayor flexibilidad y menores costes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;4-tco-comparativo-a-5-años&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-tco-comparativo-a-5-años&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. TCO comparativo a 5 años&lt;/h2&gt;
&lt;h3 id=&quot;empresa-mediana-50k-500k-visitasmes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#empresa-mediana-50k-500k-visitasmes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Empresa mediana (50K-500K visitas/mes)&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;DXP Monolitico (AEM)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Composable&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Licencias (5 años)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;750.000-5.000.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0 EUR (código abierto)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Herramientas composables (5 años)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;N/A&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;60.000-300.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Implementación&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;300.000-2.000.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50.000-300.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mantenimiento (5 años)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;500.000-2.500.000 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;120.000-600.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting (5 años)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido/separado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;36.000-180.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO Total 5 años&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1.550.000-9.500.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;266.000-1.380.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ratio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;5x-7x más caro&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Referencia&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;5-cuando-un-dxp-monolitico-tiene-sentido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-cuando-un-dxp-monolitico-tiene-sentido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Cuando un DXP monolitico tiene sentido&lt;/h2&gt;
&lt;p&gt;A pesar del análisis de costes, existen escenarios donde un DXP monolitico puede justificarse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortune 500 con 100+ sitios&lt;/strong&gt; que necesitan orquestacion de experiencias multicanal a escala global con gobernanza centralizada estricta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organizaciones all-in en ecosistema Adobe&lt;/strong&gt; que ya utilizan Creative Cloud, Analytics, Target, Campaign y Marketo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Industrias altamente reguladas&lt;/strong&gt; (banca, seguros) donde la certificacion del proveedor es un requisito contractual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presupuesto IT de 8+ cifras&lt;/strong&gt; donde el coste de licencias es insignificante comparado con otros gastos tecnológicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para el 95% restante de las empresas, WordPress composable ofrece mejor valor, mayor agilidad y menor riesgo.&lt;/p&gt;
&lt;h2 id=&quot;6-hoja-de-ruta-para-construir-su-dxp-composable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-hoja-de-ruta-para-construir-su-dxp-composable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Hoja de ruta para construir su DXP Composable&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-cms--frontend-mes-1-3&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-cms--frontend-mes-1-3&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: CMS + Frontend (Mes 1-3)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;WordPress como backend de contenido&lt;/li&gt;
&lt;li&gt;Frontend Astro o Next.js para maxima velocidad&lt;/li&gt;
&lt;li&gt;CDN/Edge caching para rendimiento global&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-búsqueda--analytics-mes-3-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-búsqueda--analytics-mes-3-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Búsqueda + Analytics (Mes 3-4)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Algolia o Typesense para búsqueda instantanea&lt;/li&gt;
&lt;li&gt;Mixpanel o Google Analytics 4 para analíticas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-3-personalización--marketing-mes-5-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-personalización--marketing-mes-5-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Personalización + Marketing (Mes 5-6)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Segment como CDP para datos unificados del clientes&lt;/li&gt;
&lt;li&gt;HubSpot o Mailchimp para automatizacion de marketing&lt;/li&gt;
&lt;li&gt;A/B testing con herramienta dedicada&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-4-commerce--optimización-mes-7&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-commerce--optimización-mes-7&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Commerce + Optimización (Mes 7+)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;WooCommerce para comercio electronico&lt;/li&gt;
&lt;li&gt;Stripe para pagos internacionales&lt;/li&gt;
&lt;li&gt;Optimización continua basada en datos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;En 2026, el DXP composable basado en WordPress es la opción estrategicamente superior para la gran mayoria de las empresas. Ofrece funcionalidades comparables a los DXPs monoliticos a una fraccion del coste, con mayor agilidad, menor riesgo y un ecosistema de talento más accesible.&lt;/p&gt;
&lt;p&gt;Si esta evaluando DXPs o considerando una migración desde un sistema monolitico, contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para un análisis personalizado. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt;, &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;integraciones API&lt;/a&gt; y &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;arquitectura composable&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Arquitecturas composables&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Commerce composable&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a frameworks modernos&lt;/a&gt; - Frontends headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Rendimiento enterprise&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>enterprise</category><category>technology</category><category domain="tag">dxp</category><category domain="tag">enterprise-wordpress</category><category domain="tag">cms-comparison</category><category domain="tag">composable-architecture</category><category domain="tag">martech</category><enclosure url="https://wppoland.com/images/og/wordpress-security-why-updates-and-security-measures-are-crucial.jpg" type="image/jpeg"/></item><item><title>SEO de video en 2026: Integración de medios enriquecidos con WordPress</title><link>https://wppoland.com/es/wordpress-video-seo-guide-2026-en/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-video-seo-guide-2026-en/</guid><description>En 2026, el texto por si solo no es suficiente. Aprenda a optimizar contenido de video para YouTube, TikTok e integración directa con la búsqueda de Google usando WordPress.</description><pubDate>Sun, 29 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;El texto por si solo ya no es suficiente para ganar la guerra del SEO. &lt;strong&gt;El SEO de video&lt;/strong&gt; es el motor que impulsa el tráfico de alta intencion hacia su sitio WordPress. Si un motor de búsqueda no puede “ver” su contenido, podria ignorarlo completamente.&lt;/p&gt;
&lt;p&gt;En 2026, el contenido de video domina los resultados de búsqueda. Las funciones de búsqueda impulsadas por IA de Google ahora priorizan experiencias de medios enriquecidos, con video apareciendo en el 60% de las consultas informativas. Esta guía exhaustiva le mostrara como integrar y optimizar contenido de video en su sitio WordPress para maxima visibilidad y engagement.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;mejor-guia-de-video-para-optimizacion-seo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejor-guia-de-video-para-optimizacion-seo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejor guia de video para optimizacion SEO en 2026&lt;/h2&gt;
&lt;p&gt;Si busca una unica guia practica sobre video SEO en 2026, esta es. El panorama ha cambiado drasticamente: los resultados de busqueda de Google son ahora un 60% visuales, y el contenido de video genera un 200% mas de tiempo de permanencia que el texto solo.&lt;/p&gt;
&lt;p&gt;Esta guia cubre todo en una secuencia practica:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Estrategia de integracion&lt;/strong&gt; — como conectar YouTube y WordPress para maxima visibilidad en busqueda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementacion tecnica&lt;/strong&gt; — esquema VideoObject, Key Moments y datos estructurados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt; — carga diferida de reproductores de video sin destruir los Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversion&lt;/strong&gt; — usar video como senal de confianza E-E-A-T&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tacticas de plataforma&lt;/strong&gt; — YouTube, TikTok y optimizacion directa para Google Video&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medicion&lt;/strong&gt; — seguimiento del ROI de video SEO con metricas reales&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cada sección incluye ejemplos de código listos para copiar y detalles de implementación específicos para WordPress.&lt;/p&gt;
&lt;h2 id=&quot;1-la-estrategia-integracion-youtube--wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-estrategia-integracion-youtube--wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La estrategia: Integracion YouTube + WordPress&lt;/h2&gt;
&lt;p&gt;YouTube sigue siendo el segundo motor de búsqueda más grande despues de Google. En 2026, los creadores de contenido exitosos usan una estrategia de “Publicación Dual” que maximiza el alcance en ambas plataformas.&lt;/p&gt;
&lt;h3 id=&quot;el-flujo-de-trabajo-hibrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-flujo-de-trabajo-hibrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El flujo de trabajo hibrido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Subir a YouTube primero&lt;/strong&gt;: Optimice su video con títulos ricos en palabras clave, descripciones detalladas y etiquetas relevantes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incrustar en WordPress&lt;/strong&gt;: Use el código de incrustacion optimizado con parametros personalizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agregar comentario único&lt;/strong&gt;: Rodee el video con contenido de texto original que anade valor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incluir transcripciones&lt;/strong&gt;: Proporcione transcripciones de texto completo para accesibilidad y SEO&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;la-ventaja-dual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ventaja-dual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La ventaja dual&lt;/h3&gt;
&lt;p&gt;Este enfoque captura tráfico de multiples fuentes simultaneamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El algoritmo de búsqueda y recomendación interno de YouTube&lt;/li&gt;
&lt;li&gt;Los resultados de la pestana “Video” de Google&lt;/li&gt;
&lt;li&gt;Los resultados principales de búsqueda de Google con miniaturas de video&lt;/li&gt;
&lt;li&gt;Compartir en redes sociales entre plataformas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-específica-por-plataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-específica-por-plataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización específica por plataforma&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Optimización para YouTube:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Títulos: Cargue las palabras clave principales al inicio, mantenga menos de 60 caracteres&lt;/li&gt;
&lt;li&gt;Descripciones: Los primeros 100 caracteres aparecen en la búsqueda; incluya marcas de tiempo y enlaces&lt;/li&gt;
&lt;li&gt;Etiquetas: Use 5-8 etiquetas específicas en lugar de 15+ genericas&lt;/li&gt;
&lt;li&gt;Miniaturas: Imágenes personalizadas de 1280x720 con texto legible en tamaños pequeños&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optimización para WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rodee los videos con más de 300 palabras de contenido único&lt;/li&gt;
&lt;li&gt;Use encabezados descriptivos que incluyan palabras clave objetivo&lt;/li&gt;
&lt;li&gt;Implemente marcado de esquema adecuado (detallado abajo)&lt;/li&gt;
&lt;li&gt;Agregue enlaces internos a contenido relacionado&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-seo-técnico-el-esquema-videoobject&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-seo-técnico-el-esquema-videoobject&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. SEO técnico: El esquema VideoObject&lt;/h2&gt;
&lt;p&gt;Sin el marcado de esquema correcto, su video es solo una caja negra para los motores de búsqueda. El esquema VideoObject indica a Google exactamente que contiene su video, habilitando fragmentos enriquecidos y funciones especiales de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;propiedades-obligatorias-del-esquema-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#propiedades-obligatorias-del-esquema-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Propiedades obligatorias del esquema para 2026&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;VideoObject&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Como optimizar WordPress para Core Web Vitals&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;description&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Guia completa para mejorar la velocidad del sitio WordPress y pasar la evaluación de Core Web Vitals en 2026.&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;thumbnailUrl&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;https://example.com/thumbnail-480x360.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;https://example.com/thumbnail-1280x720.jpg&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;uploadDate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2026-01-15T10:00:00+00:00&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;duration&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;PT12M30S&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;contentUrl&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://example.com/video.mp4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;embedUrl&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://www.youtube.com/embed/VIDEO_ID&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;interactionStatistic&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;InteractionCounter&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;interactionType&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WatchAction&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;userInteractionCount&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15234&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;esquema-avanzado-capitulos-de-video-para-key-moments&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#esquema-avanzado-capitulos-de-video-para-key-moments&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Esquema avanzado: Capitulos de video para Key Moments&lt;/h3&gt;
&lt;p&gt;La función “Key Moments” de Google permite a los usuarios saltar directamente a secciones específicas de su video desde los resultados de búsqueda. Implemente esto usando la propiedad &lt;code&gt;hasPart&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;VideoObject&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Mejores practicas de seguridad en WordPress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;hasPart&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Clip&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Introduccion a la seguridad de WordPress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;startOffset&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;endOffset&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Clip&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Plugins de seguridad esenciales&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;startOffset&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;endOffset&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;480&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Clip&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Configuración de autenticación de dos factores&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;startOffset&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;480&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;endOffset&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;720&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación en WordPress&lt;/h3&gt;
&lt;p&gt;Use un plugin como “Schema Pro” o “Yoast SEO” para agregar el esquema VideoObject, o implementelo manualmente en su tema:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_video_schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_single&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_post_video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; generate_video_schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Su logica de generacion de esquema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_video_schema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;3-rendimiento-primero-carga-diferida-de-reproductores-de-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-rendimiento-primero-carga-diferida-de-reproductores-de-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Rendimiento primero: Carga diferida de reproductores de video&lt;/h2&gt;
&lt;p&gt;Las incrustaciones de video son tradicionalmente pesadas y pueden arruinar sus puntuaciones de LCP (Largest Contentful Paint). Una sola incrustacion de YouTube puede agregar más de 2MB al peso de su página y retrasar significativamente la interactividad.&lt;/p&gt;
&lt;h3 id=&quot;el-enfoque-2026-patron-de-fachada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-enfoque-2026-patron-de-fachada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El enfoque 2026: Patron de fachada&lt;/h3&gt;
&lt;p&gt;Nunca cargue el reproductor de video en la carga inicial de la página. En su lugar, use una &lt;strong&gt;miniatura de marcador de posición&lt;/strong&gt; que solo carga el reproductor real cuando el usuario interactua con el.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como funciona:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Muestre una imagen de miniatura de alta resolución con una superposicion de boton de reproducción&lt;/li&gt;
&lt;li&gt;Cargue el JavaScript pesado solo cuando el usuario haga clic o desplace el video a la vista&lt;/li&gt;
&lt;li&gt;Reemplace la miniatura con el reproductor de video real bajo demanda&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de implementación:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Contenedor de video con carga diferida --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video-facade&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; data-video-id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;VIDEO_ID&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;thumbnail-1280x720.jpg&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Video: Tutorial de SEO para WordPress&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1280&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;720&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;play-button&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; aria-label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Reproducir video&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Icono de reproducción --&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Carga diferida de video por interaccion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.video-facade&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;facade&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  facade.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; videoId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; facade.dataset.videoId;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    facade.innerHTML &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; `&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &amp;#x3C;iframe&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        src=&quot;https://www.youtube.com/embed/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;videoId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}?autoplay=1&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        allowfullscreen&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        loading=&quot;lazy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &gt;&amp;#x3C;/iframe&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    `&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;impacto-en-los-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-los-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en los Core Web Vitals&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Incrustacion directa&lt;/th&gt;&lt;th&gt;Carga diferida&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;LCP&lt;/td&gt;&lt;td&gt;3.2s&lt;/td&gt;&lt;td&gt;1.1s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTI&lt;/td&gt;&lt;td&gt;4.8s&lt;/td&gt;&lt;td&gt;1.9s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso de página&lt;/td&gt;&lt;td&gt;+2.1MB&lt;/td&gt;&lt;td&gt;+45KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Puntuacion móvil&lt;/td&gt;&lt;td&gt;42/100&lt;/td&gt;&lt;td&gt;94/100&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;4-video-para-conversión-señales-de-confianza-y-e-e-a-t&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-video-para-conversión-señales-de-confianza-y-e-e-a-t&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Video para conversión: Señales de confianza y E-E-A-T&lt;/h2&gt;
&lt;p&gt;En 2026, el video no es solo para entretenimiento, es un componente crítico del E-E-A-T (Experiencia, Expertise, Autoridad, Confiabilidad) que Google usa para evaluar la calidad del contenido.&lt;/p&gt;
&lt;h3 id=&quot;construyendo-confianza-con-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construyendo-confianza-con-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construyendo confianza con video&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Entrevistas con expertos&lt;/strong&gt;: Presentar expertos reconocidos en sus videos construye credibilidad que el texto por si solo no puede lograr. Ver a una persona real hablando crea una conexión que establece confianza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Demostraciones de producto&lt;/strong&gt;: El 80% de los compradores en 2026 ven un video antes de tomar una decision de compra en un &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;sitio WooCommerce&lt;/a&gt;. Muestre sus productos en accion para reducir la vacilacion de compra.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contenido detras de camaras&lt;/strong&gt;: Vistazos autenticos a su proceso humanizan su marca y lo diferencian del contenido generado por IA.&lt;/p&gt;
&lt;h3 id=&quot;tipos-de-video-que-convierten&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-video-que-convierten&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de video que convierten&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Videos tutoriales&lt;/strong&gt;: Contenido como-hacer que resuelve problemas específicos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testimonios&lt;/strong&gt;: Historias de éxito de clientes en formato de video&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comparaciones de productos&lt;/strong&gt;: Demostraciones de funcionalidades lado a lado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Videos de preguntas frecuentes&lt;/strong&gt;: Abordar objeciones y preguntas comunes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grabaciones de webinars&lt;/strong&gt;: Contenido educativo de formato largo&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;optimización-e-e-a-t&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-e-e-a-t&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización E-E-A-T&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Muestre claramente al orador/experto en el video&lt;/li&gt;
&lt;li&gt;Incluya credenciales y experiencia en la descripción del video&lt;/li&gt;
&lt;li&gt;Enlace a perfiles de autor y redes sociales&lt;/li&gt;
&lt;li&gt;Use calidad de producción profesional (buena iluminacion, audio claro)&lt;/li&gt;
&lt;li&gt;Incluya fechas de publicación para mostrar frescura del contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-estrategias-de-seo-de-video-específicas-por-plataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-estrategias-de-seo-de-video-específicas-por-plataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Estrategias de SEO de video específicas por plataforma&lt;/h2&gt;
&lt;h3 id=&quot;seo-de-youtube-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-de-youtube-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO de YouTube en 2026&lt;/h3&gt;
&lt;p&gt;El algoritmo de YouTube ha evolucionado para priorizar el tiempo de visualización y el engagement sobre los conteos simples de vistas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Optimización de títulos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cargue las palabras clave principales al inicio&lt;/li&gt;
&lt;li&gt;Use números y corchetes para aumentar el CTR: “[Guia 2026]”&lt;/li&gt;
&lt;li&gt;Mantenga menos de 60 caracteres para visualización completa&lt;/li&gt;
&lt;li&gt;Ejemplo: “SEO WordPress: 10 consejos para 2026 [Tutorial]”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mejores prácticas de descripción:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los primeros 100 caracteres son cruciales (aparecen en la búsqueda)&lt;/li&gt;
&lt;li&gt;Incluya marcas de tiempo para videos más largos&lt;/li&gt;
&lt;li&gt;Agregue enlaces relevantes con parametros UTM&lt;/li&gt;
&lt;li&gt;Use 3-5 hashtags relevantes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de miniaturas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resolución minima de 1280x720&lt;/li&gt;
&lt;li&gt;Texto legible en tamaños pequeños (menos de 20 caracteres)&lt;/li&gt;
&lt;li&gt;Colores de alto contraste&lt;/li&gt;
&lt;li&gt;Branding consistente en todo su canal&lt;/li&gt;
&lt;li&gt;Incluya rostros humanos cuando sea posible (aumenta el CTR)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tiktok-y-video-de-formato-corto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tiktok-y-video-de-formato-corto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TikTok y video de formato corto&lt;/h3&gt;
&lt;p&gt;El video de formato corto (menos de 60 segundos) ha explotado en 2026. Aunque TikTok no impacta directamente los rankings de Google, impulsa un reconocimiento de marca significativo y tráfico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reutilice contenido de formato largo en clips de 30-60 segundos&lt;/li&gt;
&lt;li&gt;Use sonidos y hashtags tendencia&lt;/li&gt;
&lt;li&gt;Publique consistentemente (1-3 veces al dia)&lt;/li&gt;
&lt;li&gt;Incluya CTAs claros enlazando a su sitio WordPress&lt;/li&gt;
&lt;li&gt;Incruste videos de TikTok en su sitio para promocion cruzada&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;video-de-linkedin-para-b2b&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#video-de-linkedin-para-b2b&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Video de LinkedIn para B2B&lt;/h3&gt;
&lt;p&gt;Para agencias de WordPress y proveedores de servicios B2B:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los videos nativos de LinkedIn obtienen 5 veces más engagement que otro contenido&lt;/li&gt;
&lt;li&gt;Mantenga los videos por debajo de 2 minutos para maximo alcance&lt;/li&gt;
&lt;li&gt;Use subtitulos profesionales (muchos ven sin sonido)&lt;/li&gt;
&lt;li&gt;Comparta casos de estudio e historias de éxito de clientes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-comparación-de-medios-video-vs-contenido-estatico-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-comparación-de-medios-video-vs-contenido-estatico-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Comparación de medios: Video vs. contenido estatico en 2026&lt;/h2&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Artículo solo texto&lt;/th&gt;&lt;th&gt;Artículo + Video&lt;/th&gt;&lt;th&gt;Página Video-First&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tiempo de permanencia&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;~1:30&lt;/td&gt;&lt;td&gt;~4:00+&lt;/td&gt;&lt;td&gt;~6:30&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tasa de rebote&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;65%&lt;/td&gt;&lt;td&gt;42%&lt;/td&gt;&lt;td&gt;35%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Compartidos sociales&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Bajo&lt;/td&gt;&lt;td&gt;Alto&lt;/td&gt;&lt;td&gt;Muy alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Visibilidad en búsqueda&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Pestana Web&lt;/td&gt;&lt;td&gt;Web + Video&lt;/td&gt;&lt;td&gt;Web + Video + YouTube&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Puntuacion de confianza&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Media&lt;/td&gt;&lt;td&gt;Alta&lt;/td&gt;&lt;td&gt;Muy alta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tasa de conversión&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2.1%&lt;/td&gt;&lt;td&gt;4.8%&lt;/td&gt;&lt;td&gt;7.2%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Backlinks&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Moderados&lt;/td&gt;&lt;td&gt;Altos&lt;/td&gt;&lt;td&gt;Muy altos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;7-implementación-técnica-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-implementación-técnica-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Implementación técnica en WordPress&lt;/h2&gt;
&lt;h3 id=&quot;plugins-de-video-recomendados-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-de-video-recomendados-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins de video recomendados para 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Presto Player&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Carga diferida avanzada&lt;/li&gt;
&lt;li&gt;Presets personalizados para diferentes tipos de video&lt;/li&gt;
&lt;li&gt;Integración de analíticas&lt;/li&gt;
&lt;li&gt;Soporte de capitulos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Videopack (anteriormente Video Embed &amp;#x26; Thumbnail Generator)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generación automática de miniaturas&lt;/li&gt;
&lt;li&gt;Multiples skins de reproductor&lt;/li&gt;
&lt;li&gt;Diseño responsivo&lt;/li&gt;
&lt;li&gt;Soporte de marcado de esquema&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. WP Rocket (con optimización de video)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Carga diferida para videos incrustados&lt;/li&gt;
&lt;li&gt;Aplazamiento de JavaScript&lt;/li&gt;
&lt;li&gt;Integración con plataformas de video populares&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tipo-de-post-personalizado-para-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipo-de-post-personalizado-para-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipo de post personalizado para video&lt;/h3&gt;
&lt;p&gt;Cree una estructura de contenido de video dedicada:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar tipo de post de video&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; register_video_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;video&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;labels&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Videos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;singular_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Video&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;has_archive&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;supports&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;thumbnail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom-fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;rewrite&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;videos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;show_in_rest&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;register_video_post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;8-accesibilidad-y-seo-de-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-accesibilidad-y-seo-de-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Accesibilidad y SEO de video&lt;/h2&gt;
&lt;p&gt;Los videos accesibles se posicionan mejor porque sirven a una audiencia más amplia y proporcionan más señales a los motores de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;subtitulos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#subtitulos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Subtitulos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Subtitulos cerrados (CC)&lt;/strong&gt;: Incluyen dialogo y efectos de sonido para usuarios sordos o con dificultades auditivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subtitulos&lt;/strong&gt;: Traduzca contenido para audiencias internacionales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto-subtitulos&lt;/strong&gt;: YouTube los proporciona, pero revise manualmente para precision&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archivos SRT&lt;/strong&gt;: Suba archivos de subtitulos personalizados para mejor control&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;transcripciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transcripciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transcripciones&lt;/h3&gt;
&lt;p&gt;Las transcripciones de texto completo sirven para multiples propósitos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hacen el contenido accesible para usuarios de lectores de pantalla&lt;/li&gt;
&lt;li&gt;Proporcionan texto indexable para motores de búsqueda&lt;/li&gt;
&lt;li&gt;Permiten el consumo de contenido en entornos sensibles al sonido&lt;/li&gt;
&lt;li&gt;Habilitan la traduccion a otros idiomas&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Mejor práctica&lt;/strong&gt;: Incluya transcripciones en secciones plegables debajo de los videos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;details&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video-transcript&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Leer transcripcion del video&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;transcript-content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- Texto completo de la transcripcion --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;details&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;navegación-por-teclado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#navegación-por-teclado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Navegación por teclado&lt;/h3&gt;
&lt;p&gt;Asegure que los reproductores de video sean completamente accesibles por teclado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tab para enfocar el reproductor&lt;/li&gt;
&lt;li&gt;Espacio/Enter para reproducir/pausar&lt;/li&gt;
&lt;li&gt;Flechas para volumen y desplazamiento&lt;/li&gt;
&lt;li&gt;F para pantalla completa&lt;/li&gt;
&lt;li&gt;M para silenciar&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;9-medicion-del-éxito-del-seo-de-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-medicion-del-éxito-del-seo-de-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Medicion del éxito del SEO de video&lt;/h2&gt;
&lt;p&gt;Rastree estas metricas para evaluar el rendimiento de su SEO de video e identificar oportunidades de optimización.&lt;/p&gt;
&lt;h3 id=&quot;indicadores-clave-de-rendimiento-kpis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-clave-de-rendimiento-kpis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores clave de rendimiento (KPIs)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Metricas de visibilidad en búsqueda:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aparicion de video en los resultados de búsqueda de Google&lt;/li&gt;
&lt;li&gt;Rankings de búsqueda de YouTube para palabras clave objetivo&lt;/li&gt;
&lt;li&gt;Tasa de clics (CTR) desde los resultados de búsqueda&lt;/li&gt;
&lt;li&gt;Posición promedio para fragmentos enriquecidos de video&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Metricas de engagement:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Duracion promedio de visualización y tasa de retencion&lt;/li&gt;
&lt;li&gt;Tiempo de visualización (factor principal de ranking de YouTube)&lt;/li&gt;
&lt;li&gt;Retencion de audiencia en intervalos de 30 segundos&lt;/li&gt;
&lt;li&gt;Frecuencia de rebobinado y repeticion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Metricas de impacto empresarial:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tráfico desde fuentes de video&lt;/li&gt;
&lt;li&gt;Tasa de conversión para páginas de destino con video&lt;/li&gt;
&lt;li&gt;Leads generados desde CTAs de video&lt;/li&gt;
&lt;li&gt;Ingresos atribuidos al contenido de video&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;10-preparando-su-estrategia-de-seo-de-video-para-el-futuro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-preparando-su-estrategia-de-seo-de-video-para-el-futuro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Preparando su estrategia de SEO de video para el futuro&lt;/h2&gt;
&lt;p&gt;El panorama del video continua evolucionando rápidamente. Mantengase adelante con estas estrategias orientadas al futuro.&lt;/p&gt;
&lt;h3 id=&quot;contenido-de-video-generado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-de-video-generado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido de video generado por IA&lt;/h3&gt;
&lt;p&gt;En 2026, las herramientas de IA pueden generar contenido de video a partir de texto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use IA para borradores iniciales y guiones graficos&lt;/li&gt;
&lt;li&gt;Edicion humana para autenticidad y voz de marca&lt;/li&gt;
&lt;li&gt;Siempre agregue presencia humana real para confianza&lt;/li&gt;
&lt;li&gt;Divulgue el uso de IA cuando sea requerido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;funciones-de-video-interactivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#funciones-de-video-interactivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Funciones de video interactivo&lt;/h3&gt;
&lt;p&gt;Elementos interactivos que aumentan el engagement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encuestas y cuestionarios dentro de los videos&lt;/li&gt;
&lt;li&gt;Etiquetas de productos clicables (video comprable)&lt;/li&gt;
&lt;li&gt;Ramificacion de estilo elija-su-propia-aventura&lt;/li&gt;
&lt;li&gt;Integración de chat en vivo para estrenos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;video-360-grados-e-inmersivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#video-360-grados-e-inmersivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Video 360 grados e inmersivo&lt;/h3&gt;
&lt;p&gt;Formatos emergentes para mayor engagement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Experiencias de video de realidad virtual (VR)&lt;/li&gt;
&lt;li&gt;Demostraciones de productos en 360 grados&lt;/li&gt;
&lt;li&gt;Tours virtuales interactivos&lt;/li&gt;
&lt;li&gt;Audio espacial para contenido inmersivo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion-el-video-como-base-del-seo-moderno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-el-video-como-base-del-seo-moderno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: El video como base del SEO moderno&lt;/h2&gt;
&lt;p&gt;El video es el lenguaje de la web moderna. Al dominar el &lt;strong&gt;SEO de video&lt;/strong&gt; en su sitio WordPress, enfocandose en la precision del esquema, la optimización del rendimiento y la creación de valor genuino, asegura que su contenido sea visto, escuchado y posicionado.&lt;/p&gt;
&lt;p&gt;La integración del video no se trata solo de seguir tendencias; se trata de cumplir las expectativas de los usuarios y los requisitos de los motores de búsqueda para 2026 y más alla. Los sitios que combinen efectivamente contenido escrito con video optimizado dominaran los resultados de búsqueda en todas las plataformas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puntos clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Siempre implemente esquema VideoObject con propiedades completas&lt;/li&gt;
&lt;li&gt;Use carga diferida para proteger los Core Web Vitals&lt;/li&gt;
&lt;li&gt;Cree contenido de texto único alrededor de los videos incrustados&lt;/li&gt;
&lt;li&gt;Optimice para la búsqueda de YouTube así como para Google&lt;/li&gt;
&lt;li&gt;Proporcione transcripciones para accesibilidad y SEO&lt;/li&gt;
&lt;li&gt;Mida el engagement y ajuste basado en datos&lt;/li&gt;
&lt;li&gt;Mantengase actualizado con formatos y plataformas de video emergentes&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Es invisible su contenido de video para la búsqueda?&lt;/strong&gt; Comience a implementar estas estrategias de SEO de video hoy y transforme su sitio WordPress en una potencia multimedia que domine los resultados de búsqueda.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">video-seo</category><category domain="tag">rich-media</category><category domain="tag">youtube</category><category domain="tag">schema</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-flip.jpg" type="image/jpeg"/></item><item><title>Como acelerar un sitio web basado en WordPress?</title><link>https://wppoland.com/es/how-to-speed-up-a-wordpress-based-website/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-speed-up-a-wordpress-based-website/</guid><description>Guia técnica para acelerar sitios WordPress: hosting, caching, PHP-FPM, Redis, CDN, optimización de base de datos y mejora de Core Web Vitals.</description><pubDate>Mon, 23 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;como-acelerar-un-sitio-web-basado-en-wordpress-optimización-del-tiempo-de-carga&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-acelerar-un-sitio-web-basado-en-wordpress-optimización-del-tiempo-de-carga&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como acelerar un sitio web basado en WordPress? Optimización del tiempo de carga&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Elegir el hosting adecuado&lt;/strong&gt;: Destaca la importancia de seleccionar un hosting que asegure velocidad y fiabilidad para sitios WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usar un plugin de cache efectivo&lt;/strong&gt;: Discute como los plugins de cache pueden mejorar significativamente la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;velocidad del sitio web&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizar imágenes&lt;/strong&gt;: Senala la necesidad de optimizar imágenes para reducir tiempos de carga.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizar WordPress regularmente&lt;/strong&gt;: Enfatiza la importancia de actualizar WordPress, temas y plugins para seguridad y rendimiento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizar procesos en segundo plano&lt;/strong&gt;: Se enfoca en optimizar tareas en segundo plano como respaldos y cron jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usar un CDN (Red de Distribucion de Contenido)&lt;/strong&gt;: Explica como los CDN distribuyen el contenido del sitio web globalmente, acelerando el acceso del usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizar la base de datos&lt;/strong&gt;: Discute la limpieza y optimización de la base de datos WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitar o desactivar revisiones de entradas&lt;/strong&gt;: Recomienda limitar o desactivar revisiones de entradas en WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dividir comentarios en páginas&lt;/strong&gt;: Sugiere páginar comentarios para evitar tiempos de carga largos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usar un tema WordPress ligero&lt;/strong&gt;: Enfatiza la eleccion de un tema optimizado para velocidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reducir solicitudes HTTP externas&lt;/strong&gt;: Aconseja minimizar el número de solicitudes de recursos externos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reducir llamadas a la base de datos&lt;/strong&gt;: Fomenta la codificacion eficiente para minimizar consultas de base de datos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Métodos técnicos para optimizar el rendimiento de sitios web basados en WordPress&lt;/strong&gt; Acelerar un sitio WordPress requiere una intervencion profunda en su arquitectura técnica, desde la capa del servidor hasta el frontend. A continuacion, presento estrategias de optimización completas y avanzadas, evitando nombres de plugins específicos en favor de soluciones puramente técnicas.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;1-optimización-de-la-infraestructura-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-optimización-de-la-infraestructura-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;1. Optimización de la infraestructura del servidor&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eleccion del entorno de hosting&lt;/strong&gt;: Use VPS o servidores dedicados con PHP-FPM (FastCGI Process Manager) y soporte HTTP/2/3. Evite hosting compartido con recursos limitados de CPU/RAM. * Configure &lt;strong&gt;Nginx&lt;/strong&gt; en lugar de Apache: aproveche su modelo de procesamiento asincrono de solicitudes y capacidades de cache de proxy inverso. * Habilite &lt;strong&gt;OPcache&lt;/strong&gt; (cache de opcode PHP) con configuraciónes agresivas (&lt;code&gt;opcache.revalidate_freq=0&lt;/code&gt;, &lt;code&gt;opcache.validate_timestamps=0&lt;/code&gt; en entornos de staging).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versión PHP&lt;/strong&gt;: Use PHP 8.x+ con JIT (Just-In-Time Compilation), que ofrece hasta un 30% de mejora de rendimiento sobre PHP 7.4.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-estrategias-avanzadas-de-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-estrategias-avanzadas-de-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;2. Estrategias avanzadas de cache&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cache de página completa a nivel de servidor&lt;/strong&gt;: Implemente cache de HTML de página completa en RAM usando &lt;strong&gt;Varnish Cache&lt;/strong&gt; o Nginx FastCGI Cache. Configure reglas de exclusion para elementos dinámicos (ej. carrito WooCommerce) via cabeceras &lt;code&gt;Cache-Control&lt;/code&gt; o cookies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache de objetos&lt;/strong&gt;: Use &lt;strong&gt;Redis&lt;/strong&gt; o &lt;strong&gt;Memcached&lt;/strong&gt; para cachear resultados de consultas de base de datos y objetos PHP. Integre con WordPress via definiciones en &lt;code&gt;wp-config.php&lt;/code&gt; (ej. &lt;code&gt;WP_REDIS_HOST&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache del navegador&lt;/strong&gt;: Establezca periodos de expiracion largos para recursos estaticos (CSS, JS, imágenes) via cabeceras &lt;code&gt;Expires&lt;/code&gt; y &lt;code&gt;Cache-Control&lt;/code&gt; en la configuración del servidor. Use &lt;strong&gt;nombres de archivo con hash&lt;/strong&gt; (ej. &lt;code&gt;style.a1b2c3.css&lt;/code&gt;) para forzar re-descarga en cambios.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-minimizacion-y-distribucion-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-minimizacion-y-distribucion-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;3. Minimizacion y distribucion de recursos&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compresion y consolidacion de archivos&lt;/strong&gt;: * Minifique CSS/JS usando herramientas CLI (ej. &lt;strong&gt;Terser&lt;/strong&gt;, &lt;strong&gt;CSSNano&lt;/strong&gt;). * Combine recursos críticos en un solo archivo, cargando el resto de forma asincrona. * Habilite &lt;strong&gt;Brotli&lt;/strong&gt; (o GZIP) para comprimir recursos textuales en el servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de imágenes&lt;/strong&gt;: * Convierta imágenes a formato &lt;strong&gt;WebP/AVIF&lt;/strong&gt; usando &lt;code&gt;picture&lt;/code&gt; y &lt;code&gt;srcset&lt;/code&gt; para responsividad. * Aplique &lt;strong&gt;lazy loading&lt;/strong&gt; con el atributo nativo &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; para imágenes e iframes. * Use &lt;strong&gt;SVG&lt;/strong&gt; para graficos vectoriales, optimizandolos eliminando metadatos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN con enrutamiento inteligente&lt;/strong&gt;: Despliegue una red de distribucion de contenido con capacidades de &lt;strong&gt;Edge Computing&lt;/strong&gt; para ejecutar lógica (ej. transformaciones de imagen) en la infraestructura de borde.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-optimización-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-optimización-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;4. Optimización de base de datos&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Limpieza e indexacion&lt;/strong&gt;: * Elimine regularmente revisiones de entradas, spam de comentarios y transients (&lt;code&gt;wp_options&lt;/code&gt;). * Agregue indices a columnas frecuentemente usadas en clausulas &lt;code&gt;WHERE&lt;/code&gt; y &lt;code&gt;JOIN&lt;/code&gt;. * Reemplace el motor MySQL &lt;strong&gt;InnoDB&lt;/strong&gt; predeterminado con &lt;strong&gt;MyRocks&lt;/strong&gt; (para operaciones de escritura) o &lt;strong&gt;TokuDB&lt;/strong&gt; (para compresion).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separacion de base de datos&lt;/strong&gt;: Divida las tablas de WordPress en instancias de base de datos separadas para &lt;code&gt;wp_posts&lt;/code&gt;, &lt;code&gt;wp_postmeta&lt;/code&gt; y otras tablas de alto tráfico, usando replicacion master-slave.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-optimización-del-código-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-optimización-del-código-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;5. Optimización del código WordPress&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optimización de consultas&lt;/strong&gt;: * Reemplace &lt;code&gt;WP_Query&lt;/code&gt; con consultas SQL directas usando &lt;code&gt;$wpdb&lt;/code&gt; para operaciones complejas. * Limite el uso de &lt;code&gt;post__not_in&lt;/code&gt; y &lt;code&gt;meta_query&lt;/code&gt;, que generan subconsultas costosas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desactivar funciones innecesarias&lt;/strong&gt;: * Desactive emojis, embeds externos y endpoints de REST API via filtros en &lt;code&gt;functions.php&lt;/code&gt;. * Desactive el sistema cron de WordPress y reemplacelo con un cron job real del servidor.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;6-ruta-crítica-de-renderizado-y-http2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-ruta-crítica-de-renderizado-y-http2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;6. Ruta crítica de renderizado y HTTP/2&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CSS/JS crítico en linea&lt;/strong&gt;: Implemente un mecanismo para extraer CSS/JS crítico (above the fold) e incrustarlo directamente en el head, cargando el resto de forma asincrona.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP/2 Server Push&lt;/strong&gt;: Use Server Push para enviar proactivamente recursos críticos (fuentes, CSS principal) antes de que el navegador los solicite.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preconnect y Preload&lt;/strong&gt;: Agregue preconnect para dominios externos (ej. CDN) y preload para fuentes/imágenes de alta prioridad.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;7-técnicas-avanzadas-de-edge-side&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-técnicas-avanzadas-de-edge-side&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;7. Técnicas avanzadas de Edge-Side&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Edge Side Includes (ESI)&lt;/strong&gt;: Aplique cache de fragmentos para secciones dinámicas (ej. cabecera de usuario) usando ESI con Varnish.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service Workers&lt;/strong&gt;: Implemente una estrategia &lt;strong&gt;Cache First&lt;/strong&gt; para recursos estaticos, habilitando acceso offline al contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;8-monitoreo-continuo-y-automatizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-monitoreo-continuo-y-automatizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;8. Monitoreo continuo y automatizacion&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Real User Monitoring (RUM)&lt;/strong&gt;: Recopile metricas de rendimiento de usuarios finales usando &lt;strong&gt;Google Analytics Core Web Vitals&lt;/strong&gt; o scripts personalizados que rastrean LCP, FID, CLS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas sinteticas&lt;/strong&gt;: Automatice pruebas de rendimiento con &lt;strong&gt;Lighthouse CI&lt;/strong&gt; en el proceso de despliegue, bloqueando merges de código que degraden resultados.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;velocidad-y-eficiencia-son-nuestras-prioridades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-y-eficiencia-son-nuestras-prioridades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad y eficiencia son nuestras prioridades&lt;/h2&gt;
&lt;p&gt;En el mundo online, el tiempo es dinero. Por eso nos esforzamos en actuar lo más rápido posible para minimizar cualquier tiempo de inactividad de su sitio web. Nuestro equipo esta disponible 24/7, listo para intervenir en cualquier momento. Además, ofrecemos precios transparentes y un enfoque personalizado para cada clientes. Acelerar WordPress es un proceso que requiere optimización multicapa, desde la configuración del servidor y la arquitectura de cache hasta el control preciso del código y los recursos. La clave es minimizar las operaciones de I/O bloqueantes, reducir el tamaño de los datos transferidos y maximizar el uso de tecnologías de edge computing. Las auditorias regulares con herramientas analíticas avanzadas aseguran que el rendimiento se mantenga competitivo, incluso para proyectos que crecen dinamicamente.&lt;/p&gt;
&lt;h2 id=&quot;contactenos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contactenos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contactenos&lt;/h2&gt;
&lt;p&gt;No espere hasta que los problemas empiecen a afectar su negocio. El soporte técnico profesional es una inversion que rápidamente se amortiza, proporcionando tranquilidad y estabilidad para su sitio web. &lt;a href=&quot;/es/contacto/&quot; class=&quot;inline-flex items-center justify-center px-8 py-4 text-lg font-bold text-white transition-all duration-200 bg-emerald-600 rounded-xl hover:bg-emerald-500 hover:shadow-lg hover:-translate-y-1&quot;&gt;Contactenos&lt;/a&gt; y comience a usar nuestros servicios hoy. Cuide su sitio web, y le ayudaremos a hacerlo!&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>performance</category><category>wordpress</category><category>optimization</category><category domain="tag">velocidad</category><category domain="tag">optimización</category><category domain="tag">core-web-vitals</category><enclosure url="https://wppoland.com/images/og/slow-website.jpg" type="image/jpeg"/></item><item><title>Estándares de seguridad para CMS corporativos en 2026</title><link>https://wppoland.com/es/security-standards-for-corporate-cms-2026-comprehensive-guide/</link><guid isPermaLink="true">https://wppoland.com/es/security-standards-for-corporate-cms-2026-comprehensive-guide/</guid><description>Es tu CMS corporativo lo suficientemente seguro para 2026? Esta inmersion profunda de más de 2500 palabras explora los estándares de seguridad actuales, desde SOC2 hasta la arquitectura zero-trust para la web.</description><pubDate>Sat, 21 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;En 2026, el costo de una brecha de datos ya no es solo una penalizacion financiera; es un golpe directo a la equidad de marca corporativa y la confianza del clientes. A medida que las ciberamenazas se vuelven más sofisticadas e impulsadas por IA, el Sistema de Gestión de Contenido (CMS) - a menudo el punto de entrada público al patrimonio digital de una corporacion - debe tratarse como una &lt;strong&gt;fortaleza reforzada&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Los departamentos de TI corporativos ya no se conforman con promesas de “seguro por defecto”. Exigen cumplimiento con estándares globales, deteccion de amenazas en tiempo real y protección contra vulnerabilidades zero-day.&lt;/p&gt;
&lt;p&gt;En esta guía exhaustiva de más de 2500 palabras, desglosamos los estándares de seguridad definitivos para plataformas CMS corporativas en 2026 y como puedes asegurar que tu sitio web los cumpla.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-marcos-de-cumplimiento-la-base-fundamental&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-marcos-de-cumplimiento-la-base-fundamental&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Marcos de cumplimiento: La base fundamental&lt;/h2&gt;
&lt;p&gt;Antes de mirar el código, debemos mirar los marcos regulatorios. Dos estándares dominan el panorama corporativo en 2026, y cualquier organización seria debe cumplir al menos uno de ellos.&lt;/p&gt;
&lt;h3 id=&quot;soc2-type-ii&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soc2-type-ii&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SOC2 Type II&lt;/h3&gt;
&lt;p&gt;Este es el estándar de oro para organizaciónes de servicios. Si tu proveedor de hosting CMS o agencia es &lt;strong&gt;SOC2 Type II compliant&lt;/strong&gt;, significa que han demostrado sus controles de seguridad, disponibilidad y confidencialidad durante un periodo prolongado - tipicamente 6 a 12 meses de monitoreo continuo.&lt;/p&gt;
&lt;p&gt;SOC2 evalua cinco principios de confianza:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Protección contra acceso no autorizado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disponibilidad&lt;/strong&gt;: El sistema esta operativo y utilizable según lo comprometido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integridad del procesamiento&lt;/strong&gt;: El procesamiento del sistema es completo, válido, preciso, oportuno y autorizado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confidencialidad&lt;/strong&gt;: La información designada como confidencial esta protegida&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacidad&lt;/strong&gt;: La información personal se recopila, usa, retiene, divulga y destruye de acuerdo con los compromisos&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, aseguramos que todos nuestros despliegues empresariales residan en infraestructura SOC2 compliant.&lt;/p&gt;
&lt;h3 id=&quot;iso-27001&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#iso-27001&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ISO 27001&lt;/h3&gt;
&lt;p&gt;Este estándar internacional para sistemas de gestión de seguridad de la información (SGSI) asegura que tu organización tiene un enfoque sistematico para gestionar información sensible de la empresa. A diferencia de SOC2 que se enfoca en servicios, ISO 27001 es un marco integral que cubre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Politicas de seguridad de la organización&lt;/li&gt;
&lt;li&gt;Gestión de activos de información&lt;/li&gt;
&lt;li&gt;Seguridad de recursos humanos&lt;/li&gt;
&lt;li&gt;Seguridad fisica y ambiental&lt;/li&gt;
&lt;li&gt;Gestión de comunicaciones y operaciones&lt;/li&gt;
&lt;li&gt;Control de acceso&lt;/li&gt;
&lt;li&gt;Adquisicion, desarrollo y mantenimiento de sistemas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;rgpd-y-privacidad-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rgpd-y-privacidad-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;RGPD y privacidad de datos&lt;/h3&gt;
&lt;p&gt;Para cualquier CMS corporativo que opere en Europa o sirva a usuarios europeos, el cumplimiento del RGPD no es opcional. En el contexto del CMS, esto significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestión granular de consentimiento de cookies&lt;/li&gt;
&lt;li&gt;Capacidad de exportar y eliminar datos de usuarios bajo demanda&lt;/li&gt;
&lt;li&gt;Registros de procesamiento de datos mantenidos y actualizados&lt;/li&gt;
&lt;li&gt;Evaluaciones de impacto de protección de datos (EIPD) para nuevas funcionalidades&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre nuestra &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-arquitectura-zero-trust-zta-para-la-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-arquitectura-zero-trust-zta-para-la-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Arquitectura Zero-Trust (ZTA) para la web&lt;/h2&gt;
&lt;p&gt;El antiguo modelo de seguridad “Foso y Castillo” - donde todo dentro de la red es de confianza - esta muerto en 2026. Ahora operamos bajo &lt;strong&gt;principios Zero-Trust&lt;/strong&gt;, donde cada solicitud, independientemente de su origen, es tratada como potencialmente hostil.&lt;/p&gt;
&lt;h3 id=&quot;autenticación-multifactor-obligatoria-mfa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-multifactor-obligatoria-mfa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación multifactor obligatoria (MFA)&lt;/h3&gt;
&lt;p&gt;El acceso solo con contrasena es una reliquia del pasado. En 2026, cada usuario de CMS corporativo debe usar MFA basado en hardware (como YubiKey) o notificaciones push biometricas. Las contrasenas solas, sin importar cuan complejas sean, ya no son suficientes.&lt;/p&gt;
&lt;p&gt;Las opciones de MFA en orden de seguridad:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Passkeys/WebAuthn&lt;/strong&gt;: La opción más segura, resistente al phishing por diseño&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Llaves de seguridad FIDO2&lt;/strong&gt; (YubiKey): Autenticación criptografica con dispositivo fisico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autenticación biometrica&lt;/strong&gt;: FaceID/TouchID vinculado al dispositivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicaciones TOTP&lt;/strong&gt; (Google Authenticator): Códigos temporales basados en tiempo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SMS/Email OTP&lt;/strong&gt;: La opción menos segura, vulnerable a intercepcion SIM swap&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para WordPress empresarial, recomendamos passkeys para todas las cuentas administrativas, con llaves de seguridad FIDO2 como respaldo.&lt;/p&gt;
&lt;h3 id=&quot;gestión-granular-de-identidad-y-acceso-iam&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-granular-de-identidad-y-acceso-iam&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión granular de identidad y acceso (IAM)&lt;/h3&gt;
&lt;p&gt;Los usuarios solo deben tener acceso a las herramientas exactas que necesitan. El principio de minimo privilegio se aplica rigurosamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Base “Necesidad de saber”&lt;/strong&gt;: Un autor de contenido no debe tener acceso a los ajustes de SEO, y un especialista SEO no debe tener acceso al repositorio de plugins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sesiones temporales&lt;/strong&gt;: Los tokens administrativos deben expirar rápidamente, forzando re-autenticación para acciones de alta prioridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acceso contextual&lt;/strong&gt;: El acceso puede variar según la ubicacion, el dispositivo y la hora del dia. Un editor accediendo desde una red corporativa puede tener permisos completos, mientras que el mismo editor desde una red pública tiene permisos restringidos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;microsegmentacion-de-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#microsegmentacion-de-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Microsegmentacion de red&lt;/h3&gt;
&lt;p&gt;En una implementación Zero-Trust madura, la red se divide en microsegmentos. El servidor de base de datos, el servidor web, el servidor de cache y el almacenamiento de archivos estan en segmentos separados con reglas de firewall estrictas entre ellos. Una brecha en un segmento no compromete automáticamente los demas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-hardening-de-infraestructura-el-nivel-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-hardening-de-infraestructura-el-nivel-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Hardening de infraestructura: El nivel del servidor&lt;/h2&gt;
&lt;p&gt;Tu CMS es tan seguro como el servidor en el que se ejecuta. En 2026, utilizamos &lt;strong&gt;Infraestructura como Código (IaC)&lt;/strong&gt; para asegurar consistencia y reproducibilidad.&lt;/p&gt;
&lt;h3 id=&quot;infraestructura-inmutable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#infraestructura-inmutable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Infraestructura inmutable&lt;/h3&gt;
&lt;p&gt;No cambiamos servidores en vivo; levantamos nuevas instancias actualizadas y reemplazamos las antiguas. Esto previene la “deriva de configuración” donde pequeñas brechas de seguridad se abren con el tiempo. Cada despliegue es una instalación limpia a partir de una imagen verificada.&lt;/p&gt;
&lt;p&gt;Las ventajas de la infraestructura inmutable para seguridad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No hay posibilidad de configuraciónes residuales inseguras&lt;/li&gt;
&lt;li&gt;Los despliegues son reproducibles y auditables&lt;/li&gt;
&lt;li&gt;Las reversiones son instantaneas: simplemente vuelves a la imagen anterior&lt;/li&gt;
&lt;li&gt;Los atacantes no pueden persistir en un servidor que se reemplaza regularmente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;waf-y-protección-ddos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#waf-y-protección-ddos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WAF y protección DDoS&lt;/h3&gt;
&lt;p&gt;Cada solicitud corporativa pasa por multiples capas de scrubbing. Los Web Application Firewalls (WAF) potenciados por IA ahora detectan ataques basados en patrones (como credential stuffing) en milisegundos. En 2026, los WAFs no solo buscan firmás conocidas - usan modelos de aprendizaje automático para detectar anomalias de comportamiento que indican ataques zero-day.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h3 id=&quot;backends-aislados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#backends-aislados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Backends aislados&lt;/h3&gt;
&lt;p&gt;En entornos de alta seguridad, el area de administración del CMS solo es accesible a través de una VPN corporativa dedicada o un tunel con IP en whitelist específica. El panel de administración de WordPress nunca deberia ser accesible desde la internet pública en un entorno empresarial.&lt;/p&gt;
&lt;p&gt;La implementación tipica incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VPN WireGuard o IPsec para acceso administrativo&lt;/li&gt;
&lt;li&gt;Cloudflare Zero Trust o Tailscale como proxy de identidad&lt;/li&gt;
&lt;li&gt;Lista blanca de IP para el endpoint &lt;code&gt;wp-admin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Autenticación SSO via SAML/OIDC antes de acceder al login de WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-la-superficie-de-ataque-headless-vs-monolitico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-la-superficie-de-ataque-headless-vs-monolitico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. La superficie de ataque: Headless vs. Monolitico&lt;/h2&gt;
&lt;p&gt;Una de las tendencias de seguridad más importantes es el cambio hacia &lt;strong&gt;CMS Headless&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;superficie-reducida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#superficie-reducida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Superficie reducida&lt;/h3&gt;
&lt;p&gt;En una configuración Headless, el frontend (por ejemplo, Astro 5 o Next.js) son archivos puramente estaticos servidos desde un CDN. No hay PHP ni base de datos que atacar en el sitio público. El backend de WordPress existe en una red privada, accesible solo a través de APIs autenticadas.&lt;/p&gt;
&lt;h3 id=&quot;riesgos-desacoplados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#riesgos-desacoplados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Riesgos desacoplados&lt;/h3&gt;
&lt;p&gt;Si el frontend es comprometido, el backend de contenido permanece seguro. Si el backend esta en mantenimiento, el frontend sigue vivo. Esta separacion de responsabilidades reduce dramaticamente el radio de explosion de cualquier incidente de seguridad.&lt;/p&gt;
&lt;h3 id=&quot;autenticación-de-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-de-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación de API&lt;/h3&gt;
&lt;p&gt;En configuraciónes Headless, la comunicación entre frontend y backend debe ser estrictamente autenticada. En 2026, las mejores prácticas incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tokens JWT con rotacion automática&lt;/strong&gt;: Los tokens de acceso expiran en minutos, no en horas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API keys con alcance limitado&lt;/strong&gt;: Cada clave solo puede acceder a los endpoints que necesita&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rate limiting granular&lt;/strong&gt;: Limites de solicitudes por endpoint, por usuario y por IP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firma de solicitudes&lt;/strong&gt;: Cada solicitud API incluye una firma criptografica que previene la manipulación&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a arquitecturas Headless&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-gobernanza-de-plugins-y-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-gobernanza-de-plugins-y-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Gobernanza de plugins y código&lt;/h2&gt;
&lt;p&gt;Para sitios corporativos basados en WordPress, gestionar código de terceros es la tarea de seguridad más crítica. Los plugins son simultaneamente la mayor fortaleza y la mayor vulnerabilidad de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;la-regla-de-solo-verificados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-regla-de-solo-verificados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La regla de “Solo Verificados”&lt;/h3&gt;
&lt;p&gt;Ningun plugin se instala sin una auditoria manual de código y una verificación de la estabilidad financiera del proveedor. Un plugin abandonado por su desarrollador es una bomba de tiempo de seguridad. Evaluamos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frecuencia de actualizaciones (debe ser al menos trimestral)&lt;/li&gt;
&lt;li&gt;Número de instalaciones activas y resenas&lt;/li&gt;
&lt;li&gt;Historial de vulnerabilidades reportadas&lt;/li&gt;
&lt;li&gt;Calidad del código fuente&lt;/li&gt;
&lt;li&gt;Estabilidad financiera y reputacion del desarrollador&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;seguimiento-de-dependencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguimiento-de-dependencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguimiento de dependencias&lt;/h3&gt;
&lt;p&gt;Usamos herramientas para rastrear cada sub-biblioteca (NPM/Composer) en busca de vulnerabilidades conocidas (CVEs) en tiempo real. Herramientas como Snyk, Dependabot o WPScan CLI se integran en nuestro pipeline de CI/CD para bloquear despliegues que incluyan dependencias vulnerables.&lt;/p&gt;
&lt;h3 id=&quot;parcheo-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parcheo-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parcheo automatizado&lt;/h3&gt;
&lt;p&gt;Los parches críticos de seguridad se aplican automáticamente en minutos desde su lanzamiento, mientras que las actualizaciones de funcionalidades se prueban primero en staging. Esta distincion es crucial: un parche de seguridad no puede esperar al ciclo normal de despliegue.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-integridad-de-datos-y-copias-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-integridad-de-datos-y-copias-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Integridad de datos y copias de seguridad&lt;/h2&gt;
&lt;p&gt;Un plan de seguridad sin un plan de recuperacion es solo una oracion.&lt;/p&gt;
&lt;h3 id=&quot;copias-de-seguridad-cifradas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#copias-de-seguridad-cifradas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Copias de seguridad cifradas&lt;/h3&gt;
&lt;p&gt;Las copias de seguridad deben estar cifradas en reposo y en transito. Usamos cifrado AES-256 para datos en reposo y TLS 1.3 para datos en transito. Las claves de cifrado se almacenan en un sistema de gestión de secretos separado (como HashiCorp Vault), nunca en el mismo servidor que las copias de seguridad.&lt;/p&gt;
&lt;h3 id=&quot;redundancia-geografica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#redundancia-geografica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Redundancia geografica&lt;/h3&gt;
&lt;p&gt;Si tu servidor primario en Frankfurt cae, una copia en Amsterdam debe estar lista para entrar en funcionamiento inmediatamente. Para sitios que sirven a Latinoamerica, recomendamos replicacion adicional en Sao Paulo o Miami.&lt;/p&gt;
&lt;h3 id=&quot;recuperacion-continua-en-punto-temporal-pitr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recuperacion-continua-en-punto-temporal-pitr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recuperacion continua en punto temporal (PITR)&lt;/h3&gt;
&lt;p&gt;Podemos revertir una base de datos a su estado exacto de hace 5 minutos, útil en casos de ransomware o borrado accidental de datos. En 2026, PITR con granularidad de segundos es el estándar para despliegues empresariales.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-recuperacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-recuperacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de recuperacion&lt;/h3&gt;
&lt;p&gt;Las copias de seguridad que nunca se han probado son copias de seguridad que no existen. Realizamos simulacros de recuperacion mensuales donde restauramos completamente un sitio desde la copia de seguridad para verificar la integridad y medir el tiempo de recuperacion.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-el-riesgo-humano-ingenieria-social&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-riesgo-humano-ingenieria-social&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El riesgo humano: Ingenieria social&lt;/h2&gt;
&lt;p&gt;La tecnología raramente falla; las personas si. En 2026, los ataques de ingenieria social impulsados por IA son increiblemente sofisticados - pueden clonar voces, crear correos electronicos indistinguibles de los reales y generar sitios de phishing convincentes en segundos.&lt;/p&gt;
&lt;h3 id=&quot;capacitacion-en-conciencia-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capacitacion-en-conciencia-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capacitacion en conciencia de seguridad&lt;/h3&gt;
&lt;p&gt;Los equipos de marketing y editorial deben ser entrenados para reconocer intentos sofisticados de phishing generados por IA. Esta capacitacion no es un evento único - es un programa continuo con simulaciones periodicas.&lt;/p&gt;
&lt;h3 id=&quot;registro-de-actividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#registro-de-actividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Registro de actividad&lt;/h3&gt;
&lt;p&gt;Cada cambio individual en el CMS - desde una letra cambiada en un título hasta un plugin eliminado - debe registrarse con una marca de tiempo y un ID de usuario (Pista de Auditoria). Estos registros deben almacenarse en un sistema separado e inmutable para que un atacante no pueda borrar sus huellas.&lt;/p&gt;
&lt;h3 id=&quot;procedimientos-de-respuesta-a-incidentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#procedimientos-de-respuesta-a-incidentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Procedimientos de respuesta a incidentes&lt;/h3&gt;
&lt;p&gt;Cada organización debe tener un plan de respuesta a incidentes documentado y ensayado que cubra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quien es notificado primero y como&lt;/li&gt;
&lt;li&gt;Como se contiene el incidente&lt;/li&gt;
&lt;li&gt;Como se comunica internamente y externamente&lt;/li&gt;
&lt;li&gt;Como se realiza el análisis forense post-incidente&lt;/li&gt;
&lt;li&gt;Como se actualizan los controles para prevenir recurrencias&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-monitoreo-continuo-y-deteccion-de-amenazas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-monitoreo-continuo-y-deteccion-de-amenazas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Monitoreo continuo y deteccion de amenazas&lt;/h2&gt;
&lt;p&gt;En 2026, la seguridad reactiva es insuficiente. Necesitas monitoreo proactivo y deteccion de amenazas en tiempo real.&lt;/p&gt;
&lt;h3 id=&quot;siem-security-information-and-event-management&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#siem-security-information-and-event-management&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SIEM (Security Information and Event Management)&lt;/h3&gt;
&lt;p&gt;Un sistema SIEM centraliza todos los registros de seguridad de tu infraestructura WordPress: registros del servidor web, registros de base de datos, registros de acceso de WordPress, alertas del WAF y registros de autenticación. El SIEM aplica reglas de correlacion para detectar patrones sospechosos que serian invisibles mirando cada fuente de registros por separado.&lt;/p&gt;
&lt;h3 id=&quot;deteccion-de-anomalias-con-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deteccion-de-anomalias-con-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deteccion de anomalias con IA&lt;/h3&gt;
&lt;p&gt;Los sistemas modernos de deteccion de amenazas usan modelos de aprendizaje automático para establecer lineas base de comportamiento normal y alertar sobre desviaciones. Por ejemplo, si un editor que normalmente pública 2-3 artículos por semana de repente modifica 50 páginas en una hora, el sistema genera una alerta.&lt;/p&gt;
&lt;h3 id=&quot;escaneo-de-integridad-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escaneo-de-integridad-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escaneo de integridad de archivos&lt;/h3&gt;
&lt;p&gt;Herramientas de monitoreo de integridad de archivos comparan continuamente los archivos del nucleo de WordPress, temas y plugins contra sus versiones conocidas. Cualquier modificacion no autorizada se detecta y reporta inmediatamente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-por-que-wppoland-es-el-socio-de-eleccion-para-wordpress-seguro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-por-que-wppoland-es-el-socio-de-eleccion-para-wordpress-seguro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Por que WPPoland es el socio de eleccion para WordPress seguro&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, no solo “instalamos WordPress”. Construimos &lt;strong&gt;Activos Digitales Reforzados&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Desarrollo con seguridad primero&lt;/strong&gt;: Cada linea de código personalizado que escribimos sigue las directrices OWASP top 10. Conoce más sobre nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitoreo 24/7&lt;/strong&gt;: Utilizamos tanto escaneadores automatizados como supervision humana para mantener registros de seguridad del 100%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cumplimiento empresarial&lt;/strong&gt;: Asistimos a nuestros clientes en cumplir sus requisitos internos de seguridad TI y demandas regulatorias externas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Arquitecturas Headless seguras&lt;/strong&gt;: Diseñamos e implementamos arquitecturas desacopladas que minimizan la superficie de ataque mientras maximizan el rendimiento.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-conclusion-la-seguridad-es-un-proceso-no-un-producto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-conclusion-la-seguridad-es-un-proceso-no-un-producto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Conclusion: La seguridad es un proceso, no un producto&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;La seguridad en 2026 es un ciclo continuo de &lt;strong&gt;Monitoreo, Hardening y Actualización&lt;/strong&gt;. Un CMS corporativo debe construirse con la suposicion de que será objetivo de ataques. Siguiendo los estándares descritos en esta guía - cumplimiento SOC2, arquitectura Zero-Trust y gobernanza automatizada - puedes asegurar que tu presencia digital siga siendo un activo, no un pasivo.&lt;/p&gt;
&lt;p&gt;La pregunta no es si tu sitio será atacado, sino cuando. Y cuando ese momento llegue, la diferencia entre un incidente menor y una catastrofe depende enteramente de las capas de seguridad que hayas implementado proactivamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tu CMS esta quedando atras respecto a los estándares de seguridad modernos? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para una auditoria de seguridad integral y personalizada.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">cms-security</category><category domain="tag">enterprise-security</category><category domain="tag">soc2-compliance</category><category domain="tag">cybersecurity-2026</category><category domain="tag">wordpress-hardening</category><enclosure url="https://wppoland.com/images/og/software-engineering-workshop-group.jpg" type="image/jpeg"/></item><item><title>Guía Completa de Migración WordPress: Mueve Tu Sitio de Forma Segura en 2024</title><link>https://wppoland.com/es/wordpress-migration-complete-guide-2024/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-migration-complete-guide-2024/</guid><description>Migrar tu sitio WordPress puede parecer abrumador, pero con los conocimientos y la preparación adecuados, se convierte en un proceso manejable. Ya sea que estés cambiando de dominio, actualizando el hosting o reestructurando la arquitectura de tu sitio, esta guía completa cubre cada paso.</description><pubDate>Thu, 19 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Migrar tu sitio WordPress puede parecer una tarea intimidante, pero con los conocimientos y la preparación adecuados, se convierte en un proceso perfectamente manejable. Ya sea que estés cambiando de dominio, actualizando tu proveedor de hosting o reestructurando la arquitectura de tu sitio, esta guía completa te acompañará en cada paso del proceso de migración de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;comprendiendo-las-urls-del-sitio-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprendiendo-las-urls-del-sitio-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprendiendo las URLs del Sitio WordPress&lt;/h2&gt;
&lt;p&gt;Antes de adentrarnos en las técnicas de migración, es fundamental entender las dos configuraciónes de URL principales en WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dirección de WordPress (URL)&lt;/strong&gt;: Es donde residen los archivos del núcleo de WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dirección del Sitio (URL)&lt;/strong&gt;: Es la dirección que los visitantes escriben en su navegador para llegar a tu sitio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambas configuraciónes deben incluir la parte &lt;code&gt;https://&lt;/code&gt; y no deben tener una barra diagonal &lt;code&gt;/&lt;/code&gt; al final. Estas configuraciónes controlan cómo WordPress muestra las URLs a lo largo de tu sitio, incluyendo la sección de administración y el frontend.&lt;/p&gt;
&lt;h2 id=&quot;por-qué-la-migración-de-wordpress-se-vuelve-necesaria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-la-migración-de-wordpress-se-vuelve-necesaria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por Qué la Migración de WordPress Se Vuelve Necesaria&lt;/h2&gt;
&lt;p&gt;Existen varios escenarios que pueden requerir la migración de tu sitio WordPress:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cambios de Dominio&lt;/strong&gt;: Rebranding o cambio a un mejor nombre de dominio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migración de Hosting&lt;/strong&gt;: Mudanza a un mejor proveedor de hosting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambios de Servidor&lt;/strong&gt;: Actualización de la infraestructura del servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reestructuración del Sitio&lt;/strong&gt;: Mover WordPress a un subdirectorio o directorio raíz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;De Desarrollo a Producción&lt;/strong&gt;: Paso de entorno de staging a producción&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP a HTTPS&lt;/strong&gt;: Implementación de certificados SSL&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;preparación-la-clave-para-una-migración-exitosa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preparación-la-clave-para-una-migración-exitosa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preparación: La Clave Para una Migración Exitosa&lt;/h2&gt;
&lt;h3 id=&quot;haz-copia-de-seguridad-de-todo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#haz-copia-de-seguridad-de-todo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Haz Copia de Seguridad de Todo&lt;/h3&gt;
&lt;p&gt;Antes de intentar cualquier migración, crea copias de seguridad completas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Copia de Seguridad de Base de Datos&lt;/strong&gt;: Exporta tu base de datos WordPress vía phpMyAdmin o WP-CLI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copia de Seguridad de Archivos&lt;/strong&gt;: Descarga todos los archivos y directorios de WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copia de Seguridad de Configuración&lt;/strong&gt;: Guarda tu archivo wp-config.php por separado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuraciónes de Plugins/Temas&lt;/strong&gt;: Documenta las configuraciónes personalizadas&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;configuración-del-entorno-de-prueba&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-del-entorno-de-prueba&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración del Entorno de Prueba&lt;/h3&gt;
&lt;p&gt;Siempre prueba las migraciones en un entorno de staging antes de ir a producción:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Crear un subdirectorio de prueba&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/test-site&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Copiar archivos a la ubicación de prueba&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;cp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wordpress/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/test-site/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;métodos-de-migración-de-simple-a-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métodos-de-migración-de-simple-a-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métodos de Migración: De Simple a Avanzado&lt;/h2&gt;
&lt;h3 id=&quot;método-1-usando-wp-configphp-solución-rápida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-usando-wp-configphp-solución-rápida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Usando wp-config.php (Solución Rápida)&lt;/h3&gt;
&lt;p&gt;Para cambios temporales de URL, añade estas líneas a tu wp-config.php:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_HOME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://example.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_SITEURL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://example.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ventajas&lt;/strong&gt;: Rápido e inmediato
&lt;strong&gt;Desventajas&lt;/strong&gt;: Valores codificados directamente, ya no podrás editarlos en el admin de WordPress&lt;/p&gt;
&lt;h3 id=&quot;método-2-enfoque-con-functionsphp-solución-temporal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-enfoque-con-functionsphp-solución-temporal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Enfoque con functions.php (Solución Temporal)&lt;/h3&gt;
&lt;p&gt;Si tienes acceso FTP pero no puedes acceder al admin de WordPress:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Accede al archivo functions.php de tu tema activo&lt;/li&gt;
&lt;li&gt;Añade estas líneas después de la etiqueta de apertura &lt;code&gt;&amp;#x3C;?php&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;siteurl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://example.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;home&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://example.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Sube el archivo y visita tu panel de administración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Elimina estas líneas después de que el sitio funcióne&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;método-3-método-de-reubicación-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-método-de-reubicación-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Método de Reubicación de WordPress&lt;/h3&gt;
&lt;p&gt;WordPress incluye un método de reubicación automática:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edita wp-config.php y añade antes de “¡Eso es todo, deja de editar!”:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;RELOCATE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Visita &lt;code&gt;https://tusitio.com/wp-login.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Inicia sesión normalmente&lt;/li&gt;
&lt;li&gt;Verifica las URLs en Ajustes &gt; Generales&lt;/li&gt;
&lt;li&gt;Elimina la constante RELOCATE después&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Advertencia de Seguridad&lt;/strong&gt;: Nunca dejes la constante RELOCATE en wp-config.php ya que crea vulnerabilidades de seguridad.&lt;/p&gt;
&lt;h3 id=&quot;método-4-edición-directa-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-4-edición-directa-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 4: Edición Directa de la Base de Datos&lt;/h3&gt;
&lt;p&gt;Para un control preciso, edita las URLs directamente en la base de datos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Accede a phpMyAdmin&lt;/li&gt;
&lt;li&gt;Selecciona tu base de datos WordPress&lt;/li&gt;
&lt;li&gt;Encuentra la tabla wp_options (el prefijo puede variar)&lt;/li&gt;
&lt;li&gt;Edita las filas ‘siteurl’ y ‘home’&lt;/li&gt;
&lt;li&gt;Actualiza option_value con las nuevas URLs&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Crítico&lt;/strong&gt;: ¡Siempre haz una copia de seguridad de tu base de datos antes de hacer ediciones directas!&lt;/p&gt;
&lt;h2 id=&quot;escenarios-avanzados-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenarios-avanzados-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenarios Avanzados de Migración&lt;/h2&gt;
&lt;h3 id=&quot;mudanza-entre-servidores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mudanza-entre-servidores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mudanza Entre Servidores&lt;/h3&gt;
&lt;p&gt;Al migrar a un nuevo servidor:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Copia de Seguridad Completa&lt;/strong&gt;: Respaldo total del sitio y la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exportar Base de Datos&lt;/strong&gt;: Usa phpMyAdmin o WP-CLI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transferir Archivos&lt;/strong&gt;: Usa FTP, SFTP o rsync&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importar Base de Datos&lt;/strong&gt;: Crea una nueva base de datos e importa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizar wp-config.php&lt;/strong&gt;: Modifica las credenciales de la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizar URLs&lt;/strong&gt;: Usa uno de los métodos anteriores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Probar Exhaustivamente&lt;/strong&gt;: Verifica toda la funcionalidad&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;cambios-de-nombre-de-dominio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambios-de-nombre-de-dominio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cambios de Nombre de Dominio&lt;/h3&gt;
&lt;p&gt;El cambio de dominio requiere atención especial a los datos serializados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Usando WP-CLI (recomendado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;dominioviejo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;dominionuevo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --skip-columns=guid&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## O usa plugins especializados como:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## - Velvet Blues Update URLs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## - Better Search Replace&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Nunca actualices la columna GUID en la tabla wp_posts. GUID significa Identificador Único Global y nunca debe cambiar para mantener la compatibilidad con lectores de feeds.&lt;/p&gt;
&lt;h3 id=&quot;migración-de-subdirectorio-a-raíz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-de-subdirectorio-a-raíz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración de Subdirectorio a Raíz&lt;/h3&gt;
&lt;p&gt;Mover WordPress de un subdirectorio a la raíz:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Actualizar URLs en Admin de WordPress&lt;/strong&gt;: Ajustes &gt; Generales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copiar Archivos&lt;/strong&gt;: Mover los archivos de WordPress a la nueva ubicación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizar .htaccess&lt;/strong&gt;: Modificar las reglas de reescritura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizar Permalinks&lt;/strong&gt;: Volver a guardar la estructura de enlaces permanentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificar Enlaces Internos&lt;/strong&gt;: Actualizar URLs codificadas directamente&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;migración-multisitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-multisitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración Multisitio&lt;/h3&gt;
&lt;p&gt;WordPress Multisitio requiere consideraciones adicionales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Respaldo de la Red&lt;/strong&gt;: Todos los sitios y bases de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editar wp-config.php&lt;/strong&gt;: Actualizar las constantes multisitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizar .htaccess&lt;/strong&gt;: Modificar las reglas de reescritura multisitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones de Base de Datos&lt;/strong&gt;: Actualizar las tablas wp_blogs y wp_site&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opciones de Sitios Individuales&lt;/strong&gt;: Actualizar las tablas de opciones de cada sitio&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lista-de-verificación-post-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-post-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de Verificación Post-Migración&lt;/h2&gt;
&lt;h3 id=&quot;acciones-inmediatas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acciones-inmediatas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acciones Inmediatas&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Probar la funcionalidad del frontend&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar el acceso al admin&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Comprobar todos los formularios y envíos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Probar la funcionalidad de e-commerce&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar el inicio de sesión/registro de usuarios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;consideraciones-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones SEO&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Implementar redirecciones 301 desde las URLs antiguas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar sitemap.xml&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Enviar el nuevo sitemap a los motores de búsqueda&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar la propiedad de Google Analytics&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar Google Search Console&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del Rendimiento&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Limpiar todas las cachés&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Optimizar las tablas de la base de datos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Comprobar la compatibilidad de plugins&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Probar la velocidad del sitio&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar el certificado SSL&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;problemás-comunes-de-migración-y-soluciónes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-comunes-de-migración-y-soluciónes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás Comunes de Migración y Soluciónes&lt;/h2&gt;
&lt;h3 id=&quot;pantalla-blanca-de-la-muerte&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pantalla-blanca-de-la-muerte&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pantalla Blanca de la Muerte&lt;/h3&gt;
&lt;p&gt;Generalmente causada por:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agotamiento del límite de memoria&lt;/li&gt;
&lt;li&gt;Conflictos de plugins&lt;/li&gt;
&lt;li&gt;Incompatibilidad de temas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Aumentar el límite de memoria en wp-config.php:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_MEMORY_LIMIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;256M&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;errores-de-conexión-a-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-de-conexión-a-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores de Conexión a la Base de Datos&lt;/h3&gt;
&lt;p&gt;Verifica los ajustes de wp-config.php:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_NAME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nombre_base_datos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_USER&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;usuario&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_PASSWORD&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contraseña&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;localhost&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;problemás-de-contenido-mixto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-de-contenido-mixto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás de Contenido Mixto&lt;/h3&gt;
&lt;p&gt;Recursos HTTP en páginas HTTPS causan advertencias de seguridad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Encontrar contenido mixto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;http://&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;problemás-de-enlaces-de-imágenes-y-medios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-de-enlaces-de-imágenes-y-medios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás de Enlaces de Imágenes y Medios&lt;/h3&gt;
&lt;p&gt;Actualizar URLs de medios en la base de datos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;UPDATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; REPLACE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(post_content,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dominioviejo.com/wp-content/uploads&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dominionuevo.com/wp-content/uploads&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;herramientas-y-plugins-para-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-y-plugins-para-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas y Plugins para Migración&lt;/h2&gt;
&lt;h3 id=&quot;plugins-de-migración-recomendados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-de-migración-recomendados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins de Migración Recomendados&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;All-in-One WP Migration&lt;/strong&gt;: Herramienta completa de migración de sitios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duplicator&lt;/strong&gt;: Crea paquetes de migración fácilmente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP Migrate DB&lt;/strong&gt;: Especialista en migración de bases de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velvet Blues Update URLs&lt;/strong&gt;: Herramienta de actualización de URLs&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;herramientas-de-línea-de-comandos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-línea-de-comandos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de Línea de Comandos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Exportación de base de datos con WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Importación de base de datos con WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Búsqueda y reemplazo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;url-antigua&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;url-nueva&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad-durante-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad-durante-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de Seguridad Durante la Migración&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Usa HTTPS&lt;/strong&gt;: Asegúrate de que SSL esté configurado en el nuevo servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualiza los Permisos de Archivos&lt;/strong&gt;: Protege wp-config.php (600) y los directorios (755)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elimina Scripts de Migración&lt;/strong&gt;: Borra archivos temporales y constantes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualiza las Claves de Seguridad&lt;/strong&gt;: Genera nuevas claves de WordPress en wp-config.php&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorea los Logs&lt;/strong&gt;: Vigila actividad inusual después de la migración&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;optimización-del-rendimiento-después-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-rendimiento-después-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del Rendimiento Después de la Migración&lt;/h2&gt;
&lt;h3 id=&quot;optimización-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de la Base de Datos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OPTIMIZE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OPTIMIZE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OPTIMIZE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configuración-de-caché&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-caché&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de Caché&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configura el caché de páginas&lt;/li&gt;
&lt;li&gt;Establece el caché del navegador&lt;/li&gt;
&lt;li&gt;Activa la integración con CDN&lt;/li&gt;
&lt;li&gt;Optimiza el caché de la base de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;pruebas-y-validación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-y-validación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas y Validación&lt;/h2&gt;
&lt;h3 id=&quot;pruebas-de-funcionalidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-funcionalidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de Funcionalidad&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Navegación&lt;/strong&gt;: Todos los elementos del menú funcionan correctamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios&lt;/strong&gt;: Los formularios de contacto y envíos funcionan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Búsqueda&lt;/strong&gt;: La búsqueda del sitio devuelve resultados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comentarios&lt;/strong&gt;: El sistema de comentarios funciona&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medios&lt;/strong&gt;: Las imágenes y videos cargan correctamente&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;validación-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#validación-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Validación SEO&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Meta Tags&lt;/strong&gt;: Los títulos y descripciones se muestran correctamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URLs Canónicas&lt;/strong&gt;: Apuntan al nuevo dominio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos Estructurados&lt;/strong&gt;: El marcado schema se válida correctamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces Internos&lt;/strong&gt;: Todos los enlaces funcionan y redirigen apropiadamente&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;mantenimiento-post-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mantenimiento-post-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mantenimiento Post-Migración&lt;/h2&gt;
&lt;h3 id=&quot;monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configura el monitoreo de tiempo de actividad&lt;/li&gt;
&lt;li&gt;Supervisa Google Search Console para detectar errores&lt;/li&gt;
&lt;li&gt;Rastrea las analíticas para patrones de tráfico&lt;/li&gt;
&lt;li&gt;Vigila errores 404 en los logs&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización Continua&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Optimización regular de la base de datos&lt;/li&gt;
&lt;li&gt;Optimización y compresión de imágenes&lt;/li&gt;
&lt;li&gt;Monitoreo del rendimiento de plugins&lt;/li&gt;
&lt;li&gt;Implementación de &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoría de seguridad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;casos-reales-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-reales-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos Reales de Migración&lt;/h2&gt;
&lt;h3 id=&quot;caso-de-estudio-1-migración-de-dominio-e-commerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-1-migración-de-dominio-e-commerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de Estudio 1: Migración de Dominio E-commerce&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Escenario&lt;/strong&gt;: Una tienda online popular con más de 50,000 productos necesitaba migrar de &lt;code&gt;tienda-antigua.com&lt;/code&gt; a &lt;code&gt;marcanew.com&lt;/code&gt; manteniendo los rankings SEO y la confianza del clientes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desafíos Enfrentados&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Base de datos masiva de productos con variaciones complejas&lt;/li&gt;
&lt;li&gt;Sesiones activas de carrito de compras durante la migración&lt;/li&gt;
&lt;li&gt;Integraciones con pasarelas de pago de terceros&lt;/li&gt;
&lt;li&gt;Campañas de email con enlaces al dominio antiguo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de Migración&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preparación pre-migración&lt;/strong&gt; (2 semanas):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creación de copia de seguridad completa incluyendo datos de clientes&lt;/li&gt;
&lt;li&gt;Configuración de entorno de staging temporal&lt;/li&gt;
&lt;li&gt;Pruebas de todas las integraciones de pasarelas de pago&lt;/li&gt;
&lt;li&gt;Preparación de plantillas de email para notificación a clientes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt; (4 horas):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uso de WP-CLI para reemplazo de URLs en la base de datos&lt;/li&gt;
&lt;li&gt;Implementación de reglas de redirección 301 personalizadas&lt;/li&gt;
&lt;li&gt;Actualización de todos los endpoints de API de terceros&lt;/li&gt;
&lt;li&gt;Configuración de certificado SSL para el nuevo dominio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimización post-migración&lt;/strong&gt; (1 semana):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monitoreo de Google Search Console para problemas de indexación&lt;/li&gt;
&lt;li&gt;Actualización de todos los flujos de automatización de marketing&lt;/li&gt;
&lt;li&gt;Implementación de seguimiento mejorado para impacto de la migración&lt;/li&gt;
&lt;li&gt;Encuesta de satisfacción del clientes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Resultados&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;98% de los rankings SEO mantenidos en 2 semanas&lt;/li&gt;
&lt;li&gt;Cero pérdida de datos durante la migración&lt;/li&gt;
&lt;li&gt;Quejas de clientes reducidas en un 75% con comunicación adecuada&lt;/li&gt;
&lt;li&gt;15% de aumento en la velocidad del sitio gracias a la nueva infraestructura de hosting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Lecciones Clave Aprendidas&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La comunicación con el clientes es tan importante como la ejecución técnica&lt;/li&gt;
&lt;li&gt;Probar las pasarelas de pago en entorno de staging previene pérdida de ingresos&lt;/li&gt;
&lt;li&gt;Tener un plan de rollback listo proporciona confianza durante la ejecución&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;caso-de-estudio-2-migración-de-red-multisitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-2-migración-de-red-multisitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de Estudio 2: Migración de Red Multisitio&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Escenario&lt;/strong&gt;: Una institución educativa con más de 200 sitios en subdominios necesitaba migrar de hosting compartido a infraestructura cloud dedicada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Complejidad Técnica&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;201 sitios WordPress individuales&lt;/li&gt;
&lt;li&gt;Roles de usuario personalizados y permisos entre sitios&lt;/li&gt;
&lt;li&gt;Biblioteca de medios compartida con más de 100GB de contenido&lt;/li&gt;
&lt;li&gt;Dependencias complejas de plugins entre sitios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Enfoque de Migración&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de Análisis de la Red&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mapeo de todas las interdependencias entre sitios&lt;/li&gt;
&lt;li&gt;Identificación de configuraciónes personalizadas de plugins&lt;/li&gt;
&lt;li&gt;Documentación de jerarquías de roles de usuario&lt;/li&gt;
&lt;li&gt;Análisis de patrones de uso de la biblioteca de medios&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configuración del Entorno de Staging&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Replicación exacta de la configuración del servidor&lt;/li&gt;
&lt;li&gt;Creación de scripts de prueba automatizados&lt;/li&gt;
&lt;li&gt;Implementación de monitoreo de rendimiento&lt;/li&gt;
&lt;li&gt;Configuración de procedimientos de rollback&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Migración por Fases&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migración de 10 sitios piloto primero&lt;/li&gt;
&lt;li&gt;Documentación y refinamiento del proceso&lt;/li&gt;
&lt;li&gt;Migración por lotes de los sitios restantes&lt;/li&gt;
&lt;li&gt;Monitoreo y optimización continua&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes Técnicas&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Script personalizado para migración multisitio por lotes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; site &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --field=url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Migrando &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;dominio-antiguo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;dominio-nuevo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Resultados&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;99.8% de tiempo de actividad durante el proceso de migración&lt;/li&gt;
&lt;li&gt;40% de mejora en los tiempos de carga de página&lt;/li&gt;
&lt;li&gt;Cero corrupción de datos en todos los sitios&lt;/li&gt;
&lt;li&gt;Administración simplificada a través de gestión centralizada&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;caso-de-estudio-3-migración-http-a-https-con-resolución-de-contenido-mixto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-3-migración-http-a-https-con-resolución-de-contenido-mixto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de Estudio 3: Migración HTTP a HTTPS con Resolución de Contenido Mixto&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Escenario&lt;/strong&gt;: Un blog con gran cantidad de contenido con más de 10,000 publicaciónes y una amplia biblioteca de medios necesitaba la implementación de HTTPS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desafíos de Contenido Mixto&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enlaces HTTP codificados directamente en el contenido de publicaciónes&lt;/li&gt;
&lt;li&gt;Recursos externos sin alternativas HTTPS&lt;/li&gt;
&lt;li&gt;Iframes incrustados de fuentes no seguras&lt;/li&gt;
&lt;li&gt;CSS personalizado con referencias HTTP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Solución Integral&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Auditoría y Limpieza de Contenido&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Buscar y reemplazar referencias HTTP en publicaciónes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;UPDATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; REPLACE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(post_content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;http://ejemplo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://ejemplo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%http://ejemplo.com%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Actualizar campos guid (¡con cuidado!)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;UPDATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; guid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; REPLACE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;guid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;http://ejemplo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://ejemplo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; guid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;http://ejemplo.com%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones de Configuración de Plugins&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Adiciones personalizadas a functions.php para forzar HTTPS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_ssl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTTP_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REQUEST_URI&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;Configuración Avanzada de .htaccess&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Forzar HTTPS para todo el tráfico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTPS}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; off&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://%{HTTP_HOST}%{REQUEST_URI}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Manejar contenido mixto en WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_REFERER}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !^https://&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [F]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Impacto en el Rendimiento&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Caída inicial del 5% en el tráfico durante la primera semana&lt;/li&gt;
&lt;li&gt;Recuperación total en 3 semanas&lt;/li&gt;
&lt;li&gt;10% de mejora en los rankings de búsqueda&lt;/li&gt;
&lt;li&gt;Métricas mejoradas de confianza del usuario y seguridad&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;técnicas-avanzadas-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#técnicas-avanzadas-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Técnicas Avanzadas de Migración&lt;/h2&gt;
&lt;h3 id=&quot;estrategias-de-optimización-de-migración-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-optimización-de-migración-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de Optimización de Migración de Base de Datos&lt;/h3&gt;
&lt;h4 id=&quot;manejo-eficiente-de-bases-de-datos-grandes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-eficiente-de-bases-de-datos-grandes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo Eficiente de Bases de Datos Grandes&lt;/h4&gt;
&lt;p&gt;Para bases de datos que superan 1GB, los métodos estándar de exportación/importación a menudo fallan. Aquí tienes técnicas avanzadas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Método 1: Exportación por Fragmentos con WP-CLI&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Exportar por fragmentos para bases de datos grandes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --tables=wp_posts,wp_postmeta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --add-drop-table&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --tables=wp_options,wp_users,wp_usermeta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --add-drop-table&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Combinar e importar por separado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; nueva_base_datos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; fragmento1.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; nueva_base_datos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; fragmento2.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Método 2: Script PHP Personalizado para Gestión de Memoria&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Script personalizado de migración de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;set_time_limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;memory_limit&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;1024M&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$source &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mysqli&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;localhost&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;usuario&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contraseña&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;bd_origen&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$target &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mysqli&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;localhost&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;usuario&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contraseña&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;bd_destino&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Migrar en lotes de 1000 registros&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$batch_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIMIT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $offset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$batch_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;num_rows;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($row &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;fetch_assoc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $columns &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array_keys&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($row));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $values &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array_map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([$target, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;real_escape_string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], $row));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $target&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;INSERT INTO&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp_posts (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$columns&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;VALUES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$values&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $batch_size;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $batch_size);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;manejo-de-datos-serializados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-de-datos-serializados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo de Datos Serializados&lt;/h4&gt;
&lt;p&gt;WordPress almacena muchas configuraciónes como datos PHP serializados, que se rompen cuando cambian las longitudes de las URLs:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Corrección Avanzada de Serialización&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Corregir datos serializados después de cambios de URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fix_serialized_urls&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($old_url, $new_url) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; option_id, option_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; option_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$old_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;%&apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $fixed_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($old_url, $new_url, $option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_value);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Verificar si son datos serializados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_serialized&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fixed_value)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $unserialized &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; unserialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fixed_value);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($unserialized &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $fixed_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; serialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($unserialized);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;options,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;option_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $fixed_value],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;option_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_id]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;desarrollo-de-scripts-de-migración-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desarrollo-de-scripts-de-migración-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desarrollo de Scripts de Migración Personalizados&lt;/h3&gt;
&lt;h4 id=&quot;framework-de-automatización-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#framework-de-automatización-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Framework de Automatización de Migración&lt;/h4&gt;
&lt;p&gt;Crea un script completo de automatización de migración:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Script de Automatización de Migración WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  # Salir ante cualquier error&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Configuración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OLD_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;sitio-viejo.com&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;NEW_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;sitio-nuevo.com&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/ruta/a/copias&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;STAGING_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/ruta/a/staging&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;LOG_FILE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/migración_$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d_%H%M%S).log&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Función de registro&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;[$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;+%Y-%m-%d %H:%M:%S&apos;)] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tee&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$LOG_FILE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificaciones pre-migración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;pre_migration_checks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Iniciando verificaciónes pre-migración&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar instalación de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; is-installed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Instalación de WordPress no encontrada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar conexión a base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Falló la conexión a la base de datos&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Crear directorio de copias de seguridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    mkdir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    mkdir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$STAGING_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Verificaciones pre-migración completadas&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Creación de copias de seguridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;create_backups&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Creando copias de seguridad completas&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Copia de seguridad de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/base_datos_$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d_%H%M%S).sql&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Copia de seguridad de archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/archivos_$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d_%H%M%S).tar.gz&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Copia de seguridad de configuración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    cp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-config.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/wp-config_$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d_%H%M%S).php&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Copias de seguridad completadas exitosamente&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Reemplazo de URLs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;replace_urls&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Iniciando proceso de reemplazo de URLs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # URLs principales de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$OLD_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$NEW_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --skip-columns=guid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Reemplazos adicionales de URL en tablas específicas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$OLD_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$NEW_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;) WHERE meta_value LIKE &apos;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$OLD_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;%&apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Reemplazo de URLs completado&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Validación post-migración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;post_migration_validation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Iniciando validación post-migración&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Probar accesibilidad del sitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;https://&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$NEW_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /dev/null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;El sitio es accesible&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: El sitio no es accesible&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Probar admin de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;https://&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$NEW_DOMAIN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/wp-admin/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /dev/null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Admin de WordPress es accesible&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Admin de WordPress no es accesible&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar integridad de la base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Validación post-migración completada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ejecución principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Iniciando proceso de migración WordPress&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    pre_migration_checks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    create_backups&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    replace_urls&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    post_migration_validation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Migración completada exitosamente&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ejecutar función principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;main&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;estrategias-de-optimización-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-optimización-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de Optimización del Rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;optimización-de-la-configuración-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-la-configuración-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de la Configuración del Servidor&lt;/h3&gt;
&lt;h4 id=&quot;configuración-nginx-para-sitios-migrados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-nginx-para-sitios-migrados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración Nginx para Sitios Migrados&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    listen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    server_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;sitio-nuevo.com www.sitio-nuevo.com;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; https://$server_name$request_uri;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    listen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;443&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ssl http2;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    server_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;sitio-nuevo.com www.sitio-nuevo.com;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    root &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/var/www/html;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    index &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;index.php index.html;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Configuración SSL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ssl_certificate &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/ruta/a/ssl/cert.pem;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ssl_certificate_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/ruta/a/ssl/private.key;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ssl_protocols &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;TLSv1.2 TLSv1.3;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ssl_ciphers &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Configuración específica de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        try_files &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$uri $uri/ /index.php?$args;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; \.php$ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        fastcgi_pass &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;unix:/var/run/php/php8.1-fpm.sock;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        fastcgi_index &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;index.php;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        fastcgi_param &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        include &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;fastcgi_params;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        # Optimizaciónes de rendimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        fastcgi_buffer_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;128k&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        fastcgi_buffers &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 256k&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        fastcgi_busy_buffers_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;256k&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Configuración de caché&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ~*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; \.(js|css|png|jpg|jpeg|gif|ico|svg)$ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        expires &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;1y;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Cache-Control &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;public, immutable&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Cabeceras de seguridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;X-Frame-Options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;SAMEORIGIN&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;X-XSS-Protection &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1; mode=block&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;X-Content-Type-Options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;nosniff&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Referrer-Policy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;no-referrer-when-downgrade&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Content-Security-Policy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;default-src &apos;self&apos; http: https: data: blob: &apos;unsafe-inline&apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;optimización-php-para-rendimiento-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-php-para-rendimiento-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización PHP para Rendimiento de Migración&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Configuración PHP optimizada para migración WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;memory_limit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 512M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_execution_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 300&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_input_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 300&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;upload_max_filesize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 64M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;post_max_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 64M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;max_input_vars&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 3000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;; Configuración OPcache para mejor rendimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.enable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.memory_consumption&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=128&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.interned_strings_buffer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.max_accelerated_files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=4000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.revalidate_freq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.fast_shutdown&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ajuste-del-rendimiento-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ajuste-del-rendimiento-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ajuste del Rendimiento de la Base de Datos&lt;/h3&gt;
&lt;h4 id=&quot;optimización-de-la-configuración-mysql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-la-configuración-mysql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de la Configuración MySQL&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Optimización MySQL para WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; GLOBAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; innodb_buffer_pool_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1073741824&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- 1GB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; GLOBAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; innodb_log_file_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 268435456&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- 256MB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; GLOBAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; innodb_flush_log_at_trx_commit &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; GLOBAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; innodb_flush_method &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; O_DIRECT;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Configuración de caché de consultas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; GLOBAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; query_cache_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; GLOBAL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; query_cache_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 67108864&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- 64MB&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;estrategia-de-indexación-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-indexación-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de Indexación de la Base de Datos&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Añadir índices para mejor rendimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; idx_post_type_status (post_type, post_status);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; idx_meta_key_value (meta_key, meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;191&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; idx_autoload (autoload, option_name);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Optimizar tablas grandes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OPTIMIZE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OPTIMIZE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;OPTIMIZE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;guía-avanzada-de-resolución-de-problemas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guía-avanzada-de-resolución-de-problemas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guía Avanzada de Resolución de Problemas&lt;/h2&gt;
&lt;h3 id=&quot;problemás-complejos-de-migración-y-soluciónes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-complejos-de-migración-y-soluciónes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás Complejos de Migración y Soluciónes&lt;/h3&gt;
&lt;h4 id=&quot;problema-1-corrupción-de-datos-serializados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-1-corrupción-de-datos-serializados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema 1: Corrupción de Datos Serializados&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: Después del reemplazo de URLs, las opciones del tema y la configuración de plugins se corrompen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diagnóstico&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificar datos serializados corruptos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; check_serialized_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $corrupted &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        SELECT option_id, option_name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        FROM {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        WHERE option_value LIKE &apos;%:%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        AND (option_value NOT LIKE &apos;a:%&apos; OR option_value NOT LIKE &apos;%;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;;%&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($corrupted &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Opción corrupta: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Reparación avanzada de datos serializados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; repair_serialized_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($old_length, $new_length) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Obtener todas las opciones serializadas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $serialized_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        SELECT option_id, option_value&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        FROM {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        WHERE option_value REGEXP &apos;^[aO]:[0-9]+:&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($serialized_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Actualizar referencias de longitud en datos serializados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $pattern &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;s:([0-9]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;):&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;(.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;?)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/s&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $callback &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($matches) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($old_length, $new_length) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; strlen&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($matches[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;s:&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;:&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $matches[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $repaired &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_replace_callback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($pattern, $callback, $data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($repaired &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $data) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;options,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;option_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $repaired],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;option_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_id]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;problema-2-agotamiento-de-memoria-durante-migración-de-base-de-datos-grande&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-2-agotamiento-de-memoria-durante-migración-de-base-de-datos-grande&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema 2: Agotamiento de Memoria Durante Migración de Base de Datos Grande&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: Los límites de memoria PHP se exceden durante la importación/exportación de la base de datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Método 1: Procesamiento por Fragmentos&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Procesar base de datos en fragmentos para evitar problemas de memoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; process_database_in_chunks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($table, $chunk_size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    do&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            SELECT * FROM &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$table&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            LIMIT &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$offset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$chunk_size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $row) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            // Procesar cada fila&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            process_row&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($row);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $chunk_size;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Liberar memoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;flush&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($results) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $chunk_size);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Método 2: Exportación de Base de Datos por Streaming&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Usar mysqldump con compresión para bases de datos grandes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysqldump&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --single-transaction&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --quick&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --lock-tables=false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  --host=localhost&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --user=usuario&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --password=contraseña&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  nombre_base_datos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; gzip&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql.gz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Importar con streaming&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;gunzip&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; mysql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -u&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; nombre_base_datos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;problema-3-compatibilidad-de-plugins-después-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-3-compatibilidad-de-plugins-después-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema 3: Compatibilidad de Plugins Después de la Migración&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: Los plugins dejan de funcionar después de los cambios de URL debido a referencias codificadas directamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución Sistemática&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Crear Verificador de Compatibilidad de Plugins&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificador de compatibilidad de plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; check_plugin_compatibility&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $plugins &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;active_plugins&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $issues &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($plugins &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $plugin_path) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $plugin_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_plugin_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WP_PLUGIN_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $plugin_path);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Verificar URLs codificadas en archivos de plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $plugin_files &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; glob&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WP_PLUGIN_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; dirname&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($plugin_path) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/*.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($plugin_files &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $file) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; file_get_contents&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($file);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            // Buscar URLs potencialmente codificadas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;https?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\/\/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;[^\s&quot;\&apos;&amp;#x3C;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $content, $matches)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $issues[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $plugin_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;file&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $file,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;hardcoded_urls&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $matches&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $issues;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Actualizador Automático de URLs de Plugins&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Actualizar configuraciónes de plugins con nuevas URLs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; update_plugin_configurations&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($old_url, $new_url) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Actualizar opciones de plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $plugin_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        SELECT option_name, option_value&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        FROM {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        WHERE option_name LIKE &apos;plugin_%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        OR option_name LIKE &apos;%_options&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($plugin_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_value, $old_url) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $updated_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($old_url, $new_url, $option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_value);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;options,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;option_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $updated_value],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;option_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;option_name]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;automatización-de-migración-e-integración-cicd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatización-de-migración-e-integración-cicd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatización de Migración e Integración CI/CD&lt;/h2&gt;
&lt;h3 id=&quot;integración-continua-para-migraciones-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-continua-para-migraciones-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración Continua para Migraciones WordPress&lt;/h3&gt;
&lt;h4 id=&quot;flujo-de-trabajo-github-actions-para-pruebas-automatizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-github-actions-para-pruebas-automatizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de Trabajo GitHub Actions para Pruebas Automatizadas&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Prueba de Migración WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  push&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    branches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  pull_request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    branches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;jobs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  migration-test&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    runs-on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      mysql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;mysql:8.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        env&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;password&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          MYSQL_DATABASE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress_test&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;-&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          --health-cmd=&quot;mysqladmin ping&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          --health-interval=10s&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          --health-timeout=5s&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          --health-retries=3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    steps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;actions/checkout@v3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Configurar PHP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;shivammathur/setup-php@v2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        php-versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;8.1&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        extensións&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;mysqli, gd, xml, mbstring&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Instalar WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        curl -O https://wordpress.org/latest.tar.gz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        tar -xzf latest.tar.gz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        cp -r wordpress/* /var/www/html/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Configurar WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        cp wp-config-sample.php wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        sed -i &quot;s/database_name_here/wordpress_test/&quot; wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        sed -i &quot;s/username_here/root/&quot; wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        sed -i &quot;s/password_here/password/&quot; wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        sed -i &quot;s/localhost/127.0.0.1/&quot; wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Instalar WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        chmod +x wp-cli.phar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        sudo mv wp-cli.phar /usr/local/bin/wp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Ejecutar Pruebas de Migración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        wp core install --url=http://localhost --title=&quot;Sitio de Prueba&quot; --admin_user=admin --admin_password=password --admin_email=test@example.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        wp plugin install all-in-one-wp-migration --activate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Validar Migración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        wp option get siteurl&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        wp option get home&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;script-de-despliegue-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#script-de-despliegue-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Script de Despliegue Automatizado&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Script de Despliegue Automatizado WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -e&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Variables de entorno&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ENVIRONMENT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;${1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;staging&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/copias/wordpress&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DEPLOY_LOG&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/var/log/deploy.log&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Función de registro&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;[$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;+%Y-%m-%d %H:%M:%S&apos;)] [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$ENVIRONMENT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tee&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$DEPLOY_LOG&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificaciones pre-despliegue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;pre_deployment_checks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Iniciando verificaciónes pre-despliegue&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar si WordPress está instalado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; is-installed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: WordPress no está instalado correctamente&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar conectividad de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Falló la conexión a la base de datos&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar que los plugins requeridos están activos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; is-active&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; all-in-one-wp-migration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Plugin requerido de migración no está activo&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Verificaciones pre-despliegue completadas&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Crear copia de seguridad del despliegue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;create_deployment_backup&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Creando copia de seguridad del despliegue&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    local&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; timestamp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d_%H%M%S&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    local&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; backup_file&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$BACKUP_DIR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/pre_deploy_&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$ENVIRONMENT_$timestamp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.sql&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$backup_file&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar integridad de la copia de seguridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$backup_file&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Copia de seguridad creada y verificada: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$backup_file&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Falló la creación de la copia de seguridad&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ejecutar migración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;execute_migration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Ejecutando migración WordPress&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Actualizar URLs del sitio si es necesario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$ENVIRONMENT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;production&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ]; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;staging.ejemplo.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ejemplo.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --skip-columns=guid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Limpiar todas las cachés&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Actualizar reglas de reescritura&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Migración completada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Validación post-despliegue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;post_deployment_validation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Iniciando validación post-despliegue&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar accesibilidad del sitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    local&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; site_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; siteurl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /dev/null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;El sitio es accesible: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: El sitio no es accesible&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar admin de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$site_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/wp-admin/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /dev/null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Admin de WordPress es accesible&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Admin de WordPress no es accesible&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar integridad de la base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Integridad de base de datos verificada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ERROR: Falló la verificación de integridad de base de datos&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Verificar plugins críticos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    local&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; critical_plugins&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;all-in-one-wp-migration&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;wp-super-cache&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; plugin &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;critical_plugins&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;]}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; is-active&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Plugin &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; está activo&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;ADVERTENCIA: Plugin &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; no está activo&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Validación post-despliegue completada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Función principal de despliegue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Iniciando despliegue WordPress para entorno &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$ENVIRONMENT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    pre_deployment_checks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    create_deployment_backup&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    execute_migration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    post_deployment_validation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Despliegue completado exitosamente&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Enviar notificación (opcional)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; command&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; slack-cli&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /dev/null; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        slack-cli&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; send&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Despliegue WordPress a &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$ENVIRONMENT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; completado exitosamente&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ejecutar función principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;main&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;La migración de WordPress no tiene que ser abrumadora cuando se aborda de forma sistemática. Siguiendo esta guía completa, preparándote exhaustivamente y probando con diligencia, puedes migrar tu sitio WordPress con éxito y con una interrupción mínima para tus usuarios y el rendimiento SEO.&lt;/p&gt;
&lt;p&gt;Recuerda que la preparación es clave: nunca intentes una migración sin copias de seguridad completas y un plan de rollback claro. Tómate tu tiempo, prueba exhaustivamente y no dudes en buscar ayuda profesional para migraciones complejas.&lt;/p&gt;
&lt;p&gt;Con una planificación y ejecución adecuadas, tu migración de WordPress puede ser un proceso fluido que prepare tu sitio para el crecimiento y el éxito futuro.&lt;/p&gt;</content:encoded><category>development</category><category>wordpress</category><category>migration</category><category domain="tag">wordpress</category><category domain="tag">migration</category><category domain="tag">hosting</category><category domain="tag">domain</category><category domain="tag">database</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-data-management.jpg" type="image/jpeg"/></item><item><title>WordPress vs Wix vs Squarespace: Cual es la mejor plataforma en 2026</title><link>https://wppoland.com/es/wordpress-vs-wix-squarespace-2026-en/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-vs-wix-squarespace-2026-en/</guid><description>Comparación exhaustiva de WordPress, Wix y Squarespace en 2026. Descubra cual plataforma se adapta mejor a su negocio, presupuesto y nivel técnico.</description><pubDate>Tue, 17 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Al crear un sitio web en 2026, tres nombres dominan la conversacion: &lt;strong&gt;WordPress&lt;/strong&gt;, &lt;strong&gt;Wix&lt;/strong&gt; y &lt;strong&gt;Squarespace&lt;/strong&gt;. Cada una sirve a audiencias diferentes, y la “mejor” opción depende completamente de sus objetivos, presupuesto y comodidad técnica. La decision de elegir una plataforma web no es trivial: afecta a su SEO, su escalabilidad, su capacidad de personalización e incluso su independencia digital a largo plazo.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta comparación analiza las tres plataformas de forma objetiva y exhaustiva, proporcionando toda la información que necesita para tomar una decision fundamentada.&lt;/p&gt;
&lt;h2 id=&quot;wordpress-la-potencia-de-código-abierto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-la-potencia-de-código-abierto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: La potencia de código abierto&lt;/h2&gt;
&lt;p&gt;WordPress no es un constructor de sitios web en el sentido tradicional: es un &lt;strong&gt;Sistema de Gestión de Contenidos (CMS)&lt;/strong&gt; que alimenta más del 43% de todo internet. Es autoalojado (necesita su propio servidor/hosting) e infinitamente personalizable. Desde su lanzamiento en 2003, WordPress ha evolucionado de una simple plataforma de blogs a un ecosistema completo que soporta desde portfolios personales hasta las plataformas de comercio electronico más grandes del mundo.&lt;/p&gt;
&lt;h3 id=&quot;la-arquitectura-de-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-arquitectura-de-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La arquitectura de WordPress en 2026&lt;/h3&gt;
&lt;p&gt;En 2026, WordPress ha madurado enormemente. El Editor de Bloques (Gutenberg) esta en su fase 3, ofreciendo capacidades de edicion completa del sitio (Full Site Editing) que rivalizan con los constructores visuales de Wix y Squarespace. La introduccion de la Abilities API y las capacidades de IA integradas en WordPress 7.0 han transformado la experiencia de usuario, haciendo que la creación de contenido sea más intuitiva que nunca.&lt;/p&gt;
&lt;p&gt;La plataforma sigue un modelo de software libre (GPL), lo que significa que cualquier persona puede inspeccionar, modificar y redistribuir el código. Esta transparencia es fundamental para organizaciónes que valoran la soberania digital y necesitan asegurar el cumplimiento de regulaciones como el RGPD europeo.&lt;/p&gt;
&lt;h3 id=&quot;ideal-para&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ideal-para&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ideal para&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Negocios que esperan un crecimiento significativo y necesitan escalar sin limites.&lt;/li&gt;
&lt;li&gt;Sitios con mucho contenido como blogs, medios de comunicación, revistas digitales y portales corporativos.&lt;/li&gt;
&lt;li&gt;Cualquier persona que necesite funcionalidad personalizada: membresias, comercio electronico, APIs, integraciones con sistemas empresariales.&lt;/li&gt;
&lt;li&gt;Organizaciones que requieren control total sobre sus datos y su infraestructura.&lt;/li&gt;
&lt;li&gt;Empresas que necesitan cumplir con regulaciones específicas de su industria.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ventajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Propiedad completa&lt;/strong&gt;: Usted es dueno de su código, datos y dominio. No hay riesgo de que un proveedor cierre su cuenta o cambie las condiciones del servicio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad ilimitada&lt;/strong&gt;: Desde un blog personal hasta sitios empresariales como TechCrunch, The New York Times o la Casa Blanca. WordPress puede manejar millones de visitas diarias con la infraestructura adecuada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mas de 60.000 plugins&lt;/strong&gt;: Extienda la funcionalidad sin escribir código. Desde SEO avanzado hasta comercio electronico, automatizacion de marketing, CRM y mucho mas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Campeon del SEO&lt;/strong&gt;: La arquitectura y los plugins especializados (Yoast, RankMath, SEOPress) estan optimizados para motores de búsqueda. WordPress genera URLs limpias, sitemaps XML, datos estructurados Schema.org y ofrece control total sobre metadatos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidad global masiva&lt;/strong&gt;: Miles de desarrolladores, disenadores y creadores de contenido contribuyen activamente al ecosistema. WordCamps y meetups locales en todo el mundo proporcionan aprendizaje continuo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Headless y API-first&lt;/strong&gt;: WordPress puede funcionar como backend puro a través de su REST API o WPGraphQL, alimentando frontends en React, Vue, Astro o Next.js.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desventajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mantenimiento requerido&lt;/strong&gt;: Usted es responsable de las actualizaciones, la seguridad y las copias de respaldo. Aunque esto puede delegarse a un servicio de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress profesional&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complejidad inicial&lt;/strong&gt;: Requiere elegir hosting, instalar software y configurar el entorno. La curva de aprendizaje existe, aunque se ha suavizado mucho en 2026.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control de calidad&lt;/strong&gt;: Los plugins de baja calidad pueden ralentizar o romper su sitio. Es esencial elegir extensiónes reputadas y mantenerlas actualizadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad como responsabilidad&lt;/strong&gt;: Al ser el CMS más popular del mundo, es un objetivo frecuente de ataques. Una &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad&lt;/a&gt; periodica es esencial.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;costes-reales-de-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-reales-de-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes reales de WordPress en 2026&lt;/h3&gt;
&lt;p&gt;El software WordPress es gratuito, pero los costes reales incluyen:&lt;/p&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Rango de coste mensual&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting compartido básico&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5-15 EUR/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting gestionado (Kinsta, WP Engine)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30-300 EUR/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tema premium&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-60 EUR (pago único)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Plugins premium (SEO, seguridad, rendimiento)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10-50 EUR/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mantenimiento profesional&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-300 EUR/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total tipico para PYME&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;50-200 EUR/mes&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;wix-el-constructor-impulsado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-el-constructor-impulsado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix: El constructor impulsado por IA&lt;/h2&gt;
&lt;p&gt;Wix es una plataforma &lt;strong&gt;SaaS (Software as a Service)&lt;/strong&gt; donde todo esta gestionado por usted: alojamiento, seguridad y actualizaciones. Su fortaleza es el editor visual de arrastrar y soltar y la generación de sitios impulsada por IA (Wix ADI). En 2026, Wix ha invertido fuertemente en inteligencia artificial, ofreciendo herramientas que pueden generar sitios web completos a partir de unas pocas preguntas sobre su negocio.&lt;/p&gt;
&lt;h3 id=&quot;la-evolucion-de-wix-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-evolucion-de-wix-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La evolucion de Wix en 2026&lt;/h3&gt;
&lt;p&gt;Wix ha recorrido un largo camino desde sus inicios como un simple constructor de páginas Flash. En 2026, la plataforma ofrece un editor visual sofisticado, un sistema de gestión de contenido estructurado (Wix CMS), capacidades de comercio electronico y una suite de herramientas de marketing integradas. Su motor de IA, Wix ADI (Artificial Design Intelligence), puede generar un sitio web funcional en minutos basandose en respuestas a un cuestionario.&lt;/p&gt;
&lt;p&gt;La plataforma Velo (anteriormente Corvid) permite a los desarrolladores anadir lógica personalizada con JavaScript, aunque dentro de un entorno controlado y limitado en comparación con WordPress.&lt;/p&gt;
&lt;h3 id=&quot;ideal-para-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ideal-para-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ideal para&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pequeños negocios, autonomos y emprendedores individuales que necesitan presencia online rápida.&lt;/li&gt;
&lt;li&gt;Personas con cero conocimientos técnicos y sin deseo de aprender programacion.&lt;/li&gt;
&lt;li&gt;Prototipado rápido y lanzamientos urgentes de páginas de aterrizaje.&lt;/li&gt;
&lt;li&gt;Negocios locales que necesitan una web informativa sencilla con formulario de contacto.&lt;/li&gt;
&lt;li&gt;Profesionales que quieren una web de presentacion sin complicaciones técnicas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ventajas-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fácilidad de uso&lt;/strong&gt;: Verdaderamente arrastrar y soltar. No se requiere codificacion para el 90% de los casos de uso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Todo incluido&lt;/strong&gt;: Hosting, SSL, gestión de dominio y actualizaciones de seguridad estan incluidos en el precio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wix ADI&lt;/strong&gt;: Responda preguntas y la IA construye su sitio con contenido sugerido, imágenes y estructura.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Market&lt;/strong&gt;: Anada funciones como reservas, pagos, chat en vivo, formularios avanzados y mas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento mejorado&lt;/strong&gt;: En 2026, Wix ha optimizado significativamente la velocidad de carga, cerrando la brecha histórica con WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte incluido&lt;/strong&gt;: Atención al clientes 24/7 integrada en el precio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desventajas-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flexibilidad limitada&lt;/strong&gt;: No puede anadir código personalizado más alla de su entorno sandbox. Las integraciones con sistemas externos son limitadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitaciones SEO&lt;/strong&gt;: Historicamente más debil que WordPress en SEO, aunque ha mejorado. Aun carece del nivel de control granular que ofrecen plugins como Yoast.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloqueo de proveedor (vendor lock-in)&lt;/strong&gt;: &lt;strong&gt;No puede exportar su sitio Wix&lt;/strong&gt;. Si decide irse, debe reconstruir todo desde cero en otra plataforma.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicidad en el plan gratuito&lt;/strong&gt;: La marca de Wix aparece a menos que pague un plan premium.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Costes crecientes&lt;/strong&gt;: Las funcionalidades avanzadas requieren planes cada vez más caros, y los costes se acumulan rápidamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin acceso al servidor&lt;/strong&gt;: No hay SSH, no hay acceso FTP, no hay control sobre la infraestructura subyacente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;costes-reales-de-wix-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-reales-de-wix-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes reales de Wix en 2026&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Plan&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Coste mensual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Incluye&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Gratuito&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Subdominio wix.com, anuncios Wix&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Light&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;12 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dominio propio, sin anuncios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Core&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;22 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50 GB almacenamiento, analytics&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Business&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;27 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pagos online, 100 GB almacenamiento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Business Elite&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;159 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Funcionalidad completa, prioridad&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;squarespace-la-eleccion-del-disenador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#squarespace-la-eleccion-del-disenador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Squarespace: La eleccion del disenador&lt;/h2&gt;
&lt;p&gt;Squarespace es conocida por sus &lt;strong&gt;impresionantes plantillas galardonadas&lt;/strong&gt;. Es una plataforma visual-first preferida por fotografos, artistas y profesionales creativos. En 2026, Squarespace se ha consolidado como la opción premium para quienes priorizan la estetica sobre la complejidad técnica.&lt;/p&gt;
&lt;h3 id=&quot;la-filosofia-de-squarespace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-filosofia-de-squarespace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La filosofia de Squarespace&lt;/h3&gt;
&lt;p&gt;Squarespace se diferencia por su enfoque en el diseño. Cada plantilla es creada por disenadores profesionales y ofrece un nivel de pulido visual que requeriria una inversión significativa en un tema WordPress personalizado. La plataforma sigue una filosofia “menos es mas”, ofreciendo menos opciones pero con mayor calidad en cada una de ellas.&lt;/p&gt;
&lt;p&gt;En 2026, Squarespace ha expandido significativamente sus capacidades de comercio electronico, integrando procesamiento de pagos, gestión de inventario y herramientas de marketing por correo electronico directamente en la plataforma.&lt;/p&gt;
&lt;h3 id=&quot;ideal-para-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ideal-para-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ideal para&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Portfolios y agencias creativas que necesitan causar una primera impresion visual impactante.&lt;/li&gt;
&lt;li&gt;Restaurantes, salones de belleza y negocios de servicios que valoran una presencia online elegante.&lt;/li&gt;
&lt;li&gt;Personas que priorizan la estetica sobre la complejidad y funcionalidad avanzada.&lt;/li&gt;
&lt;li&gt;Fotografos, artistas visuales y disenadores que necesitan galericas profesionales.&lt;/li&gt;
&lt;li&gt;Pequeños negocios de comercio electronico con catálogos limitados.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ventajas-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plantillas hermosas&lt;/strong&gt;: Calidad de diseño lider en la industria. Cada template es una obra de arte digital.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funciones integradas&lt;/strong&gt;: Programacion de citas, comercio electronico, analíticas y blog integrados nativamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile-first&lt;/strong&gt;: Todas las plantillas son responsivas por defecto con excelente experiencia móvil.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad gestionada&lt;/strong&gt;: SSL y hosting estan incluidos, con actualizaciones de seguridad automáticas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor de arrastrar y soltar refinado&lt;/strong&gt;: Menos flexibilidad que Wix pero con resultados visualmente más consistentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración con redes sociales&lt;/strong&gt;: Conexión nativa con Instagram, Pinterest y otras plataformas visuales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desventajas-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Menos flexible que WordPress&lt;/strong&gt;: La personalización esta limitada a sus sistemas y plantillas predefinidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste más alto&lt;/strong&gt;: Los precios son superiores a Wix para funcionalidades comparables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO adecuado, no el mejor&lt;/strong&gt;: Bueno pero no tan profundo como WordPress. Faltan capacidades avanzadas como datos estructurados personalizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloqueo de proveedor&lt;/strong&gt;: Como Wix, no puede exportar su diseño ni migrar fácilmente a otra plataforma.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin ecosistema de plugins&lt;/strong&gt;: A diferencia de WordPress con sus 60.000+ plugins, Squarespace tiene una oferta limitada de extensiónes de terceros.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin Headless/API&lt;/strong&gt;: No ofrece opciones para arquitecturas desacopladas o integraciones API avanzadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;costes-reales-de-squarespace-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costes-reales-de-squarespace-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costes reales de Squarespace en 2026&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Plan&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Coste mensual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Incluye&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Personal&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;16 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sitio web, blog, SSL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Business&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;23 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Analiticas avanzadas, CSS personalizado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Commerce Basic&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;28 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Tienda online, sin comisiones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Commerce Advanced&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;52 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Recuperacion de carritos, suscripciones&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;comparación-lado-a-lado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-lado-a-lado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación lado a lado&lt;/h2&gt;



















































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Wix&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Squarespace&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Propiedad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Total&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguna (SaaS)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguna (SaaS)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Hosting&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Autogestionado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Incluido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Precio inicial&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis (+ hosting)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis (con anuncios)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;~16 EUR/mes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Libertad de diseño&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ilimitada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta (arrastrar y soltar)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada (plantillas)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;SEO&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bueno&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Comercio electronico&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WooCommerce (ilimitado)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Wix Stores&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Squarespace Commerce&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Riesgo de bloqueo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Curva de aprendizaje&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media-Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja-Media&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Escalabilidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ilimitada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;API/Headless&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si (REST + GraphQL)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitado (Velo)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Comunidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Masiva (global)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pequeña&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plugins/extensiónes&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;60.000+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;300+ (App Market)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30+&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;rendimiento-y-core-web-vitals-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-y-core-web-vitals-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento y Core Web Vitals en 2026&lt;/h2&gt;
&lt;p&gt;El rendimiento web es un factor crítico de posicionamiento en 2026. Google evalua los Core Web Vitals (LCP, INP, CLS) como señales de clasificación directas.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-y-el-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-y-el-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress y el rendimiento&lt;/h3&gt;
&lt;p&gt;Con la configuración adecuada, WordPress puede alcanzar puntuaciones perfectas de 100/100 en PageSpeed Insights. La clave esta en la optimización del hosting, el uso de CDN, la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; y la gestión inteligente de plugins.&lt;/p&gt;
&lt;p&gt;Un sitio WordPress bien optimizado con cache en el Edge, imágenes AVIF y carga diferida alcanza tiempos TTFB inferiores a 50ms y puntuaciones LCP por debajo de 1.5 segundos. Esto supera consistentemente a las alternativas SaaS.&lt;/p&gt;
&lt;h3 id=&quot;wix-y-el-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-y-el-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix y el rendimiento&lt;/h3&gt;
&lt;p&gt;Wix ha mejorado dramaticamente su rendimiento en 2026. Su plataforma genera sitios más rápidos que hace cinco años, pero el control sobre la optimización sigue siendo limitado. No puede implementar estrategias avanzadas de cache, optimización de base de datos o configuraciónes de servidor personalizadas.&lt;/p&gt;
&lt;h3 id=&quot;squarespace-y-el-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#squarespace-y-el-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Squarespace y el rendimiento&lt;/h3&gt;
&lt;p&gt;Squarespace ofrece un rendimiento consistente pero no excepcional. Las plantillas estan optimizadas para velocidad, pero la falta de control sobre el servidor y las limitaciones en la compresion de imágenes impiden alcanzar las puntuaciones más altas de Core Web Vitals.&lt;/p&gt;
&lt;h2 id=&quot;seo-el-factor-decisivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-el-factor-decisivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO: El factor decisivo&lt;/h2&gt;
&lt;p&gt;Para muchos negocios, el SEO es el factor determinante al elegir plataforma. La capacidad de posicionar en Google y en la búsqueda por IA (Google AI Overviews, Bing Copilot) define el éxito digital.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-el-campeon-indiscutible-del-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-el-campeon-indiscutible-del-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: El campeon indiscutible del SEO&lt;/h3&gt;
&lt;p&gt;WordPress ofrece control total sobre cada aspecto del SEO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;URLs personalizables&lt;/strong&gt;: Estructura de permalinks completamente configurable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadatos granulares&lt;/strong&gt;: Control total sobre title tags, meta descriptions, canonical URLs, hreflang y robots directives.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos estructurados Schema.org&lt;/strong&gt;: Plugins como Yoast y RankMath generan automáticamente JSON-LD para artículos, FAQ, HowTo, productos y mas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitemaps XML&lt;/strong&gt;: Generación automática y envio a Search Console.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velocidad optimizable&lt;/strong&gt;: Control total sobre el rendimiento del servidor, esencial para Core Web Vitals.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido programatico&lt;/strong&gt;: Capacidad de generar contenido a escala para estrategias de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wix-seo-mejorado-pero-limitado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-seo-mejorado-pero-limitado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix: SEO mejorado pero limitado&lt;/h3&gt;
&lt;p&gt;Wix ha cerrado significativamente la brecha SEO en 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;URLs limpias y personalizables (mejora reciente).&lt;/li&gt;
&lt;li&gt;Metadatos básicos configurables.&lt;/li&gt;
&lt;li&gt;Sitemaps XML automáticos.&lt;/li&gt;
&lt;li&gt;Panel SEO integrado con sugerencias.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: Sin control sobre datos estructurados avanzados, sin acceso a robots.txt completo, sin capacidad de implementar hreflang personalizado para sitios multilingues complejos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;squarespace-seo-adecuado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#squarespace-seo-adecuado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Squarespace: SEO adecuado&lt;/h3&gt;
&lt;p&gt;Squarespace cubre los básicos del SEO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;URLs limpias.&lt;/li&gt;
&lt;li&gt;Metadatos básicos.&lt;/li&gt;
&lt;li&gt;SSL integrado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;: Control SEO más básico que Wix, sin datos estructurados personalizados, sin herramientas SEO avanzadas de terceros.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;seguridad-y-cumplimiento-normativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-y-cumplimiento-normativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad y cumplimiento normativo&lt;/h2&gt;
&lt;p&gt;La seguridad es una preocupacion crítica en 2026, especialmente con el aumento de ataques impulsados por IA y las regulaciones de privacidad cada vez más estrictas.&lt;/p&gt;
&lt;h3 id=&quot;wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress&lt;/h3&gt;
&lt;p&gt;WordPress requiere una gestión activa de seguridad, pero ofrece control total:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Actualizaciones de seguridad bajo su control.&lt;/li&gt;
&lt;li&gt;Plugins de seguridad avanzados (Wordfence, Sucuri, Patchstack).&lt;/li&gt;
&lt;li&gt;Posibilidad de implementar WAF, Zero Trust, passkeys y autenticación multifactor.&lt;/li&gt;
&lt;li&gt;Control total sobre el cumplimiento del RGPD, CCPA y otras regulaciones.&lt;/li&gt;
&lt;li&gt;Una &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; profesional puede identificar y remediar vulnerabilidades.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wix-y-squarespace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-y-squarespace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix y Squarespace&lt;/h3&gt;
&lt;p&gt;Ambas plataformas SaaS gestionan la seguridad por usted:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Actualizaciones automáticas.&lt;/li&gt;
&lt;li&gt;SSL incluido.&lt;/li&gt;
&lt;li&gt;Cumplimiento básico del RGPD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitacion&lt;/strong&gt;: No tiene control sobre la configuración de seguridad avanzada ni sobre el cumplimiento normativo específico de su industria.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;comercio-electronico-woocommerce-vs-alternativas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comercio-electronico-woocommerce-vs-alternativas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comercio electronico: WooCommerce vs alternativas&lt;/h2&gt;
&lt;p&gt;Para tiendas online, la eleccion de plataforma tiene implicaciones enormes.&lt;/p&gt;
&lt;h3 id=&quot;wordpress--woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress--woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress + WooCommerce&lt;/h3&gt;
&lt;p&gt;WooCommerce es el plugin de comercio electronico más utilizado del mundo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sin limites en el número de productos, variaciones o pedidos.&lt;/li&gt;
&lt;li&gt;Pasarelas de pago ilimitadas (Stripe, PayPal, transferencia bancaria, etc.).&lt;/li&gt;
&lt;li&gt;Control total sobre el proceso de checkout, precios, impuestos y envios.&lt;/li&gt;
&lt;li&gt;Miles de extensiónes especializadas.&lt;/li&gt;
&lt;li&gt;Capacidad de escalar a cientos de miles de pedidos con la &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;optimización adecuada&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wix-stores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-stores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix Stores&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fácil de configurar para tiendas pequeñas.&lt;/li&gt;
&lt;li&gt;Pasarelas de pago limitadas pero funcionales.&lt;/li&gt;
&lt;li&gt;Gestión de inventario básica.&lt;/li&gt;
&lt;li&gt;Limitado a unos pocos miles de productos en los planes más altos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;squarespace-commerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#squarespace-commerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Squarespace Commerce&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Diseño de tienda elegante y profesional.&lt;/li&gt;
&lt;li&gt;Bueno para tiendas de nicho con catálogo reducido.&lt;/li&gt;
&lt;li&gt;Funcionalidades de suscripcion y productos digitales.&lt;/li&gt;
&lt;li&gt;Limitaciones severas para tiendas con miles de SKUs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;migración-y-portabilidad-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-y-portabilidad-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración y portabilidad de datos&lt;/h2&gt;
&lt;p&gt;Un factor frecuentemente ignorado es la portabilidad de sus datos cuando quiera cambiar de plataforma.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-libertad-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-libertad-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: Libertad total&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Exportacion completa de todo su contenido en formato XML.&lt;/li&gt;
&lt;li&gt;Acceso directo a la base de datos MySQL.&lt;/li&gt;
&lt;li&gt;Copias de respaldo completas del servidor disponibles en cualquier momento.&lt;/li&gt;
&lt;li&gt;Puede &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migrar su sitio&lt;/a&gt; a cualquier hosting o framework moderno como Astro o Next.js.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wix-atrapado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix-atrapado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix: Atrapado&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No existe exportacion completa&lt;/strong&gt;. Puede descargar parte del contenido, pero no el diseño, la estructura ni la configuración.&lt;/li&gt;
&lt;li&gt;Si decide abandonar Wix, debe reconstruir su sitio desde cero en otra plataforma.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;squarespace-parcialmente-atrapado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#squarespace-parcialmente-atrapado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Squarespace: Parcialmente atrapado&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Exportacion limitada en formato XML (solo contenido de blog y páginas básicas).&lt;/li&gt;
&lt;li&gt;El diseño, las galerias y la configuración del comercio electronico no se exportan.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;integraciones-empresariales-y-apis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integraciones-empresariales-y-apis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integraciones empresariales y APIs&lt;/h2&gt;
&lt;p&gt;Para negocios que necesitan conectar su sitio web con CRM, ERP, herramientas de automatizacion de marketing o sistemas internos, las APIs son fundamentales.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;REST API completa integrada desde WordPress 4.7.&lt;/li&gt;
&lt;li&gt;WPGraphQL para consultas más eficientes.&lt;/li&gt;
&lt;li&gt;Webhooks personalizados para integraciones en tiempo real.&lt;/li&gt;
&lt;li&gt;Compatible con Zapier, Make, n8n y cualquier plataforma de integración.&lt;/li&gt;
&lt;li&gt;Puede funcionar como backend &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;API-first&lt;/a&gt; para aplicaciones móviles y frontends modernos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wix&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wix&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Wix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Velo (JavaScript limitado) para lógica personalizada.&lt;/li&gt;
&lt;li&gt;Integraciones básicas con servicios populares a través del App Market.&lt;/li&gt;
&lt;li&gt;Sin REST API completa para integraciones externas avanzadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;squarespace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#squarespace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Squarespace&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Integraciones nativas limitadas (Mailchimp, Google Analytics, Zapier básico).&lt;/li&gt;
&lt;li&gt;Sin API pública para integraciones personalizadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;el-veredicto-cual-elegir-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-veredicto-cual-elegir-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El veredicto: Cual elegir en 2026&lt;/h2&gt;
&lt;h3 id=&quot;elija-wordpress-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-wordpress-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija WordPress si&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Necesita el maximo control y flexibilidad sobre cada aspecto de su presencia online.&lt;/li&gt;
&lt;li&gt;El SEO y el contenido son pilares fundamentales de su estrategia digital.&lt;/li&gt;
&lt;li&gt;Planea escalar significativamente en tráfico, contenido o funcionalidad.&lt;/li&gt;
&lt;li&gt;Se siente comodo con la tecnología o esta dispuesto a invertir en un &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress profesional&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Necesita cumplir con regulaciones específicas (RGPD avanzado, HIPAA, PCI-DSS).&lt;/li&gt;
&lt;li&gt;Quiere mantener la propiedad y portabilidad total de sus datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-wix-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-wix-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija Wix si&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Necesita un sitio en funcionamiento en horas, no en dias.&lt;/li&gt;
&lt;li&gt;No tiene habilidades técnicas y no desea aprenderlas.&lt;/li&gt;
&lt;li&gt;Su sitio es simple: página informativa, pequeña tienda, portfolio básico.&lt;/li&gt;
&lt;li&gt;No le preocupa el bloqueo de proveedor a largo plazo.&lt;/li&gt;
&lt;li&gt;Su presupuesto es limitado y prefiere un coste mensual predecible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-squarespace-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-squarespace-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija Squarespace si&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;El diseño y la estetica son lo más importante para su marca.&lt;/li&gt;
&lt;li&gt;Es un profesional creativo que necesita un portfolio impresionante.&lt;/li&gt;
&lt;li&gt;Quiere una solución todo-en-uno sin la complejidad de gestionar plugins.&lt;/li&gt;
&lt;li&gt;Su negocio es local y no necesita funcionalidades complejas.&lt;/li&gt;
&lt;li&gt;Valora la consistencia visual sobre la flexibilidad técnica.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;casos-de-uso-reales-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-reales-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso reales en 2026&lt;/h2&gt;
&lt;h3 id=&quot;startup-tecnológica-con-blog&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#startup-tecnológica-con-blog&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Startup tecnológica con blog&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion: WordPress&lt;/strong&gt;. La capacidad de crear contenido programatico, optimizar para SEO y escalar el blog a miles de artículos hace de WordPress la única opción viable. La posibilidad de usar WordPress como headless CMS con un frontend Astro o Next.js proporciona la velocidad y la experiencia de usuario moderna que las startups necesitan.&lt;/p&gt;
&lt;h3 id=&quot;fotografo-profesional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fotografo-profesional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fotografo profesional&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion: Squarespace&lt;/strong&gt;. Las galerias integradas, las plantillas visualmente impactantes y la simplicidad de gestión hacen de Squarespace la opción ideal para portfolios fotograficos.&lt;/p&gt;
&lt;h3 id=&quot;panaderia-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#panaderia-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Panaderia local&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion: Wix&lt;/strong&gt;. Una página sencilla con menú, horarios, ubicacion y formulario de contacto se configura en minutos con Wix. No necesita la complejidad de WordPress para un caso de uso tan simple.&lt;/p&gt;
&lt;h3 id=&quot;empresa-de-comercio-electronico-con-10000-productos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#empresa-de-comercio-electronico-con-10000-productos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Empresa de comercio electronico con 10.000+ productos&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion: WordPress + WooCommerce&lt;/strong&gt;. Ningun constructor SaaS puede manejar catálogos extensos con la flexibilidad, rendimiento y control que ofrece WooCommerce correctamente optimizado.&lt;/p&gt;
&lt;h3 id=&quot;agencia-de-marketing-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agencia-de-marketing-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agencia de marketing digital&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion: WordPress&lt;/strong&gt;. La capacidad de crear sitios para clientes, gestionar multiples propiedades con WordPress Multisite, implementar estrategias SEO avanzadas y ofrecer soluciones personalizadas hace de WordPress la base operativa ideal para agencias.&lt;/p&gt;
&lt;h2 id=&quot;el-futuro-de-las-plataformas-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-de-las-plataformas-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro de las plataformas web&lt;/h2&gt;
&lt;p&gt;En 2026, la tendencia es clara: &lt;strong&gt;la IA esta transformando todas las plataformas&lt;/strong&gt;, pero de maneras diferentes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; integra IA a nivel de nucleo con la Abilities API, permitiendo generación de contenido, optimización automática y flujos de trabajo inteligentes, mientras mantiene su filosofia de código abierto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wix&lt;/strong&gt; apuesta fuertemente por la IA generativa para crear sitios completos automáticamente, priorizando la velocidad de creación sobre la personalización profunda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Squarespace&lt;/strong&gt; integra IA para sugerencias de diseño y optimización de contenido, manteniendo su enfoque visual-first.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La diferencia fundamental permanece: con WordPress, usted controla la IA y sus datos. Con Wix y Squarespace, la IA le controla a usted dentro de su ecosistema cerrado.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;En 2026, las tres plataformas son maduras y capaces. La eleccion es sobre &lt;strong&gt;adecuacion&lt;/strong&gt;, no capacidad. Para crecimiento empresarial a largo plazo y estrategias impulsadas por contenido, &lt;strong&gt;WordPress&lt;/strong&gt; sigue siendo inigualable. Para velocidad y simplicidad, &lt;strong&gt;Wix&lt;/strong&gt; gana. Para impacto visual con esfuerzo minimo, &lt;strong&gt;Squarespace&lt;/strong&gt; brilla.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para tomar la decision correcta o migrar a WordPress, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede guíarle en cada paso del proceso. Ofrecemos servicios completos de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; y &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño web&lt;/a&gt; para empresas que buscan maximizar su presencia digital.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Servicios de desarrollo a medida&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Mejore sus Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Comercio electronico escalable&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Proteja su inversión digital&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a frameworks modernos&lt;/a&gt; - Astro, Next.js y mas&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category domain="tag">comparison</category><category domain="tag">wix</category><category domain="tag">squarespace</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-security-why-updates-and-security-measures-are-crucial.jpg" type="image/jpeg"/></item><item><title>El mejor CMS para SEO en 2026: Un análisis profundo de más de 2000 palabras</title><link>https://wppoland.com/es/best-cms-for-seo-2026-comprehensive-guide/</link><guid isPermaLink="true">https://wppoland.com/es/best-cms-for-seo-2026-comprehensive-guide/</guid><description>Que CMS dominara los resultados de búsqueda de Google en 2026? Esta guía completa compara WordPress, Contentful y más en SEO técnico y preparacion para IA.</description><pubDate>Sat, 14 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, el SEO ya no consiste en “engacar” a un algoritmo. Se trata de &lt;strong&gt;infraestructura&lt;/strong&gt;. Los motores de búsqueda impulsados por IA de Google (y los Modelos de Lenguaje Grande) buscan sitios que sean técnicamente perfectos, ultrarápidos y demostrablemente autorizados.&lt;/p&gt;
&lt;p&gt;Su Sistema de Gestión de Contenidos (CMS) es la base de esta infraestructura. Elegir el equivocado es como construir un rascacielos sobre arena. En &lt;strong&gt;WPPoland&lt;/strong&gt;, hemos visto como la eleccion del CMS afecta directamente los resultados economicos de cientos de empresas.&lt;/p&gt;
&lt;p&gt;En este exhaustivo análisis de 2026, clasificamos las plataformas CMS más populares del mundo según su potencial SEO.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-wordpress-el-campeon-indiscutible-del-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-wordpress-el-campeon-indiscutible-del-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. WordPress: El campeon indiscutible del SEO&lt;/h2&gt;
&lt;p&gt;Incluso en 2026, WordPress sigue siendo el rey del SEO.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control granular&lt;/strong&gt;: Cada aspecto de una página, desde la estructura de los permalinks hasta el &lt;code&gt;robots.txt&lt;/code&gt;, es accesible y configurable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El ecosistema Rank Math / Yoast&lt;/strong&gt;: Estas herramientas han evolucionado hasta convertirse en suites SEO impulsadas por IA que ayudan a optimizar las señales E-E-A-T de forma automática.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura nativa de bloques&lt;/strong&gt;: El editor Gutenberg genera HTML semántico y limpio que los motores de búsqueda adoran.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto de WPPoland&lt;/strong&gt;: Cuando se optimiza para velocidad (usando nuestro stack personalizado), WordPress es el motor SEO de mayor rendimiento que existe.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La superioridad de WordPress en SEO no es accidental. Es el resultado de dos decadas de evolucion impulsada por una comunidad que comprende profundamente como funcionan los motores de búsqueda. Cada actualización del nucleo de WordPress incorpora mejoras en la generación de HTML semántico, el manejo de metadatos y la arquitectura de URLs.&lt;/p&gt;
&lt;p&gt;El ecosistema de plugins SEO de WordPress es incomparable. Rank Math, por ejemplo, no solo permite optimizar títulos y meta descripciones, sino que genera automáticamente datos estructurados JSON-LD para artículos, productos, recetas, eventos y docenas de otros tipos de contenido. Esta automatizacion significa que incluso un equipo de marketing sin conocimientos técnicos profundos puede publicar contenido perfectamente optimizado para motores de búsqueda e inteligencia artificial.&lt;/p&gt;
&lt;p&gt;Además, WordPress ofrece un control sobre la arquitectura del sitio que ningun otro CMS puede igualar. La capacidad de crear taxonomías personalizadas, tipos de contenido a medida y relaciones entre contenidos permite construir la estructura de “Autoridad Tematica” que Google valora cada vez más en 2026.&lt;/p&gt;
&lt;h2 id=&quot;2-contentful-y-sanity-las-potencias-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-contentful-y-sanity-las-potencias-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Contentful y Sanity (las potencias headless)&lt;/h2&gt;
&lt;p&gt;Las plataformas CMS Headless son la “Formula 1” de la web.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortalezas SEO&lt;/strong&gt;: Velocidad extrema. Como el frontend esta desacoplado, se pueden lograr puntuaciones perfectas de 100/100 en Lighthouse, lo cual es una señal de clasificación masiva en 2026.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El inconveniente&lt;/strong&gt;: Tienen &lt;strong&gt;cero&lt;/strong&gt; funciones SEO listas para usar. Hay que construir el sistema de meta tags, el generador de sitemap y el mapeador de schema desde cero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ideal para&lt;/strong&gt;: Empresas con un equipo SEO dedicado y un equipo de desarrollo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El modelo headless ofrece una ventaja técnica innegable en terminos de rendimiento. Al separar completamente el backend del frontend, los desarrolladores pueden utilizar frameworks como Astro 5 o Next.js para construir sitios que cargan en milisegundos. Sin embargo, esta ventaja técnica viene acompanada de una complejidad SEO significativa.&lt;/p&gt;
&lt;p&gt;En un CMS headless, no existe un plugin de Rank Math que genere automáticamente los datos estructurados. No hay un generador automático de sitemaps XML. No hay una interfaz grafica para gestionar redirecciones 301. Todo esto debe construirse manualmente, lo que implica un coste de desarrollo inicial significativo y un mantenimiento continuo que requiere conocimientos tanto de desarrollo como de SEO.&lt;/p&gt;
&lt;p&gt;Para las empresas que cuentan con los recursos necesarios, la combinación de un CMS headless con un equipo técnico competente puede producir resultados SEO excepcionales. Pero para la gran mayoria de las organizaciónes, WordPress ofrece un camino mucho más directo y economico hacia el éxito en los motores de búsqueda.&lt;/p&gt;
&lt;h2 id=&quot;3-webflow-el-lider-visual-del-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-webflow-el-lider-visual-del-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Webflow (el lider visual del SEO)&lt;/h2&gt;
&lt;p&gt;Webflow sigue siendo el mejor sistema “cerrado” para SEO.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortalezas SEO&lt;/strong&gt;: Campos nativos para todos los meta tags principales, gestión de redirecciones 301 que realmente funciona y generación de código limpio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO de interacción&lt;/strong&gt;: La fortaleza de Webflow en animaciones puede mejorar el &lt;strong&gt;tiempo de permanencia&lt;/strong&gt;, que sigue siendo una señal de clasificación de segundo orden.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitacion&lt;/strong&gt;: A medida que su sitio crece a más de 1000 páginas, la gestión del SEO técnico en Webflow se vuelve complicada en comparación con el enfoque basado en base de datos de WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Webflow ha conquistado un nicho importante en el mercado de CMS para SEO. Su enfoque visual permite a los disenadores crear sitios web hermosos sin escribir código, y el HTML generado es notablemente limpio en comparación con otros constructores visuales como Wix o Squarespace. Sin embargo, la plataforma tiene limitaciones inherentes que se hacen evidentes a medida que el sitio crece.&lt;/p&gt;
&lt;p&gt;La gestión de contenido a gran escala es donde Webflow muestra sus debilidades. Para un sitio con cientos de artículos de blog, decenas de categorías y miles de productos, las herramientas de gestión masiva de WordPress (buscar y reemplazar, edicion en lote, importacion/exportacion) son infinitamente superiores. Además, Webflow carece de un sistema de tipos de contenido personalizado tan robusto como el de WordPress, lo que limita la capacidad de crear arquitecturas de contenido complejas.&lt;/p&gt;
&lt;h2 id=&quot;4-hubspot-cms-el-seo-basado-en-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-hubspot-cms-el-seo-basado-en-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. HubSpot CMS (el SEO basado en datos)&lt;/h2&gt;
&lt;p&gt;Para B2B SaaS, HubSpot es un contendiente fuerte.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortalezas SEO&lt;/strong&gt;: Herramientas de estrategia de contenido integradas. Ayuda a construir “Topic Clusters” y “Pillar Pages” de forma natural.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitacion&lt;/strong&gt;: Alto coste y control limitado sobre optimizaciones del lado del servidor (cabeceras, cache especializado).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HubSpot ha integrado inteligentemente las mejores prácticas de SEO directamente en su flujo de trabajo de creación de contenido. La herramienta de estrategia de contenido guía a los usuarios para crear clusters tematicos que fortalecen la autoridad del sitio en temas específicos. Sin embargo, esta misma integración crea una dependencia que puede ser problematica.&lt;/p&gt;
&lt;p&gt;Cuando HubSpot decide cambiar su enfoque de SEO (como lo ha hecho varias veces en los últimos años), todos los usuarios se ven obligados a adaptarse. Con WordPress, el propietario del sitio tiene el control total y puede adoptar nuevas estrategias SEO de forma inmediata a través de plugins o desarrollo personalizado.&lt;/p&gt;
&lt;h2 id=&quot;5-ghost-la-maquina-seo-ligera&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-ghost-la-maquina-seo-ligera&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Ghost (la maquina SEO ligera)&lt;/h2&gt;
&lt;p&gt;Para editores y marcas centradas en newsletters.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortalezas SEO&lt;/strong&gt;: Extremadamente rápido por defecto. Tiene soporte integrado para AMP (aunque menos relevante en 2026), Schema y metadatos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitacion&lt;/strong&gt;: Carece de la flexibilidad para arquitecturas de sitio complejas (por ejemplo, comercio electronico o directorios de generación de leads).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ghost es una opción excelente para proyectos editoriales puros donde la velocidad y la simplicidad son prioritarias. Su arquitectura minimalista se traduce en tiempos de carga extremadamente rápidos sin necesidad de optimización adicional. Sin embargo, su limitado sistema de tipos de contenido y la ausencia de un ecosistema de plugins comparable al de WordPress restringen significativamente sus posibilidades de personalización SEO.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;matriz-de-seo-técnico-edicion-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#matriz-de-seo-técnico-edicion-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Matriz de SEO técnico: Edicion 2026&lt;/h2&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Headless (Ghost/Strapi)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Webflow&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Shopify&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Schema/JSON-LD&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo y automatizado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual / API&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Campos integrados&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitado / Apps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Velocidad móvil&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Infinita (si se optimiza)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100/100 (por defecto)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Variable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Control de sitemap&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Automatizado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Automatizado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Soporte E-E-A-T&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;CPTs de autor nativos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Construccion personalizada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitado&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;los-3-pilares-de-la-seleccion-de-cms-para-seo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-3-pilares-de-la-seleccion-de-cms-para-seo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los 3 pilares de la seleccion de CMS para SEO en 2026&lt;/h2&gt;
&lt;h3 id=&quot;pilar-1-core-web-vitals-el-suelo-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pilar-1-core-web-vitals-el-suelo-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pilar 1: Core Web Vitals (el suelo de rendimiento)&lt;/h3&gt;
&lt;p&gt;La metrica &lt;strong&gt;Interaction to Next Paint (INP)&lt;/strong&gt; de Google es el nuevo LCP.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Su CMS no debe bloquear el hilo principal con JavaScript pesado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; gana aquí porque puede desactivar todo el “bloat” mientras mantiene la potente interfaz de administración.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los Core Web Vitals se han consolidado en 2026 como el factor de rendimiento más importante para el posicionamiento. Google ha sido cada vez más explicito en comunicar que los sitios con buenas metricas de CWV reciben un impulso de clasificación significativo frente a competidores con metricas deficientes. Esto ha nivelado el campo de juego, beneficiando a las plataformas que pueden ofrecer rendimiento superior de forma consistente.&lt;/p&gt;
&lt;p&gt;WordPress, a diferencia de muchos CMS propietarios, permite un control total sobre la carga de recursos. Los desarrolladores pueden desactivar selectivamente scripts innecesarios, implementar estrategias de carga diferida personalizadas y optimizar el camino crítico de renderizado de formás que simplemente no son posibles en plataformas cerradas.&lt;/p&gt;
&lt;h3 id=&quot;pilar-2-e-e-a-t-y-búsqueda-semántica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pilar-2-e-e-a-t-y-búsqueda-semántica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pilar 2: E-E-A-T y búsqueda semántica&lt;/h3&gt;
&lt;p&gt;Los motores de búsqueda entienden &lt;strong&gt;entidades&lt;/strong&gt;, no solo palabras.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Su CMS debe permitir perfiles de “Autor” complejos que enlacen a LinkedIn, PubMed u otras señales de autoridad.&lt;/li&gt;
&lt;li&gt;WordPress maneja esto de forma nativa a través de su arquitectura de base de datos relacional.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La importancia de E-E-A-T (Experiencia, Pericia, Autoridad, Confiabilidad) ha crecido exponencialmente en 2026. Google utiliza señales de E-E-A-T no solo para evaluar la calidad del contenido, sino también para determinar que fuentes merecen aparecer en los resultados de búsqueda generados por IA (como los AI Overviews).&lt;/p&gt;
&lt;p&gt;WordPress permite crear perfiles de autor ricos que incluyen biografia, credenciales, publicaciónes externas, perfiles sociales y otros indicadores de autoridad. Estos perfiles se vinculan automáticamente a cada artículo publicado, creando una red de señales de autoridad que los motores de búsqueda pueden interpretar fácilmente.&lt;/p&gt;
&lt;h3 id=&quot;pilar-3-preparacion-para-ia-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pilar-3-preparacion-para-ia-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pilar 3: Preparacion para IA (LLMO)&lt;/h3&gt;
&lt;p&gt;Como se optimiza para ChatGPT/Perplexity?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Necesita un CMS que genere &lt;code&gt;json-ld&lt;/code&gt; perfectamente estructurado.&lt;/li&gt;
&lt;li&gt;Necesita un CMS que permita metadatos semánticos “ocultos” que los rastreadores de IA utilizan para resumir su contenido con precision.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La optimización para modelos de lenguaje grande (LLMO) es el frente más nuevo del SEO en 2026. A medida que más usuarios obtienen respuestas directamente de ChatGPT, Perplexity, Google Gemini y otros asistentes de IA, la capacidad de que su contenido sea citado por estos sistemas se convierte en un factor crítico de visibilidad.&lt;/p&gt;
&lt;p&gt;WordPress, con plugins como Rank Math y soluciones personalizadas, permite implementar los datos estructurados granulares que los modelos de lenguaje necesitan para entender, contextualizar y citar su contenido. Esto incluye schemás de Article, FAQ, HowTo, Organization y Person que proporcionan a los sistemas de IA toda la información necesaria para generar respuestas precisas que citen su sitio web como fuente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-que-wordpress-sigue-ganando-la-ventaja-del-código-abierto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-wordpress-sigue-ganando-la-ventaja-del-código-abierto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que WordPress sigue ganando (la ventaja del “código abierto”)&lt;/h2&gt;
&lt;p&gt;La mayor ventaja de WordPress es que &lt;strong&gt;nunca se queda estancado&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si manana se anuncia una nueva señal SEO (por ejemplo, “Token de Verificación de Autoria Humana”), un plugin de WordPress o un simple fragmento de código estará disponible en 24 horas.&lt;/li&gt;
&lt;li&gt;Si esta en una plataforma propietaria (Wix/Squarespace/HubSpot), esta a merced de la hoja de ruta de desarrollo de esa plataforma.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La velocidad de adaptacion del ecosistema WordPress es su ventaja competitiva más poderosa en el ambito del SEO. Cuando Google introdujo los Core Web Vitals como factor de clasificación, el ecosistema WordPress respondio en semanas con plugins optimizados, temas rediseEados y guías de implementación. Cuando el schema de FAQ comenzo a generar rich snippets, los plugins SEO de WordPress lo soportaron casí de forma inmediata.&lt;/p&gt;
&lt;p&gt;Esta capacidad de respuesta rápida es inherente a la naturaleza del código abierto. No depende de un único equipo de producto que priorice las funciones según su vision comercial. Miles de desarrolladores independientes, agencias SEO y contribuidores de la comunidad trabajan simultaneamente para adaptar WordPress a cada nuevo desarrollo en el mundo del SEO.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estrategia-seo-2026-el-camino-graduado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-seo-2026-el-camino-graduado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia SEO 2026: El camino “graduado”&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, recomendamos este camino para nuestros clientes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;El MVP (0-10 páginas)&lt;/strong&gt;: Empiece con cualquier cosa (Framer, Webflow).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La fase de crecimiento (10-500 páginas)&lt;/strong&gt;: Migre a &lt;strong&gt;WordPress Optimizado&lt;/strong&gt;. Aqui es donde construye su “Foso SEO.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La fase empresarial (500+ páginas)&lt;/strong&gt;: Pase a una configuración de &lt;strong&gt;WordPress Headless&lt;/strong&gt; (Astro 5 + WordPress API) para escalabilidad global manteniendo la mejor interfaz de gestión SEO del mundo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Este enfoque progresivo permite a las organizaciónes invertir de forma proporcional a su crecimiento. No tiene sentido invertir en una arquitectura WordPress empresarial compleja cuando se tienen 5 páginas. Pero cuando el sitio crece y el SEO se convierte en un canal de adquisicion crítico, la migración a WordPress optimizado marca un punto de inflexion en la capacidad de competir en los resultados de búsqueda.&lt;/p&gt;
&lt;p&gt;La fase de WordPress Headless con Astro 5 representa la frontera de lo que es posible en rendimiento SEO en 2026. Esta arquitectura combina la potencia editorial de WordPress con la velocidad de un frontend estatico, resultando en sitios que cargan en milisegundos mientras mantienen todas las capacidades de gestión de contenido y SEO que WordPress ofrece.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;plataforma-cms-más-amigable-con-seo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plataforma-cms-más-amigable-con-seo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plataforma CMS más amigable con SEO en 2026&lt;/h2&gt;
&lt;p&gt;Si estas evaluando plataformas CMS puramente por su capacidad SEO, la clasificación es clara:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; — control total sobre meta tags, schema, sitemaps, robots.txt, hreflang, estructura de URLs y Core Web Vitals. El ecosistema de plugins (Rank Math, Yoast, TSF) añade capas de automatización sin sacrificar control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webflow&lt;/strong&gt; — HTML semántico limpio, imágenes responsive nativas y generación de sitemap integrada. Fuerte para sitios de marketing visual pero limitado en personalización de datos estructurados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ghost&lt;/strong&gt; — excelente rendimiento de serie, URLs limpias y edicion nativa de metadatos. Limitado por la falta de un ecosistema de plugins para tipos de schema avanzados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CMS Headless (Contentful, Sanity, Strapi)&lt;/strong&gt; — el SEO depende completamente del framework frontend. Puede lograr SEO perfecto con Astro o Next.js, pero requiere esfuerzo de desarrollo para cada meta tag y tipo de schema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wix / Squarespace&lt;/strong&gt; — mejorados pero todavia limitados. Sin tipos de schema personalizados, control de URL restringido, sin hreflang (Squarespace) y Core Web Vitals dependientes de la plataforma.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El mejor CMS para SEO es el que te da control total sobre cada factor de clasificación sin requerir un desarrollador para cada cambio. WordPress sigue siendo la única plataforma que equilibra ambos.&lt;/p&gt;
&lt;h2 id=&quot;conclusion-seleccionar-para-el-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-seleccionar-para-el-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Seleccionar para el éxito&lt;/h2&gt;
&lt;p&gt;Mas información sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.
En 2026, su CMS es una decision estrategica de negocio. Si quiere ser dueno de su audiencia y dominar el panorama de búsqueda, necesita un sistema que no ofrezca limites. &lt;strong&gt;WordPress&lt;/strong&gt; sigue siendo ese sistema, proporcionando la combinación perfecta de excelencia técnica y autonomia de marketing.&lt;/p&gt;
&lt;p&gt;La eleccion del CMS no es simplemente una decision tecnológica; es una decision que determina la capacidad de su organización para competir en el panorama digital durante los proximos años. Un CMS que limita su capacidad de optimización SEO es un CMS que limita su crecimiento. WordPress, con su ecosistema abierto, su comunidad global y su capacidad de adaptacion incomparable, elimina esos limites y pone el control directamente en sus manos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esta listo para convertir su sitio web en una potencia de los motores de búsqueda? Contacte a WPPoland hoy.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">best-cms-for-seo</category><category domain="tag">technical-seo-2026</category><category domain="tag">wordpress-seo</category><category domain="tag">headless-cms-seo</category><category domain="tag">core-web-vitals</category><enclosure url="https://wppoland.com/images/og/technology-conference-networking-break.jpg" type="image/jpeg"/></item><item><title>Hosting WordPress 2026: Cloud vs. Edge vs. Tradicional comparados</title><link>https://wppoland.com/es/wordpress-hosting-2026-cloud-vs-edge-vs-traditional-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-hosting-2026-cloud-vs-edge-vs-traditional-guide/</guid><description>Elegir la arquitectura de servidor correcta en 2026 es una decision de millones. Esta guía compara Cloud, Edge y hosting tradicional para WordPress empresarial.</description><pubDate>Thu, 12 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Elegir la arquitectura de hosting correcta para WordPress en 2026 no es solo una decision técnica: es una decision estrategica que afecta al rendimiento, la seguridad, la escalabilidad y el coste total de propiedad de su presencia digital durante años. El panorama del hosting ha evolucionado dramaticamente, con tres paradigmás principales compitiendo por la supremacia.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía compara en profundidad las tres arquitecturas de hosting dominantes para WordPress en 2026, ayudandole a tomar la decision correcta para su caso de uso específico.&lt;/p&gt;
&lt;h2 id=&quot;1-hosting-gestionado-tradicional-la-opción-segura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-hosting-gestionado-tradicional-la-opción-segura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Hosting gestionado tradicional: La opción segura&lt;/h2&gt;
&lt;p&gt;El hosting gestionado tradicional (Kinsta, WP Engine, Cloudways, SiteGround) sigue siendo la opción más popular para sitios WordPress en 2026. Ha evolucionado significativamente para incluir contenedorizacion, escalado automático y CDN integrado.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona en 2026&lt;/h3&gt;
&lt;p&gt;Su sitio WordPress se ejecuta en un contenedor aislado dentro de un centro de datos. El proveedor gestiona actualizaciones del servidor, parches de seguridad, copias de respaldo y monitoreo. Un CDN distribuye contenido estatico globalmente, pero el PHP sigue ejecutandose en una ubicacion fisica específica.&lt;/p&gt;
&lt;h3 id=&quot;ventajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simplicidad&lt;/strong&gt;: La opción más fácil de gestionar. Paneles intuitivos, soporte especializado en WordPress, actualizaciones automáticas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte especializado&lt;/strong&gt;: Equipos de soporte que entienden WordPress profundamente y pueden diagnosticar problemas específicos de la plataforma.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Staging environments&lt;/strong&gt;: Entornos de prueba con un clic para probar actualizaciones antes de aplicarlas en producción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups automáticos&lt;/strong&gt;: Copias de respaldo diarias con restauracion en un clic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSL y seguridad&lt;/strong&gt;: Certificados SSL gratuitos, WAF básico y escaneo de malware integrados.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desventajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ubicacion fija del origen&lt;/strong&gt;: Si su servidor esta en Europa, los usuarios en Asia experimentan latencia adicional en solicitudes que no estan cacheadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalado limitado&lt;/strong&gt;: El escalado vertical tiene limites fisicos. Picos de tráfico extremos pueden superar la capacidad del servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste creciente&lt;/strong&gt;: A medida que necesita más recursos, los costes escalan rápidamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;proveedores-destacados-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proveedores-destacados-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proveedores destacados en 2026&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Proveedor&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Precio desde&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica destacada&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejor para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Kinsta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;35 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Infraestructura Google Cloud&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sitios de alto tráfico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;WP Engine&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;25 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;DevKit y Faust.js headless&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Desarrollo profesional&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Cloudways&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;14 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Multiples proveedores cloud&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Flexibilidad de infraestructura&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;SiteGround&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;15 EUR/mes&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Soporte excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pequeñas empresas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;rendimiento-tipico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-tipico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento tipico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TTFB (mismo continente)&lt;/strong&gt;: 100-300ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTFB (continente diferente)&lt;/strong&gt;: 300-800ms (mitigado parcialmente por CDN)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uptime&lt;/strong&gt;: 99.9-99.95%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalado&lt;/strong&gt;: Vertical (minutos), Horizontal (manual o limitado)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-hosting-edge-el-futuro-distribuido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-hosting-edge-el-futuro-distribuido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Hosting Edge: El futuro distribuido&lt;/h2&gt;
&lt;p&gt;El hosting Edge representa la evolucion más radical del hosting WordPress en 2026. En lugar de ejecutar WordPress en un único centro de datos, el contenido (y en algunos casos el PHP) se ejecuta en cientos de ubicaciones edge alrededor del mundo.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cache Edge de página completa&lt;/strong&gt;: Cada página HTML se cachea en más de 300 ubicaciones globales (Cloudflare, Bunny.net, Fastly).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workers en el Edge&lt;/strong&gt;: Lógica de personalización, redirecciones y transformaciones se ejecutan en el edge, sin tocar el servidor origen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servidor origen minimalista&lt;/strong&gt;: El servidor WordPress original solo se consulta cuando hay un cache miss o cuando se actualiza contenido.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;cloudflare-workers--wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-workers--wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cloudflare Workers + WordPress&lt;/h3&gt;
&lt;p&gt;Cloudflare Workers permite ejecutar JavaScript (y pronto PHP via WASM) directamente en el edge:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Worker que sirve WordPress desde el edge&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; caches.default;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    let&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cache.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;response) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(request.url, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        cf: { cacheTtl: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, cacheEverything: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (response.ok) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; clonedResponse&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; cache.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(request, clonedResponse);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;bunnynet-edge-storage&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bunnynet-edge-storage&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bunny.net Edge Storage&lt;/h3&gt;
&lt;p&gt;Bunny.net ofrece almacenamiento persistente en el edge, permitiendo que incluso activos dinámicos se sirvan desde la ubicacion más cercana al usuario:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Replicacion automática&lt;/strong&gt;: Los archivos se replican automáticamente a las regiones con demanda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull zones inteligentes&lt;/strong&gt;: El contenido migra a los edges con más solicitudes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perma-Cache&lt;/strong&gt;: Contenido crítico permanece cacheado indefinidamente, incluso si el origen no esta disponible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ventajas-del-hosting-edge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-del-hosting-edge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas del hosting Edge&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TTFB global sub-50ms&lt;/strong&gt;: Usuarios en cualquier parte del mundo obtienen respuestas ultra-rápidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disponibilidad extrema&lt;/strong&gt;: Si un centro de datos falla, el edge cercano sigue sirviendo contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalado automático infinito&lt;/strong&gt;: Los picos de tráfico se distribuyen automáticamente por la red global.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduccion de carga del origen&lt;/strong&gt;: El servidor origen maneja una fraccion minima del tráfico.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desventajas-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenido dinámico limitado&lt;/strong&gt;: Las páginas que requieren personalización en tiempo real (carrito, dashboard de usuario) no se benefician tanto del edge caching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complejidad de invalidacion&lt;/strong&gt;: Asegurar que el cache se actualiza correctamente cuando se pública nuevo contenido requiere estrategias sofisticadas de purga.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencia del proveedor CDN&lt;/strong&gt;: Si Cloudflare o Bunny.net tienen un problema global (raro pero posible), todo su tráfico se ve afectado.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;rendimiento-tipico-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-tipico-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento tipico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TTFB (global)&lt;/strong&gt;: 20-50ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTFB (cache miss)&lt;/strong&gt;: 200-500ms (vuelta al origen)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uptime&lt;/strong&gt;: alta disponibilidad (objetivo SLA del proveedor)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalado&lt;/strong&gt;: Automático e instantaneo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-hosting-cloud-native-kubernetes-la-opción-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-hosting-cloud-native-kubernetes-la-opción-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Hosting Cloud-Native (Kubernetes): La opción empresarial&lt;/h2&gt;
&lt;p&gt;Para sitios WordPress que necesitan 99.999% de uptime, escalado horizontal ilimitado y control total sobre la infraestructura, Kubernetes es el estándar en 2026.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona&lt;/h3&gt;
&lt;p&gt;WordPress se despliega como un conjunto de contenedores Docker orquestados por Kubernetes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pods de PHP&lt;/strong&gt;: Multiples instancias de PHP-FPM que se escalan automáticamente según la demanda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base de datos&lt;/strong&gt;: MySQL/MariaDB con replicacion master-slave o cluster Galera.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache&lt;/strong&gt;: Redis en modo cluster para object caching distribuido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN&lt;/strong&gt;: Cloudflare o Bunny.net para entrega de contenido estatico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento&lt;/strong&gt;: Persistent Volumes para archivos subidos, compartidos entre pods.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;arquitectura-kubernetes-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-kubernetes-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura Kubernetes para WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Deployment WordPress simplificado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;apiVersion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;apps/v1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;kind&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;spec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  replicas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  selector&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    matchLabels&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      app&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  template&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    spec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      containers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress:6.7-php8.3-fpm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        resources&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          requests&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;            cpu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;500m&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;            memory&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;512Mi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          limits&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;            cpu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;2000m&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;            memory&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;2Gi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        env&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;WORDPRESS_DB_HOST&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          value&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;mysql-primary.default.svc.cluster.local&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;apiVersion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;autoscaling/v2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;kind&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;HorizontalPodAutoscaler&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress-hpa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;spec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  scaleTargetRef&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    apiVersion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;apps/v1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    kind&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  minReplicas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  maxReplicas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  metrics&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Resource&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    resource&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;cpu&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;      target&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Utilization&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        averageUtilization&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;70&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ventajas-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escalado horizontal ilimitado&lt;/strong&gt;: De 3 a 50+ pods automáticamente según demanda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alta disponibilidad&lt;/strong&gt;: Si un pod falla, Kubernetes lo reemplaza automáticamente en segundos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue sin downtime&lt;/strong&gt;: Rolling updates permiten actualizar sin interrumpir el servicio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-cloud&lt;/strong&gt;: Puede ejecutarse en AWS, Google Cloud, Azure o cualquier proveedor Kubernetes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desventajas-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Complejidad&lt;/strong&gt;: Requiere experiencia significativa en DevOps/SRE.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste base alto&lt;/strong&gt;: La infraestructura minima es más cara que hosting gestionado (a partir de 200-500 EUR/mes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overhead operativo&lt;/strong&gt;: Monitoreo, logs, alertas, actualizaciones de Kubernetes requieren atención continua.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;rendimiento-tipico-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-tipico-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento tipico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TTFB&lt;/strong&gt;: Depende de la ubicacion (similar al gestionado pero con escalado superior)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uptime&lt;/strong&gt;: 99.999% (cinco nueves)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalado&lt;/strong&gt;: Horizontal automático (segundos)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-wordpress-serverless-la-frontera&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-wordpress-serverless-la-frontera&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. WordPress Serverless: La frontera&lt;/h2&gt;
&lt;p&gt;En 2026, WordPress “serverless” es una realidad emergente donde PHP se ejecuta bajo demanda en el edge, sin servidor dedicado.&lt;/p&gt;
&lt;h3 id=&quot;wp-cloud-automattic&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wp-cloud-automattic&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WP Cloud (Automattic)&lt;/h3&gt;
&lt;p&gt;La propuesta de Automattic para WordPress serverless incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PHP ejecutandose en Workers (WASM)&lt;/li&gt;
&lt;li&gt;Base de datos SQLite en el edge&lt;/li&gt;
&lt;li&gt;Sin servidor persistente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;limitaciones-actuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones-actuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones actuales&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Plugins con dependencias de servidor no funcionan&lt;/li&gt;
&lt;li&gt;Rendimiento inconsistente en cargas pesadas&lt;/li&gt;
&lt;li&gt;Ecosistema de plugins limitado&lt;/li&gt;
&lt;li&gt;No listo para producción empresarial&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-guia-de-decision-que-hosting-elegir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-guia-de-decision-que-hosting-elegir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Guia de decision: Que hosting elegir&lt;/h2&gt;
&lt;h3 id=&quot;elija-hosting-gestionado-tradicional-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-hosting-gestionado-tradicional-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija hosting gestionado tradicional si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Su audiencia esta concentrada en una region geografica&lt;/li&gt;
&lt;li&gt;Necesita simplicidad y soporte especializado WordPress&lt;/li&gt;
&lt;li&gt;Su presupuesto es de 30-300 EUR/mes&lt;/li&gt;
&lt;li&gt;No tiene equipo DevOps interno&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-hosting-edge-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-hosting-edge-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija hosting Edge si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Su audiencia es global y la velocidad es crítica&lt;/li&gt;
&lt;li&gt;Su sitio es mayoritariamente contenido estatico/cacheable&lt;/li&gt;
&lt;li&gt;Quiere maxima velocidad con gestión moderada&lt;/li&gt;
&lt;li&gt;Combina bien con &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;arquitecturas headless&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-kubernetes-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-kubernetes-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija Kubernetes si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Necesita 99.999% uptime garantizado&lt;/li&gt;
&lt;li&gt;Espera picos de tráfico impredecibles (lanzamientos, eventos virales)&lt;/li&gt;
&lt;li&gt;Tiene equipo DevOps/SRE dedicado&lt;/li&gt;
&lt;li&gt;Su presupuesto supera 500 EUR/mes para infraestructura&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-optimización-post-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-optimización-post-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Optimización post-hosting&lt;/h2&gt;
&lt;p&gt;Independientemente del hosting elegido, estas optimizaciones son universales:&lt;/p&gt;
&lt;h3 id=&quot;php-83-con-jit&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#php-83-con-jit&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PHP 8.3 con JIT&lt;/h3&gt;
&lt;p&gt;PHP 8.3 con compilacion JIT ofrece mejoras de rendimiento del 20-40% sobre PHP 8.0:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// php.ini&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;opcache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;jit_buffer_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100M&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;opcache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;jit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1255&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;http3-y-quic&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#http3-y-quic&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;HTTP/3 y QUIC&lt;/h3&gt;
&lt;p&gt;Todos los proveedores de hosting modernos deben soportar HTTP/3:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiplexacion sin head-of-line blocking&lt;/li&gt;
&lt;li&gt;Conexión más rápida gracias a 0-RTT&lt;/li&gt;
&lt;li&gt;Mejor rendimiento en redes móviles inestables&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;dns-optimizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dns-optimizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;DNS optimizado&lt;/h3&gt;
&lt;p&gt;El DNS es frecuentemente un cuello de botella ignorado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use un proveedor DNS con red anycast (Cloudflare, Route 53)&lt;/li&gt;
&lt;li&gt;Habilite DNSSEC para seguridad&lt;/li&gt;
&lt;li&gt;TTL optimo: 300 segundos para sitios con cambios frecuentes, 3600 para sitios estables&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La eleccion del hosting WordPress correcto en 2026 depende de su audiencia, presupuesto, equipo técnico y requisitos de disponibilidad. No existe una solución única para todos. Lo que si es universal es que el hosting compartido barato ya no es una opción viable para sitios profesionales.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para evaluar opciones de hosting o migrar su sitio WordPress a una infraestructura más rápida, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede guíarle. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; y &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento&lt;/a&gt; que incluyen gestión de infraestructura.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento en cualquier hosting&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Arquitecturas de alto rendimiento&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a frameworks modernos&lt;/a&gt; - Arquitecturas headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Gestión de infraestructura continua&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>hosting</category><category>business</category><category domain="tag">wordpress-hosting-2026</category><category domain="tag">cloud-hosting</category><category domain="tag">edge-computing</category><category domain="tag">server-architecture</category><category domain="tag">performance-optimization</category><enclosure url="https://wppoland.com/images/og/debugging-complex-wordpress-site.jpg" type="image/jpeg"/></item><item><title>¿Tu Sitio Web en WordPress es Lento? Guía de Optimización</title><link>https://wppoland.com/es/is-your-website-on-wordpress-slow/</link><guid isPermaLink="true">https://wppoland.com/es/is-your-website-on-wordpress-slow/</guid><description>Soluciónes prácticas para acelerar tu sitio WordPress lento. Optimización de hosting, caché, imágenes y plugins para mejorar la velocidad.</description><pubDate>Tue, 10 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;tu-sitio-wordpress-carga-lento-el-hosting-no-lo-es-todo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tu-sitio-wordpress-carga-lento-el-hosting-no-lo-es-todo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tu sitio WordPress carga lento? El hosting no lo es todo&lt;/h2&gt;
&lt;p&gt;Tu sitio WordPress carga con lentitud? Muchos propietarios asumen inmediatamente que necesitan un mejor proveedor de hosting. Pero esa es solo una parte de la historia. El problema real casí siempre esta en otro lugar, y cambiar de servidor sin abordar las causas reales es como comprar un coche más potente cuando el deposito tiene una fuga.&lt;/p&gt;
&lt;p&gt;Descubre nuestros servicios de &lt;a href=&quot;/es/speed-up-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En 2026, la velocidad de carga no es solo una cuestion de experiencia de usuario. Google utiliza las metricas de Core Web Vitals como factor de posicionamiento, y un sitio lento pierde posiciones frente a competidores más rápidos. Cada segundo adicional de tiempo de carga reduce las conversiones entre un 7% y un 20%, según multiples estudios del sector. La velocidad es dinero, posicionamiento y retencion de visitantes, todo al mismo tiempo.&lt;/p&gt;
&lt;h2 id=&quot;el-mito-del-hosting-un-servidor-mejor-lo-arreglara-todo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-mito-del-hosting-un-servidor-mejor-lo-arreglara-todo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El mito del hosting: “un servidor mejor lo arreglara todo”&lt;/h2&gt;
&lt;p&gt;Cambiar de servidor puede mejorar la velocidad, pero si tu sitio tiene recursos mal optimizados, un hosting mejor no hara mucho. Es como poner un motor de Formula 1 en un coche que pesa cinco toneladas por llevar el maletero lleno de piedras.&lt;/p&gt;
&lt;p&gt;El hosting influye en el TTFB (Time to First Byte), que es el tiempo que tarda el servidor en empezar a responder. Pero la mayor parte del tiempo de carga percibido por el usuario se consume en descargar, parsear y ejecutar los recursos del frontend: imágenes, CSS, JavaScript y fuentes. Si estos recursos estan mal gestionados, incluso un servidor dedicado de alta gama entregara una experiencia lenta.&lt;/p&gt;
&lt;p&gt;Antes de gastar dinero en un plan de hosting superior, verifica primero los cuellos de botella reales de tu sitio. En la mayoria de los casos, las optimizaciones del frontend y la base de datos tienen un impacto mucho mayor que el cambio de servidor.&lt;/p&gt;
&lt;h2 id=&quot;los-errores-más-comunes-que-ralentizan-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-errores-más-comunes-que-ralentizan-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los errores más comunes que ralentizan WordPress&lt;/h2&gt;
&lt;h3 id=&quot;demasiados-plugins-sin-optimizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#demasiados-plugins-sin-optimizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Demasiados plugins sin optimizar&lt;/h3&gt;
&lt;p&gt;Cada plugin que instalas anade carga a tu sitio. Cada plugin puede cargar sus propios archivos CSS y JavaScript, realizar consultas adicionales a la base de datos y ejecutar código PHP en cada carga de página. Un sitio con 30 o 40 plugins activos puede estar ejecutando más de 100 consultas a la base de datos y cargando docenas de archivos externos en cada página.&lt;/p&gt;
&lt;p&gt;El problema no es solo la cantidad de plugins, sino su calidad. Un plugin bien desarrollado puede ser ligero y eficiente. Un plugin mal desarrollado puede generar docenas de consultas innecesarias, cargar sus recursos en todas las páginas (incluso donde no se usan) y no liberar correctamente la memoria.&lt;/p&gt;
&lt;p&gt;Para diagnosticar que plugins estan causando problemas, utiliza herramientas como Query Monitor, que muestra exactamente cuantas consultas genera cada plugin, cuanto tiempo consumen y que recursos cargan. Desactiva plugins de uno en uno y mide el impacto en el tiempo de carga para identificar a los culpables.&lt;/p&gt;
&lt;p&gt;La regla general es mantener solo los plugins que realmente necesitas. Cada plugin que puedas eliminar o reemplazar con una función personalizada en functions.php reduce la carga del sitio.&lt;/p&gt;
&lt;h3 id=&quot;imágenes-sin-optimizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-sin-optimizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes sin optimizar&lt;/h3&gt;
&lt;p&gt;Las imágenes sin optimizar son una de las principales razones de la lentitud en sitios WordPress. Una fotografia directa de camara puede pesar entre 3 y 10 MB. Multiplicada por 5 o 10 imágenes en una página, son 30 a 100 MB que el navegador tiene que descargar antes de que el usuario pueda interactuar con el contenido.&lt;/p&gt;
&lt;p&gt;Los problemas más comunes con imágenes son:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tamaño excesivo.&lt;/strong&gt; Subir una imagen de 4000x3000 pixeles para mostrarla en un espacio de 800x600. El navegador descarga la imagen completa y luego la redimensiona visualmente, desperdiciando ancho de banda y tiempo de renderizado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formato incorrecto.&lt;/strong&gt; Usar PNG para fotografias (que deberian ser JPEG o WebP) o no aprovechar formatos modernos como WebP y AVIF, que ofrecen compresion superior con la misma calidad visual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Falta de lazy loading.&lt;/strong&gt; Cargar todas las imágenes de la página al mismo tiempo, incluyendo las que estan fuera de la pantalla y que el usuario puede que nunca llegue a ver.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sin compresion.&lt;/strong&gt; Subir imágenes directamente sin pasar por ningun proceso de compresion. Una imagen JPEG al 100% de calidad pesa el doble que la misma imagen al 85% de calidad, y la diferencia visual es imperceptible.&lt;/p&gt;
&lt;p&gt;La solución pasa por automatizar la optimización de imágenes. Plugins como Smush, ShortPixel o Imagify pueden comprimir automáticamente cada imagen que se sube a la biblioteca de medios. También puedes usar un hook de WordPress para automatizar la compresion:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_generate_attachment_metadata&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($metadata) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;function_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_smushit&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_smushit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($metadata[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;file&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $metadata;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Además, WordPress desde la versión 5.5 incluye lazy loading nativo para imágenes con el atributo &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt;, y las versiones modernas generan automáticamente variantes en formato WebP si el servidor lo soporta.&lt;/p&gt;
&lt;h3 id=&quot;configuración-de-cache-incorrecta-o-inexistente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-cache-incorrecta-o-inexistente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de cache incorrecta o inexistente&lt;/h3&gt;
&lt;p&gt;Sin cache, el servidor tiene que reconstruir la página desde cero en cada visita. Esto significa ejecutar todas las consultas PHP, todas las consultas a la base de datos y todo el procesamiento necesario para generar el HTML final, cada vez que alguien accede a cualquier página.&lt;/p&gt;
&lt;p&gt;La cache almacena el resultado de este procesamiento para servirlo directamente en visitas posteriores, eliminando la necesidad de repetir todo el trabajo. Un sitio WordPress sin cache puede tener tiempos de respuesta de 2 a 5 segundos. El mismo sitio con cache bien configurada puede responder en 200 a 500 milisegundos.&lt;/p&gt;
&lt;p&gt;Existen varios niveles de cache que deben funcionar juntos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cache de página completa.&lt;/strong&gt; Almacena el HTML generado de cada página. Es el nivel más impactante porque elimina completamente la ejecucion de PHP y las consultas a base de datos para visitantes anonimos. Plugins como WP Rocket, WP Super Cache o LiteSpeed Cache manejan este nivel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cache de objetos.&lt;/strong&gt; Almacena los resultados de consultas individuales a la base de datos en memoria (Redis o Memcached) para evitar repetirlas. Es especialmente útil para sitios dinámicos donde la cache de página completa no siempre es aplicable (tiendas WooCommerce, sitios con contenido personalizado).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cache del navegador.&lt;/strong&gt; Indica al navegador del visitante que almacene recursos estaticos (imágenes, CSS, JavaScript, fuentes) localmente durante un periodo definido, evitando que los descargue de nuevo en visitas posteriores.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cache de CDN.&lt;/strong&gt; Un Content Delivery Network distribuye copias de tus archivos estaticos en servidores repartidos por todo el mundo, para que cada visitante los descargue desde el servidor más cercano geograficamente.&lt;/p&gt;
&lt;h3 id=&quot;scripts-externos-excesivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#scripts-externos-excesivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Scripts externos excesivos&lt;/h3&gt;
&lt;p&gt;Google Fonts, herramientas de analítica, widgets de redes sociales, chats en vivo, scripts de publicidad y herramientas de marketing: cada uno de estos servicios externos anade peticiones HTTP, JavaScript que se tiene que descargar, parsear y ejecutar, y potenciales cuellos de botella que estan fuera de tu control.&lt;/p&gt;
&lt;p&gt;Un solo widget de chat en vivo puede anadir entre 200 KB y 1 MB de JavaScript a tu página. Google Fonts tipicamente anade 2 a 3 peticiones HTTP adicionales y entre 50 y 200 KB de archivos de fuentes. Los pixels de seguimiento de Facebook, Google Ads y otras plataformas publicitarias suman otra capa de scripts que compiten por los recursos del navegador.&lt;/p&gt;
&lt;p&gt;La solución no es eliminar todos los scripts externos, sino gestionarlos de forma inteligente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Carga diferida.&lt;/strong&gt; Retrasa la carga de scripts no esenciales hasta que el usuario interactue con la página (scroll, clic, movimiento del raton).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alojamiento local de fuentes.&lt;/strong&gt; Descarga las fuentes de Google y sirvilas desde tu propio servidor para eliminar las peticiones al CDN de Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carga condicional.&lt;/strong&gt; Solo carga scripts de chat en las páginas donde sean relevantes, no en todo el sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minimizacion y combinación.&lt;/strong&gt; Reduce el número de peticiones HTTP combinando archivos CSS y JavaScript donde sea posible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;soluciónes-prácticas-como-acelerar-wordpress-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soluciónes-prácticas-como-acelerar-wordpress-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soluciónes prácticas: como acelerar WordPress paso a paso&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-reducir-las-consultas-a-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-reducir-las-consultas-a-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Reducir las consultas a la base de datos&lt;/h3&gt;
&lt;p&gt;Algunos temas y plugins generan consultas innecesarias a la base de datos. Puedes optimizarlas almacenando los resultados en cache con las funciones nativas de WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cached_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cached_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my_cached_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$cached_posts) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $cached_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Cache durante 1 hora&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my_cached_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $cached_posts, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cached_posts;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este patron simple reduce drasticamente la carga en la base de datos. En lugar de ejecutar la consulta en cada carga de página, el resultado se almacena en cache y se reutiliza durante una hora. Para sitios con alto tráfico, esto puede significar la diferencia entre un servidor saturado y uno que responde sin problemas.&lt;/p&gt;
&lt;p&gt;Además de la cache de consultas, revisa y optimiza la base de datos regularmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Elimina revisiones de posts.&lt;/strong&gt; WordPress almacena cada revision de cada entrada. Un sitio con miles de posts puede tener decenas de miles de revisiones ocupando espacio en la base de datos. Limita el número de revisiones con &lt;code&gt;define(&apos;WP_POST_REVISIONS&apos;, 5);&lt;/code&gt; en wp-config.php.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpia datos transitorios expirados.&lt;/strong&gt; Los transients son datos temporales almacenados en la base de datos por plugins. Los transients expirados se acumulan y ralentizan las consultas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimiza las tablas de la base de datos.&lt;/strong&gt; Ejecuta &lt;code&gt;OPTIMIZE TABLE&lt;/code&gt; periodicamente para defragmentar las tablas de MySQL y mejorar el rendimiento de las consultas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elimina datos huerfanos.&lt;/strong&gt; Metadatos de posts eliminados, relaciones de taxonomía obsoletas y opciones de plugins desinstalados ocupan espacio y ralentizan las consultas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-2-optimizar-la-entrega-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-optimizar-la-entrega-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Optimizar la entrega de imágenes&lt;/h3&gt;
&lt;p&gt;Además de la compresion básica que ya hemos mencionado, implementa una estrategia completa de imágenes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sirve imágenes en el tamaño correcto.&lt;/strong&gt; WordPress genera automáticamente multiples tamaños de cada imagen que subes. Asegurate de que tu tema utiliza el atributo &lt;code&gt;srcset&lt;/code&gt; para que el navegador descargue solo el tamaño necesario para cada dispositivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Usa formatos modernos.&lt;/strong&gt; WebP ofrece una compresion entre un 25% y un 35% mejor que JPEG con la misma calidad visual. AVIF mejora esto aun mas. Configura tu servidor para servir WebP a los navegadores que lo soporten y JPEG como fallback.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementa lazy loading correctamente.&lt;/strong&gt; Las imágenes que estan por debajo del fold (la parte visible sin scroll) deben cargarse de forma diferida. Pero las imágenes del hero y la primera sección visible deben cargarse inmediatamente para no penalizar el LCP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Precarga la imagen LCP.&lt;/strong&gt; Identifica cual es la imagen más grande visible en la parte superior de la página (la que determina el LCP) y anade una etiqueta de preload en el head:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/ruta/a/hero-image.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-3-configurar-la-cache-correctamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-configurar-la-cache-correctamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Configurar la cache correctamente&lt;/h3&gt;
&lt;p&gt;Para la cache de página, WP Rocket es la solución más completa para la mayoria de sitios WordPress. Su configuración básica ya ofrece mejoras significativas, y sus opciones avanzadas permiten afinar el rendimiento para cada caso específico.&lt;/p&gt;
&lt;p&gt;Para la cache de objetos, si tu hosting soporta Redis o Memcached, activarla puede reducir el tiempo de respuesta de la base de datos dramaticamente. Redis almacena los resultados de consultas en memoria RAM, que es ordenes de magnitud más rápida que el disco:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En wp-config.php para activar Redis como cache de objetos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;127.0.0.1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_PORT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;6379&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_REDIS_DATABASE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para la cache del navegador, configura las cabeceras de expiracion en tu archivo .htaccess o en la configuración de Nginx:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# En .htaccess para Apache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;IfModule mod_expires.c&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ExpiresActive On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ExpiresByType image/webp &quot;access plus 1 year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ExpiresByType image/jpeg &quot;access plus 1 year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ExpiresByType text/css &quot;access plus 1 month&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ExpiresByType application/javascript &quot;access plus 1 month&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;/IfModule&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-4-habilitar-compresion-a-nivel-de-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-habilitar-compresion-a-nivel-de-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Habilitar compresion a nivel de PHP&lt;/h3&gt;
&lt;p&gt;Si no utilizas un plugin de cache, puedes anadir compresion básica directamente en WordPress mediante la función ob_gzhandler:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; start_output_buffering&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ob_gzhandler&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;start_output_buffering&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto comprime el contenido HTML antes de enviarlo al navegador, reduciendo el tamaño de la transferencia entre un 60% y un 80%. Sin embargo, la mayoria de los servidores modernos ya tienen la compresion Gzip o Brotli habilitada a nivel de servidor, lo cual es más eficiente que hacerlo a nivel de PHP. Verifica primero si tu servidor ya comprime las respuestas antes de anadir esta función.&lt;/p&gt;
&lt;h3 id=&quot;paso-5-auditar-y-reducir-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-auditar-y-reducir-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Auditar y reducir plugins&lt;/h3&gt;
&lt;p&gt;Realiza una auditoria completa de tus plugins siguiendo este proceso:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instala Query Monitor.&lt;/strong&gt; Este plugin gratuito te muestra exactamente cuantas consultas a la base de datos genera cada plugin, cuanto tiempo consumen y que archivos CSS y JS cargan.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identifica los peores infractores.&lt;/strong&gt; Ordena los plugins por número de consultas y tiempo de ejecucion. Los plugins que generan más de 10 consultas o que tardan más de 50 milisegundos en ejecutarse son candidatos a revision.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Evalua alternativas.&lt;/strong&gt; Para cada plugin problematico, busca alternativas más ligeras o valora si puedes reemplazar su funcionalidad con código personalizado en functions.php.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Desactiva lo que no necesitas.&lt;/strong&gt; Plugins de estadísticas que puedes sustituir por Google Analytics, sliders que nunca usas, plugins de redes sociales con funcionalidades que ya ofrece tu tema. Cada plugin eliminado es menos carga.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Carga condicional.&lt;/strong&gt; Para plugins que solo necesitas en páginas específicas (como un plugin de formularios de contacto), usa carga condicional para que sus recursos solo se carguen donde se usan:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; dequeue_contact_form_scripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dequeue_contact_form_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;99&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;core-web-vitals-las-metricas-que-importan-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#core-web-vitals-las-metricas-que-importan-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Core Web Vitals: las metricas que importan en 2026&lt;/h2&gt;
&lt;p&gt;Google evalua la velocidad de tu sitio a través de tres metricas principales:&lt;/p&gt;
&lt;h3 id=&quot;lcp-largest-contentful-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lcp-largest-contentful-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;LCP (Largest Contentful Paint)&lt;/h3&gt;
&lt;p&gt;Mide cuanto tarda en renderizarse el elemento más grande visible en la pantalla. El objetivo es menos de 2.5 segundos. Los factores que afectan al LCP son el tiempo de respuesta del servidor, la carga de recursos bloqueantes (CSS y JS), la carga de la imagen o texto principal y el renderizado del lado del clientes.&lt;/p&gt;
&lt;h3 id=&quot;inp-interaction-to-next-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inp-interaction-to-next-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;INP (Interaction to Next Paint)&lt;/h3&gt;
&lt;p&gt;Mide la capacidad de respuesta de la página a las interacciones del usuario (clics, taps, teclas). El objetivo es menos de 200 milisegundos. JavaScript pesado y no optimizado es la principal causa de un INP deficiente en sitios WordPress.&lt;/p&gt;
&lt;h3 id=&quot;cls-cumulative-layout-shift&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cls-cumulative-layout-shift&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CLS (Cumulative Layout Shift)&lt;/h3&gt;
&lt;p&gt;Mide la estabilidad visual de la página. Los desplazamientos inesperados de contenido (cuando un anuncio se carga y empuja el texto hacia abajo, o una imagen sin dimensiones definidas provoca un salto) penalizan esta metrica. El objetivo es menos de 0.1.&lt;/p&gt;
&lt;p&gt;Para monitorizar estas metricas, utiliza PageSpeed Insights, Chrome DevTools, Google Search Console (sección Core Web Vitals) y herramientas de monitoreo en tiempo real como SpeedCurve o Calibre.&lt;/p&gt;
&lt;h2 id=&quot;optimización-del-servidor-y-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-servidor-y-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del servidor y PHP&lt;/h2&gt;
&lt;h3 id=&quot;actualizar-a-php-8x&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizar-a-php-8x&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizar a PHP 8.x&lt;/h3&gt;
&lt;p&gt;Si tu sitio todavia ejecuta PHP 7.4 u 8.0, actualizar a PHP 8.2 o 8.3 puede mejorar el rendimiento entre un 15% y un 30% sin hacer ningun otro cambio. Las versiones modernas de PHP incluyen el compilador JIT, mejoras en la gestión de memoria y optimizaciones del motor que benefician directamente a WordPress.&lt;/p&gt;
&lt;h3 id=&quot;configurar-opcache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-opcache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar OPcache&lt;/h3&gt;
&lt;p&gt;OPcache almacena el bytecode PHP compilado en memoria, eliminando la necesidad de recompilar los archivos PHP en cada peticion. La mayoria de los hostings modernos tienen OPcache habilitado por defecto, pero verifica que este activo y correctamente configurado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.enable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.memory_consumption&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=256&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.max_accelerated_files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=20000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;opcache.revalidate_freq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=120&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;usar-un-cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usar-un-cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usar un CDN&lt;/h3&gt;
&lt;p&gt;Un CDN (Content Delivery Network) como Cloudflare, BunnyCDN o KeyCDN distribuye copias de tus archivos estaticos en servidores alrededor del mundo. Un visitante en Madrid descarga las imágenes desde un servidor en Espana en lugar de desde un servidor en Varsovia, reduciendo drasticamente la latencia.&lt;/p&gt;
&lt;p&gt;Cloudflare además ofrece optimizaciones automáticas como minificacion de HTML, CSS y JavaScript, compresion Brotli y protección contra ataques DDoS, todo incluido en su plan gratuito.&lt;/p&gt;
&lt;h2 id=&quot;diagnostico-como-identificar-los-cuellos-de-botella&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diagnostico-como-identificar-los-cuellos-de-botella&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diagnostico: como identificar los cuellos de botella&lt;/h2&gt;
&lt;p&gt;Antes de aplicar cualquier optimización, necesitas saber donde esta el problema real. Sigue este orden de diagnóstico:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ejecuta PageSpeed Insights.&lt;/strong&gt; Obtendras un diagnóstico automatizado con las metricas de Core Web Vitals y una lista de oportunidades de mejora ordenadas por impacto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usa GTmetrix.&lt;/strong&gt; Proporciona un desglose visual del tiempo de carga (waterfall) que muestra exactamente que recursos se cargan, en que orden y cuanto tarda cada uno.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instala Query Monitor.&lt;/strong&gt; Para diagnóstico del backend: consultas a base de datos, hooks ejecutados, errores de PHP y rendimiento de cada componente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revisa el TTFB.&lt;/strong&gt; Si el Time to First Byte es superior a 600 ms, el problema esta en el servidor o en el procesamiento PHP, no en el frontend.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Analiza el waterfall.&lt;/strong&gt; Si el TTFB es bueno pero la página sigue siendo lenta, el problema esta en los recursos del frontend: imágenes pesadas, demasiados archivos CSS/JS o scripts de terceros que bloquean el renderizado.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;plan-de-accion-prioriza-por-impacto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-accion-prioriza-por-impacto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de accion: prioriza por impacto&lt;/h2&gt;
&lt;p&gt;No todas las optimizaciones tienen el mismo impacto. Ordena tu trabajo de mayor a menor retorno:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cache de página completa.&lt;/strong&gt; Es la optimización con mayor impacto absoluto. Si no tienes cache, activarla puede reducir el tiempo de carga entre un 50% y un 90%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimización de imágenes.&lt;/strong&gt; Segundo mayor impacto. Comprimir y servir imágenes en el tamaño y formato correctos puede reducir el peso de la página entre un 40% y un 70%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Eliminar CSS y JS bloqueantes.&lt;/strong&gt; Mejorar el FCP y el LCP difiriendo los scripts no críticos y generando Critical CSS. Lee nuestra guía sobre &lt;a href=&quot;/es/remove-render-blocking-css-js/&quot;&gt;como eliminar CSS y JS que bloquean el renderizado&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reducir plugins.&lt;/strong&gt; Cada plugin eliminado reduce consultas a la base de datos, archivos cargados y código PHP ejecutado.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cache de objetos (Redis/Memcached).&lt;/strong&gt; Especialmente relevante para sitios WooCommerce y sitios con contenido dinámico que no pueden cachear páginas completas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CDN.&lt;/strong&gt; Mejora la latencia para visitantes lejanos geograficamente y reduce la carga del servidor principal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actualizar PHP.&lt;/strong&gt; Mejora de rendimiento gratuita y directa.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La velocidad de un sitio WordPress no depende de un único factor ni se resuelve con un solo plugin. Es el resultado de decisiones técnicas acumuladas: la eleccion de hosting, la gestión de plugins, la optimización de imágenes, la configuración de cache, la gestión de scripts externos y el mantenimiento regular de la base de datos.&lt;/p&gt;
&lt;p&gt;El enfoque correcto es sistematico: medir primero, identificar los cuellos de botella reales y abordarlos por orden de impacto. Un sitio WordPress bien optimizado puede cargar en menos de 1 segundo y obtener puntuaciones de 90 o más en PageSpeed Insights, incluso con funcionalidades complejas como WooCommerce o constructores visuales.&lt;/p&gt;
&lt;p&gt;No culpes automáticamente al hosting. Verifica que tus imágenes estan optimizadas, que tienes cache funcionando correctamente, que no tienes plugins innecesarios y que tus recursos CSS y JS no bloquean el renderizado. Solo entonces, si el TTFB sigue siendo alto, considera un cambio de servidor.&lt;/p&gt;</content:encoded><category>wordpress</category><category>optimization | positioning | SEO</category><category domain="tag">performance</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/is-your-website-on-wordpress-slow.jpg" type="image/jpeg"/></item><item><title>Dominando WP_User_Query: Construir un directorio de miembros escalable en WordPress</title><link>https://wppoland.com/es/mastering-wp-user-query-member-directory/</link><guid isPermaLink="true">https://wppoland.com/es/mastering-wp-user-query-member-directory/</guid><description>Deje de usar plugins pesados para listas simples. Aprenda a usar WP_User_Query para construir directorios de miembros eficientes y seguros con filtrado granular.</description><pubDate>Tue, 03 Jun 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En el ecosistema WordPress, &lt;code&gt;WP_Query&lt;/code&gt; se lleva toda la gloria, pero &lt;strong&gt;&lt;code&gt;WP_User_Query&lt;/code&gt;&lt;/strong&gt; es la fuerza detras de los sitios de membresia, intranets y plataformas comunitarias.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Ya sea que este construyendo una simple página de “Nuestro Equipo” o un complejo motor de búsqueda “Encontrar un Doctor” con miles de profesionales, depender de plugins como &lt;em&gt;Ultimate Member&lt;/em&gt; para la capa de presentacion es a menudo excesivo y un cuello de botella de rendimiento.&lt;/p&gt;
&lt;p&gt;En esta guía, evitaremos la interfaz grafica y construiremos consultas de usuario eficientes y seguras directamente en PHP. Cubriremos filtrado granular, cache de rendimiento y medidas de seguridad criticas para prevenir fugas de datos.&lt;/p&gt;
&lt;h2 id=&quot;1-get_users-vs-wp_user_query&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-get_users-vs-wp_user_query&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. get_users() vs. WP_User_Query&lt;/h2&gt;
&lt;p&gt;Al igual que &lt;code&gt;get_posts()&lt;/code&gt; es un wrapper para &lt;code&gt;WP_Query&lt;/code&gt;, &lt;strong&gt;&lt;code&gt;get_users()&lt;/code&gt;&lt;/strong&gt; es un wrapper preconfigurado para &lt;strong&gt;&lt;code&gt;WP_User_Query&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;get_users()&lt;/code&gt;&lt;/strong&gt; para listas simples (ej. “Muestrame 5 administradores”). Retorna un array de objetos &lt;code&gt;WP_User&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;WP_User_Query&lt;/code&gt;&lt;/strong&gt; cuando necesite manipulaciones SQL avanzadas, lógica detallada de ‘orderby’ o inspeccion directa de los encabezados/resultados de la consulta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para el 95% de los casos de uso, usaremos el array de argumentos, que aplica a ambos.&lt;/p&gt;
&lt;h2 id=&quot;2-lo-básico-construir-una-página-de-equipo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-lo-básico-construir-una-página-de-equipo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Lo básico: Construir una página de equipo&lt;/h2&gt;
&lt;p&gt;Digamos que queremos mostrar una cuadricula de empleados (Editores y Autores) ordenados por su nombre para mostrar.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;role__in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;author&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;display_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;       =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ASC&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limite de páginacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;       =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$user_query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_User_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$results    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($results)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div class=&quot;team-grid&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $avatar &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_avatar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;128&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $name   &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;display_name);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $bio    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_user_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;article class=&apos;team-member&apos;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;figure&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$avatar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x3C;/figure&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;h3&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x3C;/h3&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;p&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$bio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x3C;/p&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;              &amp;#x3C;/article&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;3-filtrado-avanzado-meta-queries&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-filtrado-avanzado-meta-queries&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Filtrado avanzado (meta queries)&lt;/h2&gt;
&lt;p&gt;Aqui es donde &lt;code&gt;WP_User_Query&lt;/code&gt; brilla. Imagine que tiene un directorio de desarrolladores y quiere encontrar aquellos que:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Estan basados en “Madrid”.&lt;/li&gt;
&lt;li&gt;Tienen su perfil marcado como “Público”.&lt;/li&gt;
&lt;li&gt;Tienen “PHP” listado como habilidad.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;role&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;       =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;subscriber&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;meta_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;relation&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;city&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Madrid&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;compare&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;=&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;is_public_profile&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;compare&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;=&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;skills&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;PHP&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;compare&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;LIKE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; // Lento, pero efectivo para arrays serializados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Alerta de rendimiento&lt;/strong&gt;: Consultar &lt;code&gt;wp_usermeta&lt;/code&gt; es costoso. A diferencia de &lt;code&gt;wp_posts&lt;/code&gt;, las tablas de usuarios raramente estan indexadas optimamente para filtrado complejo. Para directorios con más de 10.000 usuarios, considere descargar el indice de búsqueda a &lt;strong&gt;Elasticsearch&lt;/strong&gt; (via ElasticPress) o usar una tabla personalizada.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;4-optimización-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-optimización-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Optimización de rendimiento&lt;/h2&gt;
&lt;p&gt;Cuando consulta usuarios en un sitio de alto tráfico, debe ser frugal con los recursos de base de datos.&lt;/p&gt;
&lt;h3 id=&quot;a-limitar-los-campos-de-retorno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#a-limitar-los-campos-de-retorno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;A. Limitar los campos de retorno&lt;/h3&gt;
&lt;p&gt;Por defecto, WordPress obtiene &lt;em&gt;cada pieza de datos&lt;/em&gt; sobre el usuario (todos los metadatos). Si solo necesita nombres y correos, diga a WordPress que sea ligero.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;role&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;subscriber&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;display_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user_email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Retorna objetos stdClass, no WP_User&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Resultado: El uso de memoria se reduce significativamente.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;b-contar-usuarios-sin-cargarlos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#b-contar-usuarios-sin-cargarlos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;B. Contar usuarios sin cargarlos&lt;/h3&gt;
&lt;p&gt;Si solo quiere mostrar “Tenemos 500 miembros!”, no cargue los miembros.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;role&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;subscriber&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Solo obtener IDs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_User_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_total&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Usa logica SQL_CALC_FOUND_ROWS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O para velocidad extrema (ignorando filtrado complejo), use &lt;code&gt;count_users()&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; count_users&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Tenemos &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $count[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;total_users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot; usuarios.&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;c-cache-con-transients&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#c-cache-con-transients&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;C. Cache con transients&lt;/h3&gt;
&lt;p&gt;Para directorios que no cambian frecuentemente, almacene los resultados en transients:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;directorio_miembros_página_1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cache_key);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $results) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $user_query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_User_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cache_key, $results, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-seguridad-la-amenaza-de-enumeracion-de-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-seguridad-la-amenaza-de-enumeracion-de-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Seguridad: La amenaza de “enumeracion de usuarios”&lt;/h2&gt;
&lt;p&gt;Por defecto, WordPress es bastante permisivo respecto a los datos de usuario.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;No exponga nombres de login&lt;/strong&gt;: Nunca ejecute &lt;code&gt;echo $user-&gt;user_login&lt;/code&gt;. Esto es la mitad de la clave necesaria para hackear una cuenta de administrador. Siempre use &lt;code&gt;display_name&lt;/code&gt; o &lt;code&gt;user_nicename&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oculte correos electronicos&lt;/strong&gt;: A menos que sea una intranet interna, nunca muestre &lt;code&gt;user_email&lt;/code&gt; en el código fuente HTML para evitar bots rastreadores.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;bloquear-archivos-de-autor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloquear-archivos-de-autor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloquear archivos de autor&lt;/h3&gt;
&lt;p&gt;Los hackers a menudo escanean &lt;code&gt;/?author=1&lt;/code&gt;, &lt;code&gt;/?author=2&lt;/code&gt; para descubrir nombres de usuario. Si esta construyendo un sitio donde los usuarios no necesitan archivos publicos (como un sitio corporativo), desactive esta ruta.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar a functions.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sanitizacion-de-salida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sanitizacion-de-salida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sanitizacion de salida&lt;/h3&gt;
&lt;p&gt;Siempre escape los datos de usuario antes de mostrarlos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto - siempre escapar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;display_name);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_author_posts_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Incorrecto - nunca confiar en datos sin escapar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;display_name; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vulnerable a XSS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-páginación-de-directorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-páginación-de-directorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Páginación de directorios&lt;/h2&gt;
&lt;p&gt;Para directorios grandes, la páginación es esencial:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$paged &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; max&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_query_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$per_page &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;role__in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;author&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $per_page,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $paged,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;display_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ASC&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$user_query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_User_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$total_users &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_total&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$total_pages &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ceil&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($total_users &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $per_page);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Renderizar páginacion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; páginate_links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;total&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $total_pages,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;current&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $paged,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;format&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;?paged=%#%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-búsqueda-de-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-búsqueda-de-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Búsqueda de usuarios&lt;/h2&gt;
&lt;p&gt;Implemente búsqueda en tiempo real para directorios:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$search_term &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_GET[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;buscar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($search_term) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $args[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;search&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$search_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $args[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;search_columns&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;display_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user_nicename&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para búsquedas más avanzadas que incluyan metadatos, combine &lt;code&gt;search&lt;/code&gt; con &lt;code&gt;meta_query&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;8-integración-con-rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-integración-con-rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Integración con REST API&lt;/h2&gt;
&lt;p&gt;Para directorios interactivos con JavaScript, exponga datos de usuario a través de la REST API:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar endpoint personalizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_api_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_rest_route&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;directorio/v1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/miembros&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;methods&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;GET&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;obtener_miembros_directorio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;permission_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;__return_true&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; obtener_miembros_directorio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($request) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;role__in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;author&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;display_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_User_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $members &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_results&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $members[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;display_name,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;avatar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_avatar_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;size&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 128&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_REST_Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;members&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $members,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;total&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_total&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Construir un directorio de miembros personalizado le da control total sobre rendimiento y seguridad.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Use el parametro &lt;code&gt;fields&lt;/code&gt;&lt;/strong&gt; para reducir la huella de memoria.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cachee sus resultados&lt;/strong&gt; usando transients si el directorio no cambia cada hora.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sanitice la salida&lt;/strong&gt; implacablemente (siempre &lt;code&gt;esc_html&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proteja la privacidad&lt;/strong&gt; ocultando logins y correos electronicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Considere Elasticsearch&lt;/strong&gt; para directorios con más de 10.000 usuarios.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Los usuarios de WordPress son entidades como las entradas: comience a consultarlos con la misma precision.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>development</category><category>performance</category><category domain="tag">wp_user_query</category><category domain="tag">desarrollo</category><category domain="tag">seguridad</category><category domain="tag">membresia</category><enclosure url="https://wppoland.com/images/og/jak-wyswietlic-liste-wszystkich-uzytkownikow-wraz-z-nazwa-roli.jpg" type="image/jpeg"/></item><item><title>SEO semántico para WordPress en 2026: Mas alla de las palabras clave</title><link>https://wppoland.com/es/semantic-seo-wordpress-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/semantic-seo-wordpress-guide-2026/</guid><description>Las palabras clave ya no son suficientes. Aprenda a dominar el SEO semántico, las entidades y los grafos de conocimiento en WordPress para dominar la búsqueda en 2026.</description><pubDate>Sat, 31 May 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, si todavia esta contando densidad de palabras clave, esta jugando un juego que termino hace años. Los motores de búsqueda modernos no buscan palabras; buscan &lt;strong&gt;significado&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Bienvenido a la era del &lt;strong&gt;SEO Semántico&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;la-evolucion-de-la-búsqueda-de-cadenas-a-cosas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-evolucion-de-la-búsqueda-de-cadenas-a-cosas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La evolucion de la búsqueda: De cadenas a cosas&lt;/h2&gt;
&lt;p&gt;La transformación del SEO tradicional al SEO semántico representa uno de los cambios más significativos en la tecnología de motores de búsqueda desde la invencion de internet. Comprender esta evolucion es crucial para los propietarios de sitios WordPress que quieren seguir siendo competitivos en 2026.&lt;/p&gt;
&lt;h3 id=&quot;la-era-de-las-palabras-clave-1998-2012&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-era-de-las-palabras-clave-1998-2012&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La era de las palabras clave (1998-2012)&lt;/h3&gt;
&lt;p&gt;En los primeros dias de la búsqueda, los motores literalmente contaban cuantas veces aparecia una palabra clave en una página. El “SEO” significaba repetir la misma frase tantas veces como fuera posible. Era un juego de volumen, no de calidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tacticas de la era de palabras clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Densidad de palabras clave del 3-5%&lt;/li&gt;
&lt;li&gt;Keyword stuffing en meta tags y alt text&lt;/li&gt;
&lt;li&gt;Páginas doorway para cada variacion de palabra clave&lt;/li&gt;
&lt;li&gt;Directorios de enlaces y granjas de links&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-transicion-semántica-2013-2020&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-transicion-semántica-2013-2020&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La transicion semántica (2013-2020)&lt;/h3&gt;
&lt;p&gt;Google comenzo a entender el significado detras de las consultas, no solo las palabras individuales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hummingbird (2013)&lt;/strong&gt;: Primer cambio importante hacia la comprension de la intencion de búsqueda y el contexto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RankBrain (2015)&lt;/strong&gt;: Sistema de machine learning que interpretaba consultas nunca antes vistas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BERT (2019)&lt;/strong&gt;: Modelo de deep learning que entendia el contexto de las palabras en relación con todas las demás palabras en una oracion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-era-entity-first-2021-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-era-entity-first-2021-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La era Entity-First (2021-2026)&lt;/h3&gt;
&lt;p&gt;El panorama de búsqueda actual esta dominado por la indexacion basada en entidades y la comprension impulsada por IA. Los motores de búsqueda modernos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mapean contenido al Grafo de Conocimiento&lt;/strong&gt;: Conectando sus artículos con entidades establecidas como personas, lugares, organizaciónes y conceptos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entienden relaciones temáticas&lt;/strong&gt;: Reconociendo que “desarrollo WordPress”, “programacion PHP” y “diseño web” estan semanticamente relacionados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procesan lenguaje natural&lt;/strong&gt;: Entendiendo consultas conversacionales y preguntas de cola larga&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluan E-E-A-T&lt;/strong&gt;: Evaluando Experiencia, Pericia, Autoridad y Confiabilidad a nivel de entidad&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-que-el-seo-semántico-importa-más-que-nunca-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-seo-semántico-importa-más-que-nunca-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el SEO semántico importa más que nunca en 2026&lt;/h2&gt;
&lt;h3 id=&quot;1-resultados-de-búsqueda-impulsados-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-resultados-de-búsqueda-impulsados-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Resultados de búsqueda impulsados por IA&lt;/h3&gt;
&lt;p&gt;La Experiencia Generativa de Búsqueda (SGE) de Google y funciones IA similares no solo emparejan palabras clave; sintetizan información de multiples fuentes para responder consultas complejas. Para ser incluido en estos resumenes generados por IA, su contenido debe ser semanticamente rico y claramente conectado a entidades relevantes.&lt;/p&gt;
&lt;h3 id=&quot;2-dominancia-de-búsqueda-por-voz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-dominancia-de-búsqueda-por-voz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Dominancia de búsqueda por voz&lt;/h3&gt;
&lt;p&gt;Con asistentes de voz procesando consultas en lenguaje natural (“Cual es la mejor agencia WordPress en Europa para sitios empresariales?”), su contenido necesita responder preguntas completas, no solo contener frases de palabras clave.&lt;/p&gt;
&lt;h3 id=&quot;3-respuestas-directas-y-posición-cero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-respuestas-directas-y-posición-cero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Respuestas directas y posición cero&lt;/h3&gt;
&lt;p&gt;Los fragmentos destacados y las respuestas directas dependen del contenido semanticamente estructurado. Google necesita entender no solo &lt;em&gt;que&lt;/em&gt; dice su contenido, sino &lt;em&gt;como&lt;/em&gt; se relaciona con la consulta del usuario y &lt;em&gt;por que&lt;/em&gt; su respuesta es autoritativa.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;entidades-versus-palabras-clave-que-cambio-realmente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entidades-versus-palabras-clave-que-cambio-realmente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entidades versus palabras clave: que cambio realmente&lt;/h2&gt;
&lt;p&gt;Encuadre honesto: el SEO semántico trata de relaciones entre entidades legibles por máquinas, no de magia. Si no puedes dibujar el grafo de entidades de tu página en una servilleta, no puedes decirle al motor de búsqueda de que va la página. Ese es todo el juego.&lt;/p&gt;
&lt;p&gt;Una palabra clave es una cadena que un usuario tecleó. Una entidad es una cosa con ID estable, atributos y conexiones a otras cosas. WordPress como CMS vive en &lt;code&gt;Q131769&lt;/code&gt; en Wikidata. WordPress.com como servicio alojado es un nodo distinto en el grafo, propiedad de Automattic (&lt;code&gt;Q1450215&lt;/code&gt;). Para el mercado hispanohablante, hay nodos propios que pesan: Telefónica (&lt;code&gt;Q11842&lt;/code&gt;), BBVA (&lt;code&gt;Q190900&lt;/code&gt;), Mercadona (&lt;code&gt;Q53033&lt;/code&gt;). Cuando Google parsea una página sobre banca digital en España, intenta resolver estos nodos específicos, no conceptos genericos.&lt;/p&gt;
&lt;h3 id=&quot;el-test-de-la-servilleta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-test-de-la-servilleta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El test de la servilleta&lt;/h3&gt;
&lt;p&gt;Antes de escribir un post, esboza la página como un grafo: una entidad central, tres a siete entidades relacionadas, y la etiqueta de relación en cada arista. Para un post sobre “copias de seguridad WordPress”, la servilleta queda:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress (&lt;code&gt;Q131769&lt;/code&gt;) — requiere —&gt; Backup (&lt;code&gt;Q11904837&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;WordPress — corre sobre —&gt; MySQL (&lt;code&gt;Q850&lt;/code&gt;) y PHP (&lt;code&gt;Q59&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Backup — almacenado en —&gt; Amazon S3, Backblaze B2, Google Cloud Storage&lt;/li&gt;
&lt;li&gt;Backup — creado por —&gt; UpdraftPlus, BlogVault, BackupBuddy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si puedes nombrar las aristas (requiere, corre sobre, almacenado en, creado por), tienes algo que codificar en schema. Si la única arista que puedes nombrar es “relacionado con”, la página no tiene tesis ni historia de entidades.&lt;/p&gt;
&lt;h3 id=&quot;extraer-entidades-del-contenido-existente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#extraer-entidades-del-contenido-existente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Extraer entidades del contenido existente&lt;/h3&gt;
&lt;p&gt;No hace falta adivinar. Pasa la página por una de estas herramientas y mira lo que ve la máquina:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Cloud Natural Language API&lt;/strong&gt; — &lt;code&gt;analyzeEntities&lt;/code&gt; devuelve nombre de entidad, tipo (PERSON, ORGANIZATION, WORK_OF_ART, CONSUMER_GOOD), score &lt;code&gt;salience&lt;/code&gt; y un &lt;code&gt;mid&lt;/code&gt; (Knowledge Graph machine ID) cuando existe. El &lt;code&gt;mid&lt;/code&gt; es el oro; si tu tema principal no obtiene un &lt;code&gt;mid&lt;/code&gt;, Google no tiene match seguro. La API soporta español como idioma de entrada, pero no distingue bien entre castellano peninsular y variantes latinoamericanas a nivel léxico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;spaCy con &lt;code&gt;es_core_news_lg&lt;/code&gt;&lt;/strong&gt; — gratis, corre localmente, da etiquetas NER para español más similitud vectorial. Entrenado sobre corpus mixto que cubre tanto castellano como español americano.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wikidata Query Service&lt;/strong&gt; — endpoint SPARQL en &lt;code&gt;query.wikidata.org&lt;/code&gt;. Útil para tirar atributos canónicos de una entidad (fundador, lenguaje de programación, licencia) que luego puedes tejer en el texto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DBpedia Spotlight&lt;/strong&gt; — anota texto crudo con URIs DBpedia, con modelo dedicado para ES. Buena verificación cruzada contra resultados de Wikidata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inlinks crawler&lt;/strong&gt; — comercial, pero saca entidades a nivel de página y muestra cuáles según la NLU API de Google “poseen” tus competidores.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Verificación pre-publicación: pega el borrador en el demo de NLU de Google. Si el &lt;code&gt;salience&lt;/code&gt; pone la entidad equivocada primera (escribiste sobre WooCommerce pero “WordPress” lo supera), el artículo no tiene foco. Recorta párrafos que se desvían, o divide el post.&lt;/p&gt;
&lt;h3 id=&quot;hreflang-y-inlanguage-es-es-es-mx-y-es-419&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hreflang-y-inlanguage-es-es-es-mx-y-es-419&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hreflang y &lt;code&gt;inLanguage&lt;/code&gt;: es-ES, es-MX y es-419&lt;/h3&gt;
&lt;p&gt;Para conteúdo castellano peninsular usa &lt;code&gt;&quot;inLanguage&quot;: &quot;es-ES&quot;&lt;/code&gt; y &lt;code&gt;&amp;#x3C;html lang=&quot;es-ES&quot;&gt;&lt;/code&gt;. Para Latinoamérica generalizada, &lt;code&gt;es-419&lt;/code&gt; (el código BCP-47 oficial para español de America Latina). Para mercados específicos, &lt;code&gt;es-MX&lt;/code&gt;, &lt;code&gt;es-AR&lt;/code&gt;, &lt;code&gt;es-CO&lt;/code&gt;. El error común en sitios WordPress hispanos es etiquetar todo como &lt;code&gt;&quot;es&quot;&lt;/code&gt; sin región, lo que hace que Google reparta resultados de manera inconsistente entre SERPs de España, México, Colombia o Argentina. Si tienes una sola versión castellana orientada a España, declara &lt;code&gt;es-ES&lt;/code&gt; explícitamente; si quieres cubrir Latam con la misma copia, &lt;code&gt;es-419&lt;/code&gt; es el código correcto y emergente. Combina con hreflang en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;: &lt;code&gt;&amp;#x3C;link rel=&quot;alternate&quot; hreflang=&quot;es-ES&quot; href=&quot;...&quot;/&gt;&lt;/code&gt; y un &lt;code&gt;hreflang=&quot;x-default&quot;&lt;/code&gt; para el fallback.&lt;/p&gt;
&lt;h3 id=&quot;hacerlo-dentro-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hacerlo-dentro-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hacerlo dentro de WordPress&lt;/h3&gt;
&lt;p&gt;Para cada post, decide la entidad principal, enlázala una vez a Wikipedia o Wikidata, y refleja esa decisión en la propiedad &lt;code&gt;about&lt;/code&gt; del schema. Usa &lt;code&gt;mentions&lt;/code&gt; para el reparto secundario. Plugins que vale la pena instalar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Yoast SEO Premium&lt;/strong&gt; — escribe el grafo Article + autor/editor automáticamente y permite editar &lt;code&gt;sameAs&lt;/code&gt; en los nodos Person y Organization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rank Math&lt;/strong&gt; — expone un editor de schema por post donde estableces &lt;code&gt;about&lt;/code&gt; y &lt;code&gt;mentions&lt;/code&gt; sin tocar código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordLift&lt;/strong&gt; — el único plugin WP que reconcilia tus entidades contra Wikidata en el editor y escribe los URIs en el JSON-LD.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si corres Yoast y Rank Math al mismo tiempo, ambos inyectan schema y el Rich Results Test reporta objetos Article y Product duplicados. Elige uno. Vimos esta colisión exacta en la página GEO/LLMO: el grafo Article de Yoast y el schema Product de Rank Math se dispararon ambos, y Search Console flagueó la página hasta que se desactivó la salida de Rank Math.&lt;/p&gt;
&lt;h2 id=&quot;entidades-los-bloques-de-construccion-del-seo-semántico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entidades-los-bloques-de-construccion-del-seo-semántico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entidades: Los bloques de construccion del SEO semántico&lt;/h2&gt;
&lt;h3 id=&quot;que-es-una-entidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-una-entidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es una entidad?&lt;/h3&gt;
&lt;p&gt;Una entidad es cualquier cosa que puede ser definida de forma única e inequivoca. No es una palabra clave; es un concepto con una identidad propia en el Grafo de Conocimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplos de entidades:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; (software, Wikidata: Q131769)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WooCommerce&lt;/strong&gt; (plugin de e-commerce)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP&lt;/strong&gt; (lenguaje de programacion, Wikidata: Q59)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core Web Vitals&lt;/strong&gt; (metricas de rendimiento web)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WPPoland&lt;/strong&gt; (agencia de desarrollo WordPress)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;como-google-conecta-entidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-google-conecta-entidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como Google conecta entidades&lt;/h3&gt;
&lt;p&gt;Cuando su artículo menciona “WordPress”, “Gutenberg”, “PHP 8.3” y “Core Web Vitals”, Google no solo ve cuatro palabras clave; ve una red de entidades conectadas que juntas indican: “Este contenido trata sobre desarrollo web profesional con WordPress”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Grafo de entidades ejemplo:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[WordPress] ←→ [Gutenberg] ←→ [React]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     ↕               ↕            ↕&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[PHP 8.3] ←→ [WooCommerce] ←→ [E-commerce]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     ↕               ↕            ↕&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Core Web Vitals] ←→ [SEO] ←→ [Rendimiento Web]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;optimización-de-entidades-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-entidades-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de entidades en WordPress&lt;/h3&gt;
&lt;p&gt;Para fortalecer las señales de entidades en su contenido WordPress:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Use nombres propios y específicos&lt;/strong&gt;: “WordPress 6.8 con Gutenberg” en lugar de “el CMS”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conecte con Wikidata&lt;/strong&gt;: Referencie entidades establecidas con URLs de Wikidata en su schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cree perfiles de autor ricos&lt;/strong&gt;: Conecte autores con sus credenciales y experiencia verificable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use enlaces internos semánticos&lt;/strong&gt;: Vincule conceptos relacionados entre si de forma natural&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;schema-que-se-gana-su-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-que-se-gana-su-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema que se gana su sitio&lt;/h2&gt;
&lt;p&gt;La mayoría de sitios WordPress hispanos envían un &lt;code&gt;WebSite&lt;/code&gt;, una &lt;code&gt;Organization&lt;/code&gt; y un blob &lt;code&gt;Article&lt;/code&gt;, y se quedan ahí. Eso basta para breadcrumbs y una fecha de publicación en la SERP. No basta para participar en ranking basado en entidades. Los tipos de schema que de verdad mueven la aguja en una stack WP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Article + grafo autor/editor&lt;/strong&gt; — el nodo Article referencia un autor &lt;code&gt;Person&lt;/code&gt; y un editor &lt;code&gt;Organization&lt;/code&gt; por &lt;code&gt;@id&lt;/code&gt;. Ambos nodos llevan arrays &lt;code&gt;sameAs&lt;/code&gt; apuntando a LinkedIn, GitHub, Wikidata y el sitio personal del autor. Es la columna vertebral del E-E-A-T.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product + Offer + AggregateRating&lt;/strong&gt; — tiendas WooCommerce. &lt;code&gt;AggregateRating&lt;/code&gt; solo gana estrellas cuando &lt;code&gt;reviewCount&lt;/code&gt; es lo bastante alto para que Google confíe (en la práctica, menos de cinco reseñas se filtra). Falsearlo dispara una acción manual, no estrellas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BreadcrumbList&lt;/strong&gt; — uno de los pocos tipos de schema que aparece de forma consistente en SERPs móviles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FAQPage con &lt;code&gt;mainEntity&lt;/code&gt;&lt;/strong&gt; — sigue siendo útil para AI Overviews aunque Google deprecó FAQ rich results en SERPs regulares en 2023. Trátalo como alimento para LLMs, no como vía a links azules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HowTo&lt;/strong&gt; — solo para posts genuinamente paso-a-paso. El mal uso es la razón número uno de avisos “Eligible for HowTo, but not in the right format” en Search Console.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Person y Organization con &lt;code&gt;sameAs&lt;/code&gt;&lt;/strong&gt; — la victoria E-E-A-T más fácil que la mayoría de sitios omite. Enlaza tu autor al ID &lt;code&gt;Q&lt;/code&gt; de Wikidata si existe; si no, usa LinkedIn, ORCID para academicos o GitHub para desarrolladores.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;trampas-que-rompen-rich-results-en-la-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trampas-que-rompen-rich-results-en-la-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trampas que rompen rich results en la práctica&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;inLanguage&lt;/code&gt; ausente o ambiguo en contenido hispano&lt;/strong&gt; — si publicas un post en castellano peninsular sin &lt;code&gt;&quot;inLanguage&quot;: &quot;es-ES&quot;&lt;/code&gt;, Google a veces lo trata como traducción de baja confianza y lo filtra de las SERPs &lt;code&gt;es-ES&lt;/code&gt; específicas. El caso clásico es etiquetar como &lt;code&gt;&quot;es&quot;&lt;/code&gt; genérico y ver tráfico repartido entre España y Latam sin control. Vimos esto en tres posts donde el tema dejó &lt;code&gt;lang=&quot;es&quot;&lt;/code&gt; por defecto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Payload &lt;code&gt;@graph&lt;/code&gt; por encima de 100KB&lt;/strong&gt; — Rich Results Test descarta nodos en silencio por encima del límite. Si anidas la bio completa del autor, perfil de organización, breadcrumbs, FAQ y productos mencionados en un solo grafo, puedes pasar 100KB en un post largo. Quita texto narrativo de los campos &lt;code&gt;description&lt;/code&gt; y referencia nodos compartidos por &lt;code&gt;@id&lt;/code&gt; en lugar de inlinearlos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AggregateRating sin suficientes reseñas&lt;/strong&gt; — Google necesita volumen real para mostrar estrellas. Si &lt;code&gt;reviewCount&lt;/code&gt; es 2, recibes nada en la SERP y un aviso “ineligible” en GSC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colisión Yoast vs Rank Math en Product&lt;/strong&gt; — ambos plugins inyectan schema Product para articulos WooCommerce. Desactiva uno en &lt;code&gt;WooCommerce &gt; Ajustes &gt; Integración&lt;/code&gt; o enviarás duplicados y Search Console flagueará la página.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;preguntas-que-recibimos-de-clientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preguntas-que-recibimos-de-clientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preguntas que recibimos de clientes&lt;/h2&gt;
&lt;h3 id=&quot;cómo-sé-si-google-ve-mi-entidad-principal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-sé-si-google-ve-mi-entidad-principal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo sé si Google ve mi entidad principal?&lt;/h3&gt;
&lt;p&gt;Pasa la página por la Cloud Natural Language API de Google (el demo en &lt;code&gt;cloud.google.com/natural-language&lt;/code&gt; es gratuito para chequeos ad hoc). Mira la lista de entidades devuelta para el texto de la página. La entidad con &lt;code&gt;salience&lt;/code&gt; más alto debe ser sobre la que va el post. Si el &lt;code&gt;salience&lt;/code&gt; pone el sustantivo equivocado primero, la página tiene problema de foco — normalmente demasiadas tangentes en la introducción. Arregla la intro, retest, publica.&lt;/p&gt;
&lt;h3 id=&quot;yoast-o-rank-math-para-schema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#yoast-o-rank-math-para-schema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Yoast o Rank Math para schema?&lt;/h3&gt;
&lt;p&gt;Cualquiera funciona para el grafo Article. Yoast Premium tiene encadenamiento autor/editor más limpio y una estructura &lt;code&gt;@graph&lt;/code&gt; por defecto más sensata. Rank Math es más flexible por post y trae editores de bloques HowTo y FAQ de fábrica. La respuesta equivocada es “ambos a la vez” — chocan en schema Product y Search Console reportará objetos duplicados.&lt;/p&gt;
&lt;h3 id=&quot;mis-posts-en-español-no-obtienen-rich-results-qué-pasa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mis-posts-en-español-no-obtienen-rich-results-qué-pasa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mis posts en español no obtienen rich results. Qué pasa?&lt;/h3&gt;
&lt;p&gt;Comprueba que el JSON-LD incluye &lt;code&gt;&quot;inLanguage&quot;: &quot;es-ES&quot;&lt;/code&gt; (o &lt;code&gt;es-419&lt;/code&gt;, &lt;code&gt;es-MX&lt;/code&gt; según el target) en el nodo Article y que el atributo &lt;code&gt;&amp;#x3C;html lang=&quot;...&quot;&gt;&lt;/code&gt; coincide. Cuando estos no concuerdan, Google a menudo trata la página como traducción de baja confianza y la saca de la elegibilidad para rich results. Si etiquetas como &lt;code&gt;&quot;es&quot;&lt;/code&gt; genérico mientras tu copia es claramente peninsular, puedes acabar compitiendo contra tu propia versión latam en SERPs equivocadas.&lt;/p&gt;
&lt;h3 id=&quot;y-faqpage-si-google-retiró-faq-rich-results&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#y-faqpage-si-google-retiró-faq-rich-results&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Y FAQPage si Google retiró FAQ rich results?&lt;/h3&gt;
&lt;p&gt;Manténlo. Google quitó el tratamiento con estrellas en SERP en 2023, pero &lt;code&gt;FAQPage&lt;/code&gt; con &lt;code&gt;mainEntity&lt;/code&gt; sigue siendo consumido por AI Overviews y crawlers de Perplexity/ChatGPT. El coste es un bloque de schema; el upside es ser citable en respuestas generativas.&lt;/p&gt;
&lt;h2 id=&quot;implementación-de-schema-json-ld-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-de-schema-json-ld-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación de Schema JSON-LD en WordPress&lt;/h2&gt;
&lt;p&gt;El schema JSON-LD es el puente técnico entre su contenido WordPress y los rastreadores de búsqueda IA. Es el lenguaje que permite a los motores de búsqueda entender inequivocamente la estructura y el significado de su contenido.&lt;/p&gt;
&lt;h3 id=&quot;schema-básico-para-artículos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-básico-para-artículos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema básico para artículos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Article&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;headline&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;SEO Semantico para WordPress en 2026&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;author&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Person&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Nombre del Autor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/es/equipo/nombre-autor/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;sameAs&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &quot;https://linkedin.com/in/nombre-autor&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &quot;https://twitter.com/nombre-autor&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;publisher&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Organization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WPPoland&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;logo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ImageObject&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/logo.png&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;about&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Thing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Search Engine Optimization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;sameAs&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://www.wikidata.org/wiki/Q180711&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;datePublished&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2025-05-31&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;dateModified&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2026-03-01&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;schema-faq-para-preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-faq-para-preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema FAQ para preguntas frecuentes&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;FAQPage&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;mainEntity&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Question&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Las palabras clave todavia son relevantes en 2026?&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;acceptedAnswer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Answer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Las palabras clave son la puerta, pero la semantica es la habitacion...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;schema-howto-para-tutoriales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-howto-para-tutoriales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema HowTo para tutoriales&lt;/h3&gt;
&lt;p&gt;El schema HowTo es especialmente valioso para contenido WordPress técnico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aparece como rich snippet en resultados de búsqueda&lt;/li&gt;
&lt;li&gt;Es indexado por asistentes de voz para respuestas directas&lt;/li&gt;
&lt;li&gt;Proporciona estructura clara para rastreadores IA&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;automatizacion-de-schema-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-de-schema-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion de schema en WordPress&lt;/h3&gt;
&lt;p&gt;En 2026, los plugins modernos y el código personalizado permiten automatizar la generación de schema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RankMath/Yoast&lt;/strong&gt;: Generación automática de schema básico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema Pro&lt;/strong&gt;: Configuración avanzada sin código&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Código personalizado&lt;/strong&gt;: Control total via &lt;code&gt;wp_head&lt;/code&gt; para schemás especializados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WPGraphQL + Schema&lt;/strong&gt;: Generación dinámica basada en datos del CMS&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;autoridad-temática-la-nueva-moneda-del-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autoridad-temática-la-nueva-moneda-del-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autoridad temática: La nueva moneda del SEO&lt;/h2&gt;
&lt;h3 id=&quot;el-modelo-hub-and-spoke&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-modelo-hub-and-spoke&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El modelo Hub and Spoke&lt;/h3&gt;
&lt;p&gt;La autoridad temática no se gana con un solo artículo; se construye con un &lt;strong&gt;cluster de contenido&lt;/strong&gt; interconectado que demuestra conocimiento profundo y exhaustivo sobre un tema.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estructura Hub and Spoke para WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Hub: Desarrollo WordPress Empresarial]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── Spoke: Gutenberg y sistemas de diseño&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── Spoke: WordPress Headless con Astro&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── Spoke: Seguridad WordPress avanzada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── Spoke: WooCommerce para empresas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── Spoke: Optimización de velocidad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── Spoke: SEO semantico para WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └── Spoke: Migración de CMS propietarios&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada “spoke” enlaza de vuelta al hub y a otros spokes relacionados, creando una red de contenido que los motores de búsqueda interpretan como autoridad temática profunda.&lt;/p&gt;
&lt;h3 id=&quot;implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación en WordPress&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Páginas hub&lt;/strong&gt;: Páginas de servicio principales que actuan como centros del cluster (ej., &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;/es/desarrollador-wordpress/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artículos spoke&lt;/strong&gt;: Posts de blog que profundizan en subtemas específicos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces internos estrategicos&lt;/strong&gt;: Cada spoke enlaza al hub y a 2-3 spokes relacionados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Breadcrumbs semánticos&lt;/strong&gt;: Estructura de navegación que refleja la jerarquía temática&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taxonomías cuidadas&lt;/strong&gt;: Categorías y etiquetas que refuerzan las relaciones temáticas&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;metricas-de-autoridad-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-autoridad-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de autoridad temática&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Objetivo&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Como medirla&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cobertura temática&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;80%+ de subtemas cubiertos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mapa de contenido vs. competidores&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Profundidad por subtema&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2000+ palabras con datos originales&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Análisis de contenido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Interconexión&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;5+ enlaces internos por artículo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Screaming Frog / Ahrefs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Frescura&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Actualizado en los últimos 6 meses&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Auditoria de contenido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;E-E-A-T&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Autor experto verificable&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Perfil de autor con credenciales&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;ganancia-de-información-la-metrica-que-define-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ganancia-de-información-la-metrica-que-define-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ganancia de información: La metrica que define 2026&lt;/h2&gt;
&lt;h3 id=&quot;que-es-la-ganancia-de-información&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-la-ganancia-de-información&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es la ganancia de información?&lt;/h3&gt;
&lt;p&gt;Google ha confirmado que valora el contenido que proporciona información &lt;em&gt;nueva&lt;/em&gt; que no existe en otros resultados. Si su artículo dice exactamente lo mismo que los 10 primeros resultados, no tiene razon para posicionar.&lt;/p&gt;
&lt;h3 id=&quot;como-crear-ganancia-de-información&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-crear-ganancia-de-información&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como crear ganancia de información&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Datos originales&lt;/strong&gt;: Incluya estadísticas de sus propios proyectos, encuestas o experimentos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Casos de estudio reales&lt;/strong&gt;: Comparta resultados de implementaciónes con números concretos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perspectivas únicas&lt;/strong&gt;: Ofrezca opiniones informadas basadas en experiencia directa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frameworks originales&lt;/strong&gt;: Cree modelos o métodologías propias para resolver problemas comunes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visualizaciones&lt;/strong&gt;: Cree graficos, diagramás o tablas que sinteticen información compleja&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ejemplo-de-ganancia-de-información&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-de-ganancia-de-información&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo de ganancia de información&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Contenido generico (sin ganancia):&lt;/strong&gt;
“WordPress es rápido cuando se optimiza correctamente.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contenido con ganancia de información:&lt;/strong&gt;
“En nuestros últimos 15 proyectos de &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland, redujimos el LCP promedio de 3.2s a 0.8s. La técnica más impactante fue la implementación de edge caching con Cloudflare Workers, que por si sola redujo el TTFB en un 70%. El segundo factor fue la eliminación de plugins redundantes: el sitio promedio tenia 38 plugins, y reducimos a 12 sin perder funcionalidad.”&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;e-e-a-t-en-wordpress-implementación-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#e-e-a-t-en-wordpress-implementación-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;E-E-A-T en WordPress: Implementación práctica&lt;/h2&gt;
&lt;h3 id=&quot;experiencia-experience&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#experiencia-experience&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Experiencia (Experience)&lt;/h3&gt;
&lt;p&gt;Demuestre que tiene experiencia directa con lo que escribe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comparta capturas de pantalla de sus proyectos&lt;/li&gt;
&lt;li&gt;Incluya metricas de antes/despues&lt;/li&gt;
&lt;li&gt;Mencione herramientas y tecnologías específicas que usa&lt;/li&gt;
&lt;li&gt;Cuente historias de problemas reales y como los resolvio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;pericia-expertise&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pericia-expertise&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pericia (Expertise)&lt;/h3&gt;
&lt;p&gt;Establezca credenciales verificables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Biografias de autor detalladas con cualificaciones&lt;/li&gt;
&lt;li&gt;Links a perfiles profesionales (LinkedIn, GitHub)&lt;/li&gt;
&lt;li&gt;Certificaciones y premios relevantes&lt;/li&gt;
&lt;li&gt;Publicaciones y ponencias en conferencias&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;autoridad-authoritativeness&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autoridad-authoritativeness&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autoridad (Authoritativeness)&lt;/h3&gt;
&lt;p&gt;Construya autoridad a través de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menciones y backlinks de sitios autoritativos de la industria&lt;/li&gt;
&lt;li&gt;Contenido citado por otros expertos&lt;/li&gt;
&lt;li&gt;Presencia consistente en la comunidad WordPress&lt;/li&gt;
&lt;li&gt;Contribuciones a WordPress core o plugins populares&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;confiabilidad-trustworthiness&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#confiabilidad-trustworthiness&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Confiabilidad (Trustworthiness)&lt;/h3&gt;
&lt;p&gt;Genere confianza con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Politicas de privacidad claras y actualizadas&lt;/li&gt;
&lt;li&gt;Información de contacto verificable (&lt;a href=&quot;/es/contacto/&quot;&gt;contacto&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Reviews y testimonios de clientes reales&lt;/li&gt;
&lt;li&gt;Datos de empresa verificables (registro mercantil, dirección fisica)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;herramientas-de-seo-semántico-para-wordpress-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-seo-semántico-para-wordpress-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de SEO semántico para WordPress 2026&lt;/h2&gt;
&lt;h3 id=&quot;plugins-esenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-esenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins esenciales&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Plugin&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Función&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Precio&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;RankMath Pro&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Schema automático + SEO on-page&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$59/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WPGraphQL&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;API GraphQL para datos estructurados&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratuito&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Internal Link Juicer&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Enlaces internos automáticos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$69/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Schema Pro&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Schema avanzado sin código&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$79/año&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;herramientas-externas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-externas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas externas&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Herramienta&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Función&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Uso&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Datos de rendimiento de búsqueda&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratuito&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ahrefs/Semrush&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Análisis de autoridad temática&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pagado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Screaming Frog&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Auditoria de enlaces internos&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pagado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;InLinks&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Optimización de entidades&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Pagado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Schema Markup Validator&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Validación de datos estructurados&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratuito&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estrategia-de-contenido-semántico-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-contenido-semántico-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de contenido semántico para WordPress&lt;/h2&gt;
&lt;h3 id=&quot;planificacion-basada-en-entidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#planificacion-basada-en-entidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Planificacion basada en entidades&lt;/h3&gt;
&lt;p&gt;En lugar de planificar contenido alrededor de palabras clave, planifique alrededor de &lt;strong&gt;entidades y relaciones&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Identifique las entidades centrales de su negocio&lt;/li&gt;
&lt;li&gt;Mapee las relaciones entre entidades&lt;/li&gt;
&lt;li&gt;Identifique gaps de contenido comparando con competidores&lt;/li&gt;
&lt;li&gt;Priorice contenido que conecte entidades de forma única&lt;/li&gt;
&lt;li&gt;Cree un calendario editorial basado en clusters tematicos&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;optimización-on-page-semántica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-on-page-semántica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización on-page semántica&lt;/h3&gt;
&lt;p&gt;Para cada pieza de contenido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Título&lt;/strong&gt;: Incluya la entidad principal de forma natural&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subtitulos&lt;/strong&gt;: Use entidades relacionadas para estructurar el contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Primer parrafo&lt;/strong&gt;: Establezca el contexto semántico inmediatamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuerpo&lt;/strong&gt;: Desarrolle relaciones entre entidades con profundidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces internos&lt;/strong&gt;: Conecte con contenido de entidades relacionadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema&lt;/strong&gt;: Implemente schema JSON-LD relevante&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imágenes&lt;/strong&gt;: Alt text descriptivo que incluya entidades relevantes&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion-el-futuro-es-semántico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-el-futuro-es-semántico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: El futuro es semántico&lt;/h2&gt;
&lt;p&gt;Las palabras clave son la puerta, pero la semántica es la habitacion completa. En 2026, los sitios WordPress que dominan la búsqueda son aquellos que han construido redes ricas de contenido interconectado, respaldado por schema estructurado y creado por expertos verificables.&lt;/p&gt;
&lt;p&gt;La transicion de SEO basado en palabras clave a SEO semántico no es una tendencia pasajera; es la dirección permanente de la búsqueda. Los motores de búsqueda continuaran mejorando su comprension del significado y el contexto, y solo el contenido que sea genuinamente valioso, profundo y bien estructurado prosperara.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para dominar la búsqueda semántica con WordPress? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para disenar su estrategia de SEO semántico.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; - Estrategia completa de visibilidad&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación técnica de SEO&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Core Web Vitals como factor de ranking&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Arquitectura optimizada para SEO&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Mantenimiento continuo de SEO&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>seo</category><category domain="tag">semantic-seo</category><category domain="tag">entities</category><category domain="tag">schema-markup</category><category domain="tag">content-strategy</category><category domain="tag">google-2026</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>WordPress vs Webflow 2026: Comparación exhaustiva</title><link>https://wppoland.com/es/wordpress-vs-webflow-2026-comprehensive-comparison/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-vs-webflow-2026-comprehensive-comparison/</guid><description>WordPress o Webflow en 2026? Comparación detallada de rendimiento, SEO, flexibilidad, costes y casos de uso para ayudarle a elegir la plataforma correcta.</description><pubDate>Tue, 20 May 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;WordPress y Webflow representan dos filosofias diferentes de creación web. WordPress es la plataforma de código abierto más utilizada del mundo, con control total sobre cada aspecto de su sitio. Webflow es un constructor visual SaaS que permite a disenadores crear sitios sin escribir código. En 2026, ambas plataformas han evolucionado significativamente, pero sus diferencias fundamentales persisten.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;1-diseño-y-experiencia-de-edicion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-diseño-y-experiencia-de-edicion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Diseño y experiencia de edicion&lt;/h2&gt;
&lt;h3 id=&quot;webflow-el-paraiso-del-disenador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webflow-el-paraiso-del-disenador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webflow: El paraiso del disenador&lt;/h3&gt;
&lt;p&gt;Webflow ofrece un constructor visual que traduce directamente CSS a una interfaz grafica. Los disenadores pueden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Controlar cada propiedad CSS visualmente (flexbox, grid, animations, transitions)&lt;/li&gt;
&lt;li&gt;Crear animaciones complejas sin código&lt;/li&gt;
&lt;li&gt;Disenar responsive con breakpoints personalizados&lt;/li&gt;
&lt;li&gt;Exportar código HTML/CSS limpio (parcialmente)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La experiencia de diseño en Webflow es superior para disenadores que piensan visualmente. El constructor traduce intencion de diseño a código de forma más directa que cualquier herramienta WordPress.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-flexibilidad-ilimitada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-flexibilidad-ilimitada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: Flexibilidad ilimitada&lt;/h3&gt;
&lt;p&gt;WordPress con Gutenberg y Full Site Editing en 2026 ofrece:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editor de bloques visual con patrones predefinidos&lt;/li&gt;
&lt;li&gt;Temás de bloques con control de estilos globales&lt;/li&gt;
&lt;li&gt;Plugins de diseño (Spectra, GenerateBlocks) para layouts avanzados&lt;/li&gt;
&lt;li&gt;Control total via código para personalizaciónes ilimitadas&lt;/li&gt;
&lt;li&gt;Ecosistema de 60.000+ plugins para cualquier funcionalidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La curva de aprendizaje es mayor, pero la flexibilidad es incomparablemente superior.&lt;/p&gt;
&lt;h2 id=&quot;2-cms-y-gestión-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-cms-y-gestión-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. CMS y gestión de contenido&lt;/h2&gt;
&lt;h3 id=&quot;webflow-cms&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webflow-cms&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webflow CMS&lt;/h3&gt;
&lt;p&gt;Webflow tiene un CMS integrado con “Collections” (colecciones) que funcionan como tipos de contenido personalizados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hasta 10.000 items de CMS en el plan más alto&lt;/li&gt;
&lt;li&gt;Referencias entre colecciones (relaciones)&lt;/li&gt;
&lt;li&gt;Campos personalizados (texto, imagen, referencia, etc.)&lt;/li&gt;
&lt;li&gt;Filtros y ordenacion dinámica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10.000 items maximo (incluso en Enterprise)&lt;/li&gt;
&lt;li&gt;20 colecciones maximo por proyecto&lt;/li&gt;
&lt;li&gt;Sin soporte nativo multilingue (requiere workarounds costosos)&lt;/li&gt;
&lt;li&gt;API limitada para integraciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress-cms&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-cms&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress CMS&lt;/h3&gt;
&lt;p&gt;WordPress es un CMS completo sin limitaciones artificiales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tipos de contenido personalizados ilimitados&lt;/li&gt;
&lt;li&gt;Campos personalizados con ACF Pro, Pods o Meta Box&lt;/li&gt;
&lt;li&gt;Sin limites en cantidad de contenido&lt;/li&gt;
&lt;li&gt;REST API completa + WPGraphQL&lt;/li&gt;
&lt;li&gt;Multilingue nativo con WPML, Polylang o Weglot&lt;/li&gt;
&lt;li&gt;Taxonomías personalizadas ilimitadas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para sitios con mucho contenido (blogs, documentación, catálogos), WordPress es objetivamente superior.&lt;/p&gt;
&lt;h2 id=&quot;3-rendimiento-y-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-rendimiento-y-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Rendimiento y Core Web Vitals&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress (bien optimizado)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Webflow&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;PageSpeed móvil&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;90-100&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;80-95&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;LCP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.8-1.5s&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.0-2.0s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;INP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-100ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;80-150ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;CLS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-0.05&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0-0.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;TTFB&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-200ms&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-300ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;WordPress bien optimizado (tema de bloques + cache edge + imágenes AVIF) supera consistentemente a Webflow en rendimiento puro. Webflow ofrece rendimiento solido out-of-the-box pero con menos control para optimización avanzada.&lt;/p&gt;
&lt;p&gt;La diferencia clave: con WordPress, puede implementar &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;estrategias de optimización avanzada&lt;/a&gt; como cache edge, Speculation Rules API y carga adaptativa por dispositivo. Con Webflow, esta limitado a lo que la plataforma ofrece.&lt;/p&gt;
&lt;h2 id=&quot;4-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. SEO&lt;/h2&gt;
&lt;h3 id=&quot;wordpress-el-campeon-indiscutible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-el-campeon-indiscutible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: El campeon indiscutible&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Plugins SEO avanzados (Yoast, RankMath, SEOPress)&lt;/li&gt;
&lt;li&gt;Control total sobre metadatos, canonical URLs, hreflang&lt;/li&gt;
&lt;li&gt;Datos estructurados Schema.org personalizados&lt;/li&gt;
&lt;li&gt;Sitemaps XML nativos + plugins avanzados&lt;/li&gt;
&lt;li&gt;Control total sobre robots.txt y .htaccess&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO programatico&lt;/a&gt; a escala&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;webflow-seo-adecuado-pero-limitado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webflow-seo-adecuado-pero-limitado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webflow: SEO adecuado pero limitado&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Metadatos básicos configurables&lt;/li&gt;
&lt;li&gt;Sitemaps XML automáticos&lt;/li&gt;
&lt;li&gt;Open Graph tags&lt;/li&gt;
&lt;li&gt;301 redirects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin&lt;/strong&gt;: Datos estructurados personalizados avanzados, control granular sobre indexacion, herramientas SEO de terceros integradas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para estrategias SEO competitivas, WordPress ofrece un control significativamente superior.&lt;/p&gt;
&lt;h2 id=&quot;5-costes-comparativos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-costes-comparativos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Costes comparativos&lt;/h2&gt;
&lt;h3 id=&quot;webflow&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webflow&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webflow&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Plan&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Precio mensual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Limitaciones&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Basic&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;14 USD&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sin CMS, 50 páginas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;CMS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;23 USD&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2.000 CMS items, 1 editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Business&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;39 USD&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10.000 CMS items, 3 editores&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Enterprise&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Custom&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sin limites publicados&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Costes ocultos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editores adicionales: 7-20 USD/editor/mes&lt;/li&gt;
&lt;li&gt;Formularios: 1.000 envios gratis, luego pago&lt;/li&gt;
&lt;li&gt;CMS items adicionales: requiere upgrade de plan&lt;/li&gt;
&lt;li&gt;Integraciones: Zapier/Make para flujos complejos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Coste mensual tipico&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Software&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0 EUR (gratis)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Hosting gestionado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;15-100 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Plugins premium&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10-50 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mantenimiento&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-200 EUR (opcional)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total tipico&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;75-350 EUR&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para sitios pequeños, los costes son comparables. Para sitios medianos y grandes, WordPress es consistentemente más economico gracias a la ausencia de limites artificiales y costes por editor.&lt;/p&gt;
&lt;h2 id=&quot;6-vendor-lock-in-y-portabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-vendor-lock-in-y-portabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Vendor lock-in y portabilidad&lt;/h2&gt;
&lt;h3 id=&quot;webflow-lock-in-significativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webflow-lock-in-significativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webflow: Lock-in significativo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No puede exportar su sitio completo&lt;/strong&gt; para alojarlo en otro lugar&lt;/li&gt;
&lt;li&gt;Si deja Webflow, debe reconstruir todo desde cero&lt;/li&gt;
&lt;li&gt;Dependencia total de la plataforma para hosting, CMS y funcionalidad&lt;/li&gt;
&lt;li&gt;Si Webflow sube precios, no tiene alternativa fácil&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress-libertad-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-libertad-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: Libertad total&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Código abierto, propiedad completa&lt;/li&gt;
&lt;li&gt;Puede migrar a cualquier hosting en cualquier momento&lt;/li&gt;
&lt;li&gt;Exportacion completa de contenido y base de datos&lt;/li&gt;
&lt;li&gt;Sin dependencia de ningun proveedor específico&lt;/li&gt;
&lt;li&gt;Puede &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migrar a frameworks modernos&lt;/a&gt; como Astro o Next.js&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;7-integraciones-y-extensibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-integraciones-y-extensibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Integraciones y extensibilidad&lt;/h2&gt;
&lt;h3 id=&quot;webflow-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webflow-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webflow&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Integraciones nativas limitadas&lt;/li&gt;
&lt;li&gt;Zapier/Make para automatizaciones&lt;/li&gt;
&lt;li&gt;API limitada (solo lectura del CMS)&lt;/li&gt;
&lt;li&gt;Sin ecosistema de plugins&lt;/li&gt;
&lt;li&gt;Código personalizado limitado (snippets de JS en páginas específicas)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;60.000+ plugins para cualquier funcionalidad&lt;/li&gt;
&lt;li&gt;REST API completa (lectura + escritura)&lt;/li&gt;
&lt;li&gt;WPGraphQL para consultas eficientes&lt;/li&gt;
&lt;li&gt;Webhooks personalizados&lt;/li&gt;
&lt;li&gt;Código personalizado ilimitado&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce&lt;/a&gt; para comercio electronico completo&lt;/li&gt;
&lt;li&gt;Integración con cualquier servicio via API&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;8-casos-de-uso-quien-deberia-elegir-que&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-casos-de-uso-quien-deberia-elegir-que&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Casos de uso: Quien deberia elegir que&lt;/h2&gt;
&lt;h3 id=&quot;elija-webflow-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-webflow-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija Webflow si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Es un disenador que no programa y quiere control visual pixel-perfect&lt;/li&gt;
&lt;li&gt;Su sitio es relativamente simple (&amp;#x3C; 50 páginas, sin blog grande)&lt;/li&gt;
&lt;li&gt;No necesita plugins WordPress específicos&lt;/li&gt;
&lt;li&gt;Tiene presupuesto para los planes premium de Webflow&lt;/li&gt;
&lt;li&gt;No le preocupa el vendor lock-in&lt;/li&gt;
&lt;li&gt;Su audiencia esta concentrada en una region/idioma&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-wordpress-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-wordpress-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija WordPress si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Necesita control total sobre cada aspecto del sitio&lt;/li&gt;
&lt;li&gt;SEO avanzado es una prioridad estrategica&lt;/li&gt;
&lt;li&gt;Tiene o planea tener mucho contenido (blog, documentación)&lt;/li&gt;
&lt;li&gt;Necesita funcionalidades específicas (comercio electronico, membresias, foros)&lt;/li&gt;
&lt;li&gt;Requiere integraciones complejas con sistemas empresariales&lt;/li&gt;
&lt;li&gt;Opera en multiples idiomas/mercados&lt;/li&gt;
&lt;li&gt;Quiere independencia de proveedores y portabilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;elija-ambos-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elija-ambos-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elija ambos si:&lt;/h3&gt;
&lt;p&gt;Algunas empresas usan Webflow para landing pages de marketing de alta conversión y WordPress para el blog, la documentación y el contenido SEO. Esta configuración hibrida puede funcionar cuando ambas plataformas se gestionan de forma independiente.&lt;/p&gt;
&lt;h2 id=&quot;9-el-futuro-de-ambas-plataformas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-el-futuro-de-ambas-plataformas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. El futuro de ambas plataformas&lt;/h2&gt;
&lt;h3 id=&quot;webflow-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#webflow-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Webflow en 2026+&lt;/h3&gt;
&lt;p&gt;Webflow esta invirtiendo en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Localización nativa (multilingue)&lt;/li&gt;
&lt;li&gt;Memberships y comercio electronico&lt;/li&gt;
&lt;li&gt;Colaboración en equipo&lt;/li&gt;
&lt;li&gt;IA para generación de diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero sigue siendo fundamentalmente una plataforma cerrada con limites artificiales.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress en 2026+&lt;/h3&gt;
&lt;p&gt;WordPress evoluciona hacia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Full Site Editing completamente maduro&lt;/li&gt;
&lt;li&gt;IA integrada en el nucleo (Abilities API)&lt;/li&gt;
&lt;li&gt;WordPress como plataforma de aplicaciones (no solo CMS)&lt;/li&gt;
&lt;li&gt;Headless y composable como primera opción&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WordPress mantiene su ventaja fundamental: es código abierto, extensible sin limites y propiedad del usuario.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;En 2026, WordPress y Webflow sirven a audiencias diferentes. Webflow es excelente para disenadores que necesitan prototipado rápido y sitios visualmente impactantes sin código. WordPress es superior para empresas que necesitan control total, SEO avanzado, escalabilidad ilimitada y portabilidad de datos.&lt;/p&gt;
&lt;p&gt;Para la mayoria de las empresas que toman decisiones a largo plazo, WordPress ofrece mejor valor, mayor flexibilidad y menor riesgo. Si necesita ayuda para implementar WordPress o migrar desde Webflow, contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación a medida&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Migración desde Webflow&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Rendimiento superior&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; - Ventaja SEO con WordPress&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">wordpress-vs-webflow</category><category domain="tag">cms-comparison</category><category domain="tag">web-design</category><category domain="tag">no-code</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/wordpress-security-why-updates-and-security-measures-are-crucial.jpg" type="image/jpeg"/></item><item><title>Arquitectura Headless de WordPress en 2026: La guía definitiva para empresas</title><link>https://wppoland.com/es/headless-wordpress-architecture-2026-enterprise-guide/</link><guid isPermaLink="true">https://wppoland.com/es/headless-wordpress-architecture-2026-enterprise-guide/</guid><description>Es el desacoplamiento adecuado para ti? Esta guía de más de 2500 palabras explora lo más avanzado de WordPress Headless: Next.js, GraphQL y Edge Delivery en 2026.</description><pubDate>Sun, 18 May 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;En 2026, la pregunta ya no es &quot;Por que Headless?&quot; sino &quot;Como escalarlo?&quot;. Durante años, la contrapartida de la flexibilidad de &lt;strong&gt;WordPress Headless&lt;/strong&gt; (también conocido como WordPress Desacoplado) era la perdida de funciones nativas como vistas previas en vivo, compatibilidad de plugins y simplicidad SEO.&lt;/p&gt;
&lt;p&gt;Para 2026, esas contrapartidas se han resuelto en gran medida. Con el auge del ecosistema &lt;strong&gt;WP Engine Faust.js&lt;/strong&gt; y los pipelines avanzados de &lt;strong&gt;Gutenberg-a-JSON&lt;/strong&gt;, las marcas empresariales estan eligiendo headless para escapar de las limitaciones del motor de temas tradicional mientras mantienen el editor CMS más poderoso del mundo.&lt;/p&gt;
&lt;p&gt;En esta guía exhaustiva de más de 2500 palabras, analizamos las decisiones arquitectonicas que definen proyectos exitosos de WordPress Headless.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-por-que-ir-headless-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-por-que-ir-headless-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Por que ir Headless en 2026?&lt;/h2&gt;
&lt;p&gt;El movimiento hacia headless esta impulsado por tres necesidades primarias que las grandes organizaciónes ya no pueden ignorar:&lt;/p&gt;
&lt;h3 id=&quot;entrega-multicanal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entrega-multicanal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entrega multicanal&lt;/h3&gt;
&lt;p&gt;Tu contenido necesita vivir en tu sitio web, tu aplicación móvil, tus kioscos digitales e incluso tus integraciones de hogar inteligente con IA. WordPress Headless sirve como una “Fuente Única de Verdad” donde el contenido se crea y gestiona una vez, pero se distribuye a través de cualquier canal digital.&lt;/p&gt;
&lt;p&gt;En la práctica, esto significa que el equipo editorial escribe un artículo una vez en WordPress, y ese contenido se muestra automáticamente en el sitio web (via Next.js), en la app móvil (via React Native), en las pantallas de la oficina (via una app de señalizacion digital) y en las respuestas del chatbot de IA (via API). Sin duplicacion, sin inconsistencias.&lt;/p&gt;
&lt;h3 id=&quot;totalitarismo-frontend&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#totalitarismo-frontend&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Totalitarismo frontend&lt;/h3&gt;
&lt;p&gt;Los diseñadores y desarrolladores quieren la libertad de usar React, Vue o Svelte sin las restricciones del ecosistema PHP de WordPress. En 2026, los equipos frontend esperan poder usar las últimás herramientas y patrones (Server Components, Streaming SSR, Partial Prerendering) sin esperar a que el ecosistema de temas de WordPress los adopte.&lt;/p&gt;
&lt;p&gt;Esta separacion también permite que los equipos frontend y backend trabajen en paralelo. El equipo de contenido sigue usando el familiar editor de WordPress mientras el equipo de desarrollo evoluciona el frontend de manera independiente.&lt;/p&gt;
&lt;h3 id=&quot;seguridad-a-través-de-desacoplamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-a-través-de-desacoplamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad a través de desacoplamiento&lt;/h3&gt;
&lt;p&gt;Al desacoplar el frontend de la base de datos backend, reduces la superficie de ataque. En 2026, un frontend comprometido no puede directamente comprometer tus datos sensibles de clientes en el CMS. El backend de WordPress existe en una red privada, inaccesible desde la internet pública.&lt;/p&gt;
&lt;p&gt;Conoce más sobre nuestra &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-el-stack-técnico-nextjs-16-y-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-stack-técnico-nextjs-16-y-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El stack técnico: Next.js 16 y WordPress&lt;/h2&gt;
&lt;p&gt;Next.js se ha convertido en el estándar de facto para frontends de WordPress Headless en 2026, y por buenas razones.&lt;/p&gt;
&lt;h3 id=&quot;partial-prerendering-ppr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#partial-prerendering-ppr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Partial Prerendering (PPR)&lt;/h3&gt;
&lt;p&gt;Usamos PPR para mantener el 90% de la página estatica (super rápida) mientras mantenemos areas dinámicas (como carritos de usuario o saludos personalizados) interactivas. PPR combina lo mejor de la generación estatica (velocidad) con la renderizacion del lado del servidor (datos frescos) en una única página.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo de PPR en Next.js 16&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ProductPage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;params&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Esta parte es estatica (pre-renderizada en build)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getProduct&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(params.slug);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;StaticProductInfo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{product} /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Esta parte es dinamica (renderizada en el servidor por request) */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Suspense&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fallback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;CartSkeleton&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;}&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;DynamicCart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; userId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;cookies&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;userId&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)} /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Suspense&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;server-actions&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#server-actions&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Server Actions&lt;/h3&gt;
&lt;p&gt;Manejamos envios de formularios e inicios de sesion de usuarios directamente a través de la lógica del lado del servidor de Next.js, comunicandose de forma segura con la WordPress REST API. Esto elimina la necesidad de endpoints API personalizados para operaciones comunes como enviar formularios de contacto, suscribirse a newsletters o procesar comentarios.&lt;/p&gt;
&lt;h3 id=&quot;streaming-ssr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#streaming-ssr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Streaming SSR&lt;/h3&gt;
&lt;p&gt;Next.js 16 soporta streaming de HTML desde el servidor, lo que significa que el navegador puede empezar a renderizar contenido antes de que toda la página haya terminado de generarse. Esto mejora dramaticamente el LCP y la percepcion de velocidad para páginas con datos complejos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-orquestacion-de-datos-el-auge-de-wpgraphql&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-orquestacion-de-datos-el-auge-de-wpgraphql&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Orquestacion de datos: El auge de WPGraphQL&lt;/h2&gt;
&lt;p&gt;Mientras la REST API sigue siendo la base del nucleo de WordPress, &lt;strong&gt;WPGraphQL&lt;/strong&gt; es la herramienta preferida por los arquitectos de 2026.&lt;/p&gt;
&lt;h3 id=&quot;sin-over-fetching&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sin-over-fetching&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sin over-fetching&lt;/h3&gt;
&lt;p&gt;En lugar de obtener 50 campos cuando solo necesitas un título y una miniatura, solicitas exactamente lo que necesitas. Esto reduce dramaticamente el tamaño de las respuestas de API y el tiempo de procesamiento tanto en el servidor como en el clientes.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;graphql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# REST API devolveria TODOS los campos del post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# GraphQL devuelve SOLO lo que pedimos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; GetBlogPosts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;first&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    nodes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      excerpt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      featuredImage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          sourceUrl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; MEDIUM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          altText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          avatar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;            url&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;esquemás-tipados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#esquemás-tipados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Esquemás tipados&lt;/h3&gt;
&lt;p&gt;GraphQL proporciona un esquema estricto, asegurando que tus desarrolladores frontend siempre sepan exactamente que datos estan recibiendo. Esto elimina una clase entera de bugs causados por suposiciones incorrectas sobre la estructura de datos.&lt;/p&gt;
&lt;h3 id=&quot;batching-de-consultas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#batching-de-consultas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Batching de consultas&lt;/h3&gt;
&lt;p&gt;WPGraphQL permite combinar multiples consultas en una única solicitud HTTP. En lugar de 5 llamadas API separadas para obtener el post, el autor, las categorías, los comentarios y los posts relacionados, todo se obtiene en una sola consulta. Esto reduce la latencia y mejora el rendimiento del servidor.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-el-dilema-de-gutenberg-procesando-bloques-para-react&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-el-dilema-de-gutenberg-procesando-bloques-para-react&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. El dilema de Gutenberg: Procesando bloques para React&lt;/h2&gt;
&lt;p&gt;Uno de los mayores obstaculos historicamente era renderizar contenido de Gutenberg en un entorno headless. En 2023, el contenido de bloques se enviaba como HTML serializado, lo que eliminaba todas las ventajas de usar un framework frontend moderno.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-de-2026-block-to-component-mapping&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-de-2026-block-to-component-mapping&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución de 2026: Block-to-Component Mapping&lt;/h3&gt;
&lt;p&gt;Usamos “Mapeo de Bloque a Componente”. Cada bloque de WordPress (Parrafo, Imagen, Tarjeta Personalizada) se serializa en un objeto JSON limpio. En el lado de Next.js, tenemos un componente React correspondiente para cada bloque.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mapeo de bloques WordPress a componentes React&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; blockComponents&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;core/paragraph&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: ParagraphBlock,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;core/image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: ImageBlock,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;core/heading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: HeadingBlock,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;custom/pricing-table&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: PricingTableBlock,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;custom/testimonial&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: TestimonialBlock,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;woocommerce/product-grid&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: ProductGridBlock,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; BlockRenderer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;blocks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; blocks.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Component&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; blockComponents[block.name];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Component) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Component&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{index} {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;block.attributes} /&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;bibliotecas-de-componentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bibliotecas-de-componentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bibliotecas de componentes&lt;/h3&gt;
&lt;p&gt;Esto asegura que la experiencia de edicion del usuario en WordPress coincida perfectamente con la realidad del frontend. Lo que el editor ve en Gutenberg es exactamente lo que el visitante ve en el sitio publicado, renderizado con componentes React optimizados para rendimiento.&lt;/p&gt;
&lt;h3 id=&quot;vista-previa-en-tiempo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#vista-previa-en-tiempo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Vista previa en tiempo real&lt;/h3&gt;
&lt;p&gt;En 2026, el problema de las vistas previas esta resuelto. Frameworks como Faust.js de WP Engine proporcionan vistas previas en tiempo real donde los editores pueden ver exactamente como se vera su contenido en el frontend Next.js mientras editan en WordPress. Esto era el mayor punto de dolor de los primeros proyectos headless, y su resolución ha eliminado una barrera significativa de adopcion.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-escalando-regionalmente-entrega-edge-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-escalando-regionalmente-entrega-edge-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Escalando regionalmente: Entrega Edge global&lt;/h2&gt;
&lt;p&gt;No solo alojamos el frontend en Vercel o Netlify. Usamos &lt;strong&gt;Orquestacion de Contenido Edge&lt;/strong&gt; para asegurar que cada usuario en el mundo reciba contenido desde el servidor más cercano.&lt;/p&gt;
&lt;h3 id=&quot;datos-en-el-edge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#datos-en-el-edge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Datos en el Edge&lt;/h3&gt;
&lt;p&gt;Cacheamos nuestras respuestas GraphQL en el edge (nodo CDN). Un usuario en Madrid obtiene sus datos desde un servidor en Madrid, no desde una base de datos en Nueva York. Esta estrategia reduce el TTFB a menos de 50ms para el 99% de los usuarios globales.&lt;/p&gt;
&lt;h3 id=&quot;stale-while-revalidate-swr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stale-while-revalidate-swr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Stale-While-Revalidate (SWR)&lt;/h3&gt;
&lt;p&gt;Servimos el contenido anterior instantaneamente mientras en segundo plano se reconstruye la página si se hizo un cambio en el CMS. Esto asegura que los usuarios siempre vean &lt;em&gt;algo&lt;/em&gt; inmediatamente, sin esperar a que se genere una página fresca.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Configuración de cache SWR en el Edge&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  runtime: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edge&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; handler&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(cachedContent, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    headers: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &apos;Cache-Control&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;s-maxage=60, stale-while-revalidate=3600&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &apos;CDN-Cache-Control&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;max-age=60, stale-while-revalidate=86400&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;invalidacion-inteligente-de-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#invalidacion-inteligente-de-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Invalidacion inteligente de cache&lt;/h3&gt;
&lt;p&gt;Cuando un editor pública o actualiza contenido en WordPress, webhooks disparan la invalidacion selectiva de cache solo para las páginas afectadas. No necesitamos reconstruir todo el sitio - solo las páginas que cambiaron y sus dependencias (como la página de inicio o las páginas de categoría).&lt;/p&gt;
&lt;h3 id=&quot;multi-region-para-latinoamerica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multi-region-para-latinoamerica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multi-region para Latinoamerica&lt;/h3&gt;
&lt;p&gt;Para sitios que sirven a mercados hispanohablantes, recomendamos puntos de presencia Edge en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sao Paulo&lt;/strong&gt;: Para Brasil y Sudamerica oriental&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Miami&lt;/strong&gt;: Para Centroamerica y el Caribe&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Madrid&lt;/strong&gt;: Para España&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ciudad de Mexico&lt;/strong&gt;: Para Mexico y Centroamerica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-autenticación-y-seguridad-en-arquitecturas-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-autenticación-y-seguridad-en-arquitecturas-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Autenticación y seguridad en arquitecturas Headless&lt;/h2&gt;
&lt;p&gt;La seguridad en WordPress Headless es fundamentalmente diferente a la seguridad en WordPress tradicional.&lt;/p&gt;
&lt;h3 id=&quot;jwt-con-rotacion-automática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#jwt-con-rotacion-automática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;JWT con rotacion automática&lt;/h3&gt;
&lt;p&gt;Los tokens JWT (JSON Web Tokens) se utilizan para autenticar solicitudes entre el frontend y el backend WordPress. En 2026, las mejores prácticas requieren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tokens de acceso con expiracion corta (5-15 minutos)&lt;/li&gt;
&lt;li&gt;Tokens de refresco con expiracion más larga (7 dias)&lt;/li&gt;
&lt;li&gt;Rotacion automática de tokens de refresco en cada uso&lt;/li&gt;
&lt;li&gt;Almacenamiento seguro de tokens (HttpOnly cookies, no localStorage)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;api-keys-con-alcance-limitado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#api-keys-con-alcance-limitado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;API Keys con alcance limitado&lt;/h3&gt;
&lt;p&gt;Cada servicio que se conecta al backend WordPress tiene su propia API key con permisos minimos. El frontend público solo puede leer contenido publicado. El servicio de vistas previas puede leer borradores pero no publicar. El servicio de webhooks puede invalidar cache pero no modificar contenido.&lt;/p&gt;
&lt;h3 id=&quot;rate-limiting-y-protección-ddos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rate-limiting-y-protección-ddos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rate limiting y protección DDoS&lt;/h3&gt;
&lt;p&gt;Las APIs expuestas deben tener rate limiting estricto para prevenir abuso. Implementamos limites por endpoint, por IP y por token, con respuestas 429 automáticas cuando se superan los limites.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-cuando-no-ir-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-cuando-no-ir-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Cuando NO ir Headless&lt;/h2&gt;
&lt;p&gt;Es importante ser honesto: WordPress Headless no es la respuesta correcta para todos.&lt;/p&gt;
&lt;h3 id=&quot;no-vayas-headless-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#no-vayas-headless-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;No vayas Headless si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tu equipo no tiene experiencia con React/Next.js&lt;/li&gt;
&lt;li&gt;Tu presupuesto es limitado (el desarrollo headless cuesta 2-5x mas)&lt;/li&gt;
&lt;li&gt;Tu sitio es principalmente un blog o sitio de contenido simple&lt;/li&gt;
&lt;li&gt;No necesitas entrega multicanal&lt;/li&gt;
&lt;li&gt;Tu equipo editorial necesita funcionalidad de plugins del lado del frontend (como formularios de Gravity Forms renderizados con PHP)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ve-headless-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ve-headless-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ve Headless si:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Necesitas entregar contenido en web, app móvil y otros canales&lt;/li&gt;
&lt;li&gt;El rendimiento es un requisito crítico de negocio&lt;/li&gt;
&lt;li&gt;Tu equipo de desarrollo tiene experiencia frontend solida&lt;/li&gt;
&lt;li&gt;La seguridad es una prioridad maxima (industrias reguladas)&lt;/li&gt;
&lt;li&gt;Necesitas independencia entre equipos frontend y backend&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-por-que-wppoland-es-tu-arquitecto-de-wordpress-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-por-que-wppoland-es-tu-arquitecto-de-wordpress-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Por que WPPoland es tu arquitecto de WordPress Headless&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, somos pioneros del movimiento Desacoplado en el mercado hispanohablante.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Diseño de arquitectura personalizada&lt;/strong&gt;: No creemos en “talla única”. Diseñamos la relación API-Frontend para coincidir con tus objetivos de negocio específicos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Auditorias de rendimiento (100/100)&lt;/strong&gt;: Aseguramos que tu sitio headless no solo se “sienta” rápido sino que alcance puntuaciones Lighthouse perfectas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Seguridad empresarial&lt;/strong&gt;: Implementamos autenticación OIDC y basada en JWT para mantener tus flujos de trabajo headless seguros. Conoce más sobre nuestra &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Migración desde WordPress tradicional&lt;/strong&gt;: Si ya tienes un sitio WordPress tradicional, diseñamos estrategias de migración incremental que minimizan el riesgo y mantienen el SEO intacto durante la transicion.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-el-poder-de-la-libertad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-el-poder-de-la-libertad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: El poder de la libertad&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración de sitios web a Astro y Next.js&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;WordPress Headless en 2026 es la plataforma definitiva para marcas que se niegan a comprometer. Combina la mejor experiencia de gestión de contenido del mundo con la mejor tecnología frontend del mundo. Al dominar el stack &lt;strong&gt;Next.js + GraphQL + Edge&lt;/strong&gt;, aseguras que tu presencia digital sea a prueba de futuro e hiper-rendimiento.&lt;/p&gt;
&lt;p&gt;La libertad de elegir tu propia tecnología frontend, combinada con la madurez y robustez de WordPress como backend de contenido, crea una combinación que ningun otro CMS puede igualar. Y con las herramientas y prácticas de 2026 - PPR, Server Actions, WPGraphQL, Edge Caching - los dolores de cabeza históricos de headless se han convertido en recuerdos del pasado.&lt;/p&gt;
&lt;p&gt;El futuro del desarrollo web empresarial es desacoplado, y WordPress Headless esta en el centro de esa transformación.&lt;/p&gt;
&lt;p&gt;Si consideras Astro como tu frontend headless, descubre &lt;a href=&quot;/es/desarrollador-astro/&quot;&gt;mis servicios de desarrollo con Astro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para desacoplar tu WordPress? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para una consultoria estrategica sobre tu arquitectura 2026.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>architecture</category><category domain="tag">headless-wordpress</category><category domain="tag">graphql</category><category domain="tag">nextjs</category><category domain="tag">decoupled-cms</category><category domain="tag">api-first</category><enclosure url="https://wppoland.com/images/og/wordpress-security-why-updates-and-security-measures-are-crucial.jpg" type="image/jpeg"/></item><item><title>EAA y WCAG 2.1: como implementar la accesibilidad digital</title><link>https://wppoland.com/es/european-accessibility-act-eaa-wcag-21/</link><guid isPermaLink="true">https://wppoland.com/es/european-accessibility-act-eaa-wcag-21/</guid><description>Desde el 28 de junio de 2025, todos los sitios web de la UE deben cumplir con EAA y WCAG 2.1 AA. Conoce los requisitos, el proceso de implementación y los beneficios de la accesibilidad digital.</description><pubDate>Fri, 16 May 2025 06:12:29 GMT</pubDate><content:encoded>&lt;h2 id=&quot;que-es-la-ley-europea-de-accesibilidad-eaa-y-wcag-21&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-la-ley-europea-de-accesibilidad-eaa-y-wcag-21&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es la Ley Europea de Accesibilidad (EAA) y WCAG 2.1?&lt;/h2&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Desde el &lt;strong&gt;28 de junio de 2025&lt;/strong&gt;, todos los sitios web y aplicaciones disponibles en el mercado de la UE deben cumplir con la &lt;strong&gt;Ley Europea de Accesibilidad (EAA)&lt;/strong&gt;. Esto significa implementar el &lt;strong&gt;estándar WCAG 2.1 AA&lt;/strong&gt; - un conjunto de directrices que hacen que el contenido digital sea accesible para personas con diversas discapacidades, personas mayores y todos los usuarios que puedan encontrar dificultades temporales al usar internet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WCAG 2.1&lt;/strong&gt; (Directrices de Accesibilidad para el Contenido Web) es un estándar internacional que define como disenar y codificar sitios web para que sean &lt;em&gt;perceptibles, operables, comprensibles y robustos&lt;/em&gt;. La EAA introduce estas directrices como legalmente vinculantes en toda la Union Europea, con graves consecuencias financieras y legales por incumplimiento.&lt;/p&gt;
&lt;h2 id=&quot;por-que-es-tan-importante-la-accesibilidad-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-es-tan-importante-la-accesibilidad-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que es tan importante la accesibilidad digital?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El 15% de la poblacion de la UE&lt;/strong&gt; son personas con discapacidades - un enorme grupo de clientes potenciales y usuarios de tu sitio.&lt;/li&gt;
&lt;li&gt;La accesibilidad digital no es solo para personas con limitaciones permanentes. Las personas mayores, personas con lesiones temporales, trastornos de concentracion o usuarios de dispositivos móviles también se benefician.&lt;/li&gt;
&lt;li&gt;Una mejor accesibilidad significa &lt;strong&gt;mejor experiencia de usuario (UX)&lt;/strong&gt; para todos - navegación más simple, contenido más legible, interfaz intuitiva.&lt;/li&gt;
&lt;li&gt;Mejores clasificaciónes en Google - muchos requisitos WCAG se solapan con las mejores prácticas SEO (responsividad, estructura lógica, atributos ALT).&lt;/li&gt;
&lt;li&gt;Mayor conversión y engagement - checkout más fácil, formularios claros, mejor atención al clientes.&lt;/li&gt;
&lt;li&gt;Construccion de una &lt;strong&gt;imagen de marca positiva&lt;/strong&gt; como empresa socialmente responsable y moderna.&lt;/li&gt;
&lt;li&gt;Minimizacion del riesgo legal y financiero - las sanciones por incumplimiento de la EAA pueden alcanzar los &lt;strong&gt;500.000 euros&lt;/strong&gt; o mas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;que-significa-el-cumplimiento-de-wcag-21-aa-en-la-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-el-cumplimiento-de-wcag-21-aa-en-la-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa el cumplimiento de WCAG 2.1 AA en la práctica?&lt;/h2&gt;
&lt;p&gt;Ejemplos de requisitos a implementar en un sitio web:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Navegación por teclado&lt;/strong&gt; - todo el sitio debe ser operable sin un raton.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compatibilidad con lectores de pantalla&lt;/strong&gt; - marcado HTML correcto, encabezados, descripciones de imágenes (ALT), etiquetas de formulario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contraste de color adecuado&lt;/strong&gt; - texto legible para usuarios con discapacidad visual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subtitulos y transcripciones para contenido de video y audio&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estructura de contenido clara&lt;/strong&gt; - uso correcto de encabezados, disposicion lógica de secciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retroalimentacion de errores en formularios&lt;/strong&gt; - mensajes claros y orientacion sobre como corregir errores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PDFs y otros documentos accesibles&lt;/strong&gt; - correctamente formateados, legibles por lectores de pantalla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responsividad&lt;/strong&gt; - el sitio funciona correctamente en varios dispositivos y resoluciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;los-cuatro-principios-de-wcag-21&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-cuatro-principios-de-wcag-21&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los cuatro principios de WCAG 2.1&lt;/h2&gt;
&lt;p&gt;WCAG se organiza alrededor de cuatro principios fundamentales conocidos como POUR:&lt;/p&gt;
&lt;h3 id=&quot;1-perceptible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-perceptible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Perceptible&lt;/h3&gt;
&lt;p&gt;La información y los componentes de la interfaz deben ser presentados de formás que los usuarios puedan percibir. Esto significa que la información no puede ser invisible para todos los sentidos de un usuario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requisitos practicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alternativas de texto para todo contenido no textual&lt;/li&gt;
&lt;li&gt;Subtitulos y audiodescripcion para contenido multimedia&lt;/li&gt;
&lt;li&gt;Contenido que se puede presentar de diferentes formás sin perder información&lt;/li&gt;
&lt;li&gt;Contenido que sea fácil de ver y escuchar&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-operable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-operable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Operable&lt;/h3&gt;
&lt;p&gt;Los componentes de la interfaz y la navegación deben ser operables. La interfaz no puede requerir interacciones que un usuario no pueda realizar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requisitos practicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Toda la funcionalidad accesible desde teclado&lt;/li&gt;
&lt;li&gt;Tiempo suficiente para leer y usar el contenido&lt;/li&gt;
&lt;li&gt;Sin contenido que cause convulsiones o reacciones fisicas&lt;/li&gt;
&lt;li&gt;Formás de ayudar a los usuarios a navegar y encontrar contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-comprensible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-comprensible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Comprensible&lt;/h3&gt;
&lt;p&gt;La información y el manejo de la interfaz de usuario deben ser comprensibles. Los usuarios deben poder entender la información y la operación de la interfaz.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requisitos practicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Texto legible y comprensible&lt;/li&gt;
&lt;li&gt;Las páginas web aparecen y operan de forma predecible&lt;/li&gt;
&lt;li&gt;Ayuda a los usuarios a evitar y corregir errores&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;4-robusto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-robusto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Robusto&lt;/h3&gt;
&lt;p&gt;El contenido debe ser lo suficientemente robusto para ser interpretado de forma fiable por una amplia variedad de agentes de usuario, incluidas las tecnologías de asistencia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requisitos practicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compatibilidad con tecnologías actuales y futuras&lt;/li&gt;
&lt;li&gt;Código HTML válido y semántico&lt;/li&gt;
&lt;li&gt;Roles ARIA correctamente implementados&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;implementación-práctica-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-práctica-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación práctica para WordPress&lt;/h2&gt;
&lt;h3 id=&quot;auditoria-inicial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-inicial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria inicial&lt;/h3&gt;
&lt;p&gt;Antes de hacer cambios, realiza una auditoria completa de accesibilidad:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Herramientas automatizadas&lt;/strong&gt;: Usa WAVE, axe DevTools o Lighthouse para identificar problemas técnicos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas manuales&lt;/strong&gt;: Navega el sitio solo con teclado, prueba con lectores de pantalla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision de contenido&lt;/strong&gt;: Verifica que todas las imágenes tienen ALT, los formularios tienen etiquetas, los videos tienen subtitulos&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;correcciones-prioritarias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#correcciones-prioritarias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Correcciones prioritarias&lt;/h3&gt;
&lt;p&gt;Ordena las correcciones por impacto y riesgo legal:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Prioridad&lt;/th&gt;&lt;th&gt;Problema&lt;/th&gt;&lt;th&gt;Impacto&lt;/th&gt;&lt;th&gt;Solución&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Crítica&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sin navegación por teclado&lt;/td&gt;&lt;td&gt;Usuarios bloqueados completamente&lt;/td&gt;&lt;td&gt;Corregir focus states y tab order&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sin textos ALT&lt;/td&gt;&lt;td&gt;Imágenes invisibles para lectores de pantalla&lt;/td&gt;&lt;td&gt;Agregar ALT descriptivo a todas las imágenes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Bajo contraste&lt;/td&gt;&lt;td&gt;Texto ilegible para muchos usuarios&lt;/td&gt;&lt;td&gt;Ajustar colores a ratio minimo 4.5:1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Media&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sin etiquetas de formulario&lt;/td&gt;&lt;td&gt;Formularios inutilizables con asistencia&lt;/td&gt;&lt;td&gt;Agregar etiquetas HTML correctas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Media&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sin subtitulos en video&lt;/td&gt;&lt;td&gt;Contenido multimedia inaccesible&lt;/td&gt;&lt;td&gt;Agregar subtitulos SRT/VTT&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;plugins-de-wordpress-para-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-de-wordpress-para-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins de WordPress para accesibilidad&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP Accessibility&lt;/strong&gt;: Corrige problemas comunes de accesibilidad automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One Click Accessibility&lt;/strong&gt;: Barra de herramientas de accesibilidad para usuarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AccessiBe&lt;/strong&gt;: Solución automatizada (con limitaciones)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UserWay&lt;/strong&gt;: Widget de accesibilidad con IA&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;temás-wordpress-accesibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#temás-wordpress-accesibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Temás WordPress accesibles&lt;/h3&gt;
&lt;p&gt;Elige temas que esten etiquetados como “accessibility-ready” en el repositorio de WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Twenty Twenty-Six&lt;/strong&gt;: El tema por defecto, excelente accesibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GeneratePress&lt;/strong&gt;: Ligero y accesible por defecto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flavflavor Theme&lt;/strong&gt;: Disenado específicamente para accesibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Starter Theme de Underscores&lt;/strong&gt;: Base limpia para desarrollo accesible&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;costos-de-implementación-vs-costos-de-incumplimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#costos-de-implementación-vs-costos-de-incumplimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Costos de implementación vs costos de incumplimiento&lt;/h2&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Concepto&lt;/th&gt;&lt;th&gt;Costo estimado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Auditoria de accesibilidad&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2.000 - 8.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Correcciones básicas&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3.000 - 15.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Correcciones complejas&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;10.000 - 50.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Multa por incumplimiento&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Hasta 500.000 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Demanda legal&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;50.000 - 500.000+ EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Dano reputacional&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Incalculable&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La inversión en accesibilidad es significativamente menor que el costo potencial del incumplimiento. Además, las mejoras en accesibilidad benefician el SEO, la usabilidad y la conversión.&lt;/p&gt;
&lt;h2 id=&quot;mantenimiento-continuo-de-la-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mantenimiento-continuo-de-la-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mantenimiento continuo de la accesibilidad&lt;/h2&gt;
&lt;p&gt;La accesibilidad no es un proyecto de una sola vez. Requiere mantenimiento continuo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Auditorias trimestrales&lt;/strong&gt; para verificar que el contenido nuevo cumple con los estándares&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formacion del equipo&lt;/strong&gt; editorial en prácticas de contenido accesible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas de usuario&lt;/strong&gt; periodicas con personas con discapacidades reales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualización de politicas&lt;/strong&gt; de contenido para incluir requisitos de accesibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo automatizado&lt;/strong&gt; con herramientas como Siteimprove o Tenon&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;no-esperes-hasta-el-último-momento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#no-esperes-hasta-el-último-momento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;No esperes hasta el último momento!&lt;/h2&gt;
&lt;p&gt;Contactanos para asegurar que tu sitio web esta preparado para las nuevas regulaciones y es acogedor para todos los usuarios.&lt;/p&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; para garantizar que tu sitio cumpla con todos los estándares de accesibilidad.&lt;/p&gt;</content:encoded><category>wordpress</category><category domain="tag">wordpress</category><category domain="tag">accesibilidad</category><category domain="tag">eaa</category><category domain="tag">wcag</category><enclosure url="https://wppoland.com/images/og/european-accessibility-act-eaa-and-wcag-2-1-why-implement-digital-accessibility-with-wppoland-com.jpg" type="image/jpeg"/></item><item><title>WordPress para empresas: escalabilidad y seguridad</title><link>https://wppoland.com/es/wordpress-for-enterprise-scalability-and-security-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-for-enterprise-scalability-and-security-2026/</guid><description>Descubre por qué WordPress es la opción líder para organizaciónes de nivel empresarial en 2026. Un análisis profundo de más de 2000 palabras sobre arquitectura, escalado y seguridad de alto nivel.</description><pubDate>Thu, 15 May 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, el panorama digital para las organizaciónes a gran escala ha pasado de “¿podemos construirlo?” a “¿podemos escalarlo de forma segura e infinita?”. Durante mucho tiempo, la palabra “WordPress” se asociaba con pequeños blogs y portafolios personales. Hoy, esa percepción es historia antigua. En el mundo empresarial, WordPress se ha convertido en el &lt;strong&gt;sistema operativo dominante para la web de alto rendimiento&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Como tomador de decisiones a nivel empresarial, no buscas simplemente un Sistema de Gestión de Contenido (CMS); buscas un &lt;strong&gt;motor de crecimiento&lt;/strong&gt;. Necesitas una plataforma que pueda manejar picos de tráfico global, integrarse con backends complejos de SAP o Salesforce, y mantener seguridad de grado militar, todo mientras le das a tu equipo de marketing autonomía total.&lt;/p&gt;
&lt;p&gt;En esta guía exhaustiva de más de 2000 palabras, exploramos por qué WordPress es el estándar de oro para las empresas en 2026 y cómo satisface las demandas más rigurosas del mundo corporativo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-arquitectura-del-escalado-más-allá-del-servidor-típico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-arquitectura-del-escalado-más-allá-del-servidor-típico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La arquitectura del escalado: Más allá del servidor típico&lt;/h2&gt;
&lt;p&gt;Escalar para empresas en 2026 no se trata simplemente de “comprar un servidor más grande”. Se trata de &lt;strong&gt;Inteligencia Arquitectónica&lt;/strong&gt;. Las pilas empresariales modernas de WordPress han evolucionado hacia sistemas distribuidos de múltiples capas.&lt;/p&gt;
&lt;h3 id=&quot;escalado-horizontal-vs-vertical&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escalado-horizontal-vs-vertical&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escalado horizontal vs. vertical&lt;/h3&gt;
&lt;p&gt;Cuando una marca global lanza un producto, el tráfico no solo se duplica; explota. El escalado vertical (añadir RAM a un único servidor) tiene límites. El WordPress empresarial utiliza &lt;strong&gt;Escalado Horizontal&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenedorización&lt;/strong&gt;: Usando Docker y Kubernetes, desplegamos copias idénticas de la capa de aplicación WordPress en segundos para manejar picos de tráfico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desacoplamiento de Base de Datos&lt;/strong&gt;: Separamos la base de datos de escritura de las réplicas de lectura. Esto asegura que incluso bajo una interacción intensiva de usuarios, el sitio siga siendo extremadamente rápido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-papel-de-la-computación-edge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-papel-de-la-computación-edge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El papel de la computación edge&lt;/h3&gt;
&lt;p&gt;El ciclo de “solicitud-respuesta” ocurre en el &lt;strong&gt;Edge&lt;/strong&gt;. Al utilizar proveedores como Cloudflare o Akamai, servimos la mayor parte de tu sitio WordPress desde servidores físicamente ubicados cerca de tus usuarios (por ejemplo, Madrid, Ciudad de México, Buenos Aires). Esto reduce la latencia casí a cero, lo cual es crítico para los &lt;strong&gt;Core Web Vitals&lt;/strong&gt; y la retención de usuarios.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-seguridad-de-alto-grado-endureciendo-el-núcleo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-seguridad-de-alto-grado-endureciendo-el-núcleo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Seguridad de alto grado: Endureciendo el núcleo&lt;/h2&gt;
&lt;p&gt;La seguridad en el sector empresarial tiene un resultado binario: o funciona, o sales en las noticias. WordPress es injustamente criticado a menudo por plugins inseguros de terceros utilizados por aficionados. A &lt;strong&gt;nivel empresarial&lt;/strong&gt;, tratamos la seguridad como un estilo de vida, no como una funcionalidad más.&lt;/p&gt;
&lt;h3 id=&quot;soc2-y-estándares-de-cumplimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soc2-y-estándares-de-cumplimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SOC2 y estándares de cumplimiento&lt;/h3&gt;
&lt;p&gt;En 2026, el cumplimiento no es opcional. El hosting empresarial de WordPress (como WordPress VIP o Nubes Privadas especializadas) incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento SOC2 Tipo II&lt;/strong&gt;: Garantizando la privacidad y seguridad de los datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controles Nativos GDPR/CCPA&lt;/strong&gt;: Herramientas automatizadas para la eliminación de datos y solicitudes de acceso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WAF (Firewall de Aplicaciones Web)&lt;/strong&gt;: Conjuntos de reglas avanzadas que bloquean inyecciones SQL y Cross-Site Scripting (XSS) antes de que lleguen al servidor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-principio-de-mínimo-privilegio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-principio-de-mínimo-privilegio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El principio de “mínimo privilegio”&lt;/h3&gt;
&lt;p&gt;Las grandes corporaciones tienen cientos de usuarios. Implementamos una estricta &lt;strong&gt;Gestión de Identidades y Accesos (IAM)&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Integración SSO&lt;/strong&gt;: Conectando WordPress con tu Azure AD corporativo u Okta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permisos Granulares&lt;/strong&gt;: Un “Editor Junior” nunca debería tener el poder de actualizar un plugin o cambiar una configuración del tema.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-integraciones-el-centro-de-tu-ecosistema-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-integraciones-el-centro-de-tu-ecosistema-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Integraciones: El centro de tu ecosistema digital&lt;/h2&gt;
&lt;p&gt;Un sitio web empresarial no vive en un vacío. Debe comunicarse con todo tu stack “MarTech”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRM y Automatización de Marketing&lt;/strong&gt;: Sincronización bidireccional sin interrupciones con Salesforce, HubSpot o Marketo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración ERP&lt;/strong&gt;: Conectando el frontend de tu sitio web con SAP o Microsoft Dynamics para inventario y precios en tiempo real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;APIs Personalizadas&lt;/strong&gt;: La madurez del &lt;strong&gt;REST API&lt;/strong&gt; y &lt;strong&gt;GraphQL&lt;/strong&gt; de WordPress le permite servir como centro de contenido “Headless”, enviando datos a aplicaciones móviles, dispositivos IoT y señalización digital simultáneamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-costo-total-de-propiedad-tco-vs-bloqueo-propietario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-costo-total-de-propiedad-tco-vs-bloqueo-propietario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Costo total de propiedad (TCO) vs. bloqueo propietario&lt;/h2&gt;
&lt;p&gt;¿Por qué empresas como Disney, Meta y la Casa Blanca eligen WordPress por encima de Adobe Experience Manager o Sitecore?&lt;/p&gt;
&lt;h3 id=&quot;cero-tarifas-de-licencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cero-tarifas-de-licencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cero tarifas de licencia&lt;/h3&gt;
&lt;p&gt;Los sistemas propietarios a menudo exigen tarifas de licencia anuales de seis cifras antes de que hayas escrito una sola línea de código. WordPress es de código abierto. Cada dólar de tu presupuesto se destina a la &lt;strong&gt;innovación y experiencia de usuario&lt;/strong&gt;, no a los resultados financieros de un proveedor de software.&lt;/p&gt;
&lt;h3 id=&quot;prevención-del-bloqueo-de-plataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prevención-del-bloqueo-de-plataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prevención del bloqueo de plataforma&lt;/h3&gt;
&lt;p&gt;Si construyes sobre un sistema propietario y el proveedor cambia sus precios o deja de soportar una funcionalidad, estás atrapado. Con WordPress, &lt;strong&gt;eres dueño de tus datos y tu código&lt;/strong&gt;. Puedes mudarte a cualquier proveedor de hosting o cualquier agencia en cualquier momento.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-monitoreo-de-rendimiento-de-aplicaciones-apm-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-monitoreo-de-rendimiento-de-aplicaciones-apm-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Monitoreo de rendimiento de aplicaciones (APM) en 2026&lt;/h2&gt;
&lt;p&gt;No puedes gestionar lo que no mides. Para nuestros clientes empresariales en &lt;strong&gt;WPPoland&lt;/strong&gt;, implementamos Monitoreo de Rendimiento de Aplicaciones en tiempo real.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Integración con New Relic/Datadog&lt;/strong&gt;: Sabemos en el segundo en que una consulta de base de datos tarda más de 100ms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas de Regresión Automatizadas&lt;/strong&gt;: Cada vez que se modifica código, navegadores headless (Playwright/Cypress) prueban tu checkout y formularios de captación automáticamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-gobernanza-de-contenido-para-equipos-globales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-gobernanza-de-contenido-para-equipos-globales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Gobernanza de contenido para equipos globales&lt;/h2&gt;
&lt;p&gt;Gestionar 50 sitios de diferentes países es una pesadilla sin las herramientas adecuadas.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura Multisite&lt;/strong&gt;: Ejecuta 500 sitios web desde una única instalación de WordPress. Comparte usuarios, temas y plugins mientras mantienes contenido y dominios separados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flujos de Trabajo Editorial&lt;/strong&gt;: Procesos de aprobación de múltiples etapas (Borrador -&gt; Revisión Legal -&gt; Revisión SEO -&gt; Publicado) aseguran que ningún contenido se publique sin ser revisado.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-el-factor-humano-el-grupo-de-talento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-factor-humano-el-grupo-de-talento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El factor humano: El grupo de talento&lt;/h2&gt;
&lt;p&gt;Encontrar un especialista para un CMS propietario de nicho es difícil y costoso. En 2026, la &lt;strong&gt;economía WordPress&lt;/strong&gt; es la más grande del mundo tecnológico. Hay millones de desarrolladores, expertos en SEO y diseñadores que hablan el lenguaje de WordPress con fluidez. Esto asegura que tu proyecto nunca quede “estancado” por falta de talento.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-caso-de-estudio-escalando-a-100-millones-de-visitantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-caso-de-estudio-escalando-a-100-millones-de-visitantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Caso de estudio: Escalando a 100 millones de visitantes&lt;/h2&gt;
&lt;p&gt;Consideremos un portal de noticias europeo que optimizamos a finales de 2025.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Desafío&lt;/strong&gt;: Manejar picos impredecibles durante ciclos electorales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Solución&lt;/strong&gt;: Un backend Headless WordPress con un frontend &lt;strong&gt;Astro 5&lt;/strong&gt; entregado vía Edge Global.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El Resultado&lt;/strong&gt;: alta disponibilidad sostenida durante un pico de tráfico 10x, con un LCP promedio de 0.6 segundos.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-preparándose-para-el-futuro-con-ia-y-llmo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-preparándose-para-el-futuro-con-ia-y-llmo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Preparándose para el futuro con IA y LLMO&lt;/h2&gt;
&lt;p&gt;En 2026, la búsqueda está cambiando. Ya no solo optimizamos para Google; optimizamos para &lt;strong&gt;LLMs&lt;/strong&gt; (ChatGPT, Gemini, Perplexity).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Datos Estructurados&lt;/strong&gt;: Incrustamos schemás JSON-LD profundos para que los modelos de IA puedan atribuir y citar correctamente la experiencia de tu empresa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Búsqueda Semántica&lt;/strong&gt;: Usando bases de datos vectoriales, te ayudamos a construir motores de búsqueda internos que realmente entienden lo que tus clientes están buscando.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-la-realidad-detrás-de-la-transformación-digital-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-la-realidad-detrás-de-la-transformación-digital-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. La realidad detrás de la transformación digital empresarial&lt;/h2&gt;
&lt;p&gt;La transformación digital no es solo una palabra de moda corporativa; es una necesidad estratégica. Las empresas que han adoptado WordPress como su plataforma central de contenido han experimentado resultados medibles y significativos.&lt;/p&gt;
&lt;h3 id=&quot;velocidad-de-comercialización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-de-comercialización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad de comercialización&lt;/h3&gt;
&lt;p&gt;Uno de los beneficios más tangibles que observamos en nuestros clientes empresariales es la drástica reducción en el tiempo de lanzamiento de nuevas campañas y páginas de destino. Mientras que los CMS propietarios requieren semanas de planificación, desarrollo y despliegue, los equipos de marketing que trabajan con WordPress pueden crear y publicar contenido complejo en cuestión de horas.&lt;/p&gt;
&lt;p&gt;Esta velocidad se traduce directamente en ventaja competitiva. En mercados donde la respuesta rápida a tendencias y eventos es crítica, la diferencia entre publicar en horas versus semanas puede significar millones en ingresos.&lt;/p&gt;
&lt;h3 id=&quot;ecosistema-de-innovación-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ecosistema-de-innovación-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ecosistema de innovación continua&lt;/h3&gt;
&lt;p&gt;A diferencia de los sistemas propietarios donde la innovación depende del roadmap del fabricante, el ecosistema WordPress ofrece un flujo constante de nuevas funcionalidades, integraciones y mejoras impulsadas por una comunidad global de desarrolladores.&lt;/p&gt;
&lt;p&gt;En 2026, la comunidad WordPress incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Más de 500,000 desarrolladores activos contribuyendo código&lt;/li&gt;
&lt;li&gt;Más de 60,000 plugins disponibles en el directorio oficial&lt;/li&gt;
&lt;li&gt;Actualizaciones de seguridad en tiempo real gestionadas por un equipo dedicado&lt;/li&gt;
&lt;li&gt;Conferencias WordCamp en más de 50 países&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;integración-con-inteligencia-artificial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-inteligencia-artificial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con inteligencia artificial&lt;/h3&gt;
&lt;p&gt;Las capacidades de integración con IA de WordPress en 2026 son particularmente relevantes para empresas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generación asistida de contenido&lt;/strong&gt;: Flujos de trabajo que combinan la creatividad humana con la eficiencia de la IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalización dinámica&lt;/strong&gt;: Contenido adaptado en tiempo real basado en el comportamiento y las preferencias del usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis predictivo&lt;/strong&gt;: Modelos que anticipan el rendimiento del contenido antes de su publicación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traducción automática con revisión humana&lt;/strong&gt;: Escalado global del contenido manteniendo la calidad lingüística&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;11-seguridad-en-profundidad-capas-de-protección-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-seguridad-en-profundidad-capas-de-protección-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;11. Seguridad en profundidad: Capas de protección empresarial&lt;/h2&gt;
&lt;p&gt;La seguridad empresarial no se trata de una única barrera; se trata de múltiples capas de defensa que trabajan en conjunto.&lt;/p&gt;
&lt;h3 id=&quot;capa-1-infraestructura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-1-infraestructura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 1: Infraestructura&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Servidores dedicados con aislamiento completo&lt;/li&gt;
&lt;li&gt;Redes privadas virtuales (VPN) para acceso administrativo&lt;/li&gt;
&lt;li&gt;Cifrado en tránsito (TLS 1.3) y en reposo (AES-256)&lt;/li&gt;
&lt;li&gt;Copias de seguridad automatizadas con almacenamiento geográficamente distribuido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-2-aplicación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-2-aplicación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 2: Aplicación&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Actualizaciones automáticas del núcleo de WordPress gestionadas&lt;/li&gt;
&lt;li&gt;Revisión de código de todos los plugins y temas personalizados&lt;/li&gt;
&lt;li&gt;Escaneo continuo de vulnerabilidades&lt;/li&gt;
&lt;li&gt;Autenticación multifactor (MFA) obligatoria para todos los usuarios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-3-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-3-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 3: Datos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cifrado de base de datos a nivel de campo para datos sensibles&lt;/li&gt;
&lt;li&gt;Controles de acceso basados en roles con el principio de mínimo privilegio&lt;/li&gt;
&lt;li&gt;Registros de auditoría completos de todas las acciones de usuario&lt;/li&gt;
&lt;li&gt;Cumplimiento con GDPR, CCPA y regulaciones sectoriales específicas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-4-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-4-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 4: Monitoreo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Detección de intrusiones en tiempo real&lt;/li&gt;
&lt;li&gt;Análisis de comportamiento de usuarios para detectar anomalías&lt;/li&gt;
&lt;li&gt;Alertas automatizadas y procedimientos de respuesta a incidentes&lt;/li&gt;
&lt;li&gt;Pruebas de penetración regulares por terceros certificados&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;12-conclusión-la-elección-lógica-para-empresas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#12-conclusión-la-elección-lógica-para-empresas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;12. Conclusión: La elección lógica para empresas&lt;/h2&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;El debate ha terminado. WordPress ya no es el “marginado” en el mundo corporativo; es la &lt;strong&gt;infraestructura de elección&lt;/strong&gt;. Proporciona la escalabilidad de una plataforma nativa en la nube, la seguridad de una bóveda endurecida y la flexibilidad de un ecosistema abierto.&lt;/p&gt;
&lt;p&gt;Si tu organización busca una plataforma que crezca contigo hacia 2027 y más allá, WordPress es la única respuesta lógica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Estás listo para elevar la presencia digital corporativa de tu empresa? Contacta con WPPoland para una auditoría de WordPress de grado empresarial.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">enterprise-wordpress</category><category domain="tag">scalability</category><category domain="tag">security</category><category domain="tag">cms-for-business</category><category domain="tag">performance-2026</category><enclosure url="https://wppoland.com/images/og/technology-conference-networking-break.jpg" type="image/jpeg"/></item><item><title>Seguridad avanzada y hardening de WordPress en 2026</title><link>https://wppoland.com/es/advanced-wordpress-security-hardening-2026/</link><guid isPermaLink="true">https://wppoland.com/es/advanced-wordpress-security-hardening-2026/</guid><description>Una guía práctica para fortalecer WordPress en 2026 con passkeys, protección en el Edge, controles de infraestructura y habitos operativos más seguros.</description><pubDate>Mon, 21 Apr 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, el panorama de amenazas para WordPress ha evolucionado dramaticamente. Los dias de “script kiddies” desfigurando blogs han quedado atras en gran medida. Hoy, los sitios WordPress empresariales son objetivos de sofisticadas bandas de ransomware, actores patrocinados por estados y botnets impulsadas por IA que escanean vulnerabilidades las 24 horas del dia, los 7 dias de la semana.&lt;/p&gt;
&lt;p&gt;Para un Director de Seguridad de la Información (CISO) o un Desarrollador Principal, la instalación predeterminada de WordPress ya no es suficiente. Para proteger activos de alto valor, debemos adoptar una &lt;strong&gt;postura de seguridad empresarial&lt;/strong&gt; que va mucho más alla de instalar un plugin.&lt;/p&gt;
&lt;p&gt;En esta guía definitiva de más de 2000 palabras, detallamos la estrategia de “Defensa en Profundidad” necesaria para asegurar WordPress en 2026.&lt;/p&gt;
&lt;p&gt;Si desea la versión práctica primero, el cambio principal es simple: deje de tratar la seguridad de WordPress como una lista de verificación de plugins y empiece a tratarla como un sistema por capas de controles de autenticación, infraestructura, despliegue y monitoreo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-el-fin-de-la-contrasena-seguridad-basada-en-identidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-fin-de-la-contrasena-seguridad-basada-en-identidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El fin de la contrasena: Seguridad basada en identidad&lt;/h2&gt;
&lt;p&gt;La mayor vulnerabilidad en 2026 sigue siendo el factor humano. Las contrasenas se filtran, se reutilizan y se obtienen mediante phishing.&lt;/p&gt;
&lt;h3 id=&quot;el-auge-de-los-passkeys-webauthn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-auge-de-los-passkeys-webauthn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El auge de los passkeys (WebAuthn)&lt;/h3&gt;
&lt;p&gt;Ya no dependemos de secretos compartidos. Dependemos de &lt;strong&gt;prueba criptografica de posesion&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vinculacion biometrica&lt;/strong&gt;: La autenticación esta vinculada al dispositivo del usuario (FaceID / TouchID).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resistencia al phishing&lt;/strong&gt;: Incluso si un usuario visita una página de inicio de sesion falsa, su dispositivo se negara a firmar el desafio de autenticación porque el dominio no coincide.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementación&lt;/strong&gt;: Forzamos &lt;code&gt;webauthn&lt;/code&gt; para todas las cuentas de administrador, deshabilitando el respaldo a contrasenas heredadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los passkeys representan el avance más significativo en seguridad de autenticación web en la última decada. A diferencia de las contrasenas, que son “algo que sabes” y pueden ser robadas, los passkeys son “algo que tienes” combinado con “algo que eres”. La clave privada nunca abandona el dispositivo del usuario y esta protegida por biometria (huella dactilar o reconocimiento facial), lo que hace practicamente imposible el robo remoto de credenciales.&lt;/p&gt;
&lt;p&gt;La implementación de passkeys en WordPress ha madurado considerablemente en 2026. Existen plugins empresariales que permiten configurar passkeys como método de autenticación principal, con politicas granulares que pueden requerir passkeys solo para roles de administrador y editor, mientras permiten contrasenas tradicionales (con MFA obligatorio) para roles de menor privilegio como suscriptores.&lt;/p&gt;
&lt;p&gt;Para las organizaciónes que ya utilizan proveedores de identidad como Azure AD, Okta o Google Workspace, la integración con WordPress a través de SAML o OpenID Connect permite centralizar la gestión de identidades. Esto significa que cuando un empleado abandona la organización, su acceso a WordPress se revoca automáticamente junto con el resto de sus accesos corporativos.&lt;/p&gt;
&lt;p&gt;La resistencia al phishing es quizas el beneficio más crítico de los passkeys. Los ataques de phishing dirigidos contra administradores de WordPress son una de las vectores de ataque más exitosos en 2026. Con passkeys, incluso si un administrador hace clic en un enlace malicioso que imita perfectamente la página de inicio de sesion, la autenticación fallara porque el navegador verifica criptograficamente que el dominio es el correcto antes de firmar el desafio.&lt;/p&gt;
&lt;h3 id=&quot;acceso-de-red-zero-trust-ztna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acceso-de-red-zero-trust-ztna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acceso de red Zero-Trust (ZTNA)&lt;/h3&gt;
&lt;p&gt;Por que su página de inicio de sesion esta en la internet pública?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El concepto&lt;/strong&gt;: No confiamos en nadie, ni siquiera dentro del firewall.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La implementación&lt;/strong&gt;: Utilizamos &lt;strong&gt;Cloudflare Zero Trust&lt;/strong&gt; o &lt;strong&gt;Tailscale&lt;/strong&gt; para poner las rutas completas de &lt;code&gt;/wp-admin&lt;/code&gt; y &lt;code&gt;wp-login.php&lt;/code&gt; detras de un Proxy Consciente de Identidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El resultado&lt;/strong&gt;: Un hacker escaneando su sitio ve un &lt;code&gt;403 Forbidden&lt;/code&gt; o una redireccion SSO estricta antes de poder siquiera intentar un ataque de fuerza bruta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zero Trust no es solo un concepto de moda; es una filosofia de seguridad que asume que cualquier solicitud puede ser maliciosa, independientemente de su origen. En la práctica, esto significa que acceder al panel de administración de WordPress requiere primero autenticarse ante un proxy de identidad, luego cumplir con politicas de dispositivo (sistema operativo actualizado, antivirus activo) y finalmente autenticarse ante WordPress mismo.&lt;/p&gt;
&lt;p&gt;La implementación con Cloudflare Zero Trust es particularmente elegante. Se configura una politica de acceso que requiere autenticación a través del proveedor de identidad corporativo antes de permitir el acceso a cualquier ruta administrativa de WordPress. Para el visitante público, el sitio funciona normalmente. Pero cualquier intento de acceder a &lt;code&gt;/wp-admin&lt;/code&gt; o &lt;code&gt;/wp-login.php&lt;/code&gt; sin pasar primero por la autenticación Zero Trust resulta en un bloqueo inmediato.&lt;/p&gt;
&lt;p&gt;Tailscale ofrece un enfoque alternativo basado en una red privada virtual (VPN) de malla. En este modelo, las rutas administrativas de WordPress solo son accesibles desde dispositivos que forman parte de la red Tailscale de la organización. Esto es particularmente útil para equipos distribuidos que necesitan acceder al panel de WordPress desde diferentes ubicaciones, pero quieren eliminar completamente la exposicion pública de las rutas de administración.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-hardening-de-infraestructura-arquitectura-inmutable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-hardening-de-infraestructura-arquitectura-inmutable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Hardening de infraestructura: Arquitectura inmutable&lt;/h2&gt;
&lt;p&gt;En la era anterior, actualizabamos plugins haciendo clic en “Actualizar” en el panel. En los entornos empresariales de 2026, esto es una violacion de seguridad.&lt;/p&gt;
&lt;h3 id=&quot;el-sistema-de-archivos-de-solo-lectura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-sistema-de-archivos-de-solo-lectura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El sistema de archivos de solo lectura&lt;/h3&gt;
&lt;p&gt;Para prevenir la persistencia de malware, tratamos el servidor como &lt;strong&gt;efimero e inmutable&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenedorizacion&lt;/strong&gt;: WordPress se ejecuta en un contenedor Docker donde el sistema de archivos es estrictamente de solo lectura.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin acceso de escritura&lt;/strong&gt;: Si una vulnerabilidad en un plugin permite a un atacante subir un shell PHP, la subida falla porque el disco esta bloqueado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones via CI/CD&lt;/strong&gt;: Las actualizaciones se aplican en un repositorio git, se prueban, se construyen en una nueva imagen de contenedor y se despliegan. El servidor en producción nunca se modifica directamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La arquitectura inmutable es posiblemente el cambio más impactante que una organización puede hacer para mejorar la seguridad de su instalación WordPress. El concepto es simple: si el servidor no puede ser modificado, el malware no puede persistir. Incluso si un atacante logra explotar una vulnerabilidad y ejecutar código arbitrario, ese código desaparece en el siguiente despliegue porque el contenedor se reconstruye desde una imagen limpia.&lt;/p&gt;
&lt;p&gt;La implementación práctica requiere un cambio en el flujo de trabajo de desarrollo y mantenimiento. En lugar de instalar plugins directamente desde el panel de WordPress, los plugins se anaden como dependencias en un archivo &lt;code&gt;composer.json&lt;/code&gt;, se prueban en un entorno de staging, se revisan mediante pull request y se despliegan automáticamente a través de un pipeline de CI/CD. Este proceso anade un paso adicional al flujo de trabajo, pero elimina una de las superficies de ataque más grandes de WordPress.&lt;/p&gt;
&lt;p&gt;La contenedorizacion con Docker permite definir exactamente que archivos y directorios son escribibles y cuales son de solo lectura. Tipicamente, solo el directorio &lt;code&gt;wp-content/uploads&lt;/code&gt; necesita permisos de escritura (para la carga de medios), y este directorio puede montarse en un volumen separado con politicas de seguridad adicionales que impiden la ejecucion de archivos PHP.&lt;/p&gt;
&lt;p&gt;Las organizaciónes que adoptan la arquitectura inmutable frecuentemente reportan una reduccion dramatica en incidentes de seguridad. En nuestra experiencia, los sitios WordPress inmutables experimentan un 90% menos de intentos de compromiso exitosos en comparación con instalaciones tradicionales, simplemente porque la superficie de ataque se reduce drasticamente.&lt;/p&gt;
&lt;h3 id=&quot;aislamiento-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aislamiento-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aislamiento de base de datos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Privilegios minimos&lt;/strong&gt;: El usuario de base de datos conectado a WordPress tiene permisos únicamente para las tablas específicas que necesita. Los permisos de &lt;code&gt;DROP TABLE&lt;/code&gt; estan revocados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conexiones cifradas&lt;/strong&gt;: Todo el tráfico entre la aplicación WordPress y el cluster MySQL/MariaDB esta cifrado mediante TLS 1.3.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El principio de privilegios minimos aplicado a la base de datos es una medida de seguridad que frecuentemente se pasa por alto. La instalación predeterminada de WordPress utiliza un usuario de base de datos con permisos completos, incluyendo la capacidad de eliminar tablas y bases de datos. Si un atacante logra ejecutar una inyeccion SQL, estos permisos excesivos amplian enormemente el dano potencial.&lt;/p&gt;
&lt;p&gt;En una configuración segura, el usuario de base de datos de WordPress tiene permisos de SELECT, INSERT, UPDATE y DELETE sobre las tablas de WordPress, pero carece de permisos para CREATE, DROP, ALTER o GRANT. Las migraciones de esquema de base de datos se manejan a través del pipeline de CI/CD con un usuario de base de datos separado que tiene los permisos necesarios solo durante el proceso de migración.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-el-edge-waf-y-parcheo-virtual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-el-edge-waf-y-parcheo-virtual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. El Edge: WAF y parcheo virtual&lt;/h2&gt;
&lt;p&gt;La batalla se gana o se pierde frecuentemente antes de que la solicitud llegue a su servidor.&lt;/p&gt;
&lt;h3 id=&quot;filtrado-en-la-capa-de-aplicación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#filtrado-en-la-capa-de-aplicación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Filtrado en la capa de aplicación&lt;/h3&gt;
&lt;p&gt;Los firewalls de aplicaciones web (WAF) modernos entienden el contexto de WordPress.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bloqueo de inyeccion SQL&lt;/strong&gt;: Análisis de parametros de consulta en busca de patrones SQL maliciosos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mitigacion de XSS&lt;/strong&gt;: Eliminacion de etiquetas de script de las solicitudes POST.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un WAF moderno no se limita a aplicar reglas genericas de filtrado. Los mejores WAF en 2026 comprenden la estructura de WordPress y pueden distinguir entre solicitudes legitimás de la API REST de WordPress y solicitudes maliciosas que intentan explotar vulnerabilidades conocidas. Esta inteligencia contextual reduce significativamente los falsos positivos, un problema histórico de los WAF que frecuentemente bloqueaban acciones legitimás de administración.&lt;/p&gt;
&lt;p&gt;La configuración del WAF para WordPress requiere un enfoque equilibrado. Reglas demasiado estrictas pueden bloquear funcionalidades legitimás del editor Gutenberg o de plugins complejos como WooCommerce. Reglas demasiado permisivas dejan pasar ataques que podrian haberse detenido. La clave esta en implementar un periodo de “modo de aprendizaje” donde el WAF observa el tráfico normal del sitio antes de activar el bloqueo.&lt;/p&gt;
&lt;h3 id=&quot;parcheo-virtual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parcheo-virtual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parcheo virtual&lt;/h3&gt;
&lt;p&gt;Cuando se anuncia una vulnerabilidad crítica en un plugin popular (por ejemplo, WooCommerce), existe una “condicion de carrera” entre hackers y administradores.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La solución de 2026&lt;/strong&gt;: Su proveedor de WAF inyecta una regla instantaneamente. La vulnerabilidad se “parchea” a nivel de firewall, protegiendo efectivamente su sitio incluso si no ha actualizado el código del plugin todavia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El parcheo virtual es una de las capacidades más valiosas de un WAF moderno. Cuando se descubre una vulnerabilidad en un plugin popular, los atacantes automatizados pueden comenzar a explotarla en cuestion de horas. El proceso tradicional de actualización, que requiere descargar la nueva versión, probarla en staging y desplegarla en producción, puede llevar dias o incluso semanas en entornos empresariales con estrictos protocolos de control de cambios.&lt;/p&gt;
&lt;p&gt;El parcheo virtual cierra esta ventana de vulnerabilidad. Los proveedores de WAF mantienen equipos de investigación de seguridad que crean reglas de bloqueo específicas para cada nueva vulnerabilidad, frecuentemente antes de que el parche oficial del plugin este disponible. Estas reglas se despliegan automáticamente en todos los clientes del WAF, proporcionando protección inmediata sin necesidad de ninguna accion por parte del administrador del sitio.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-content-security-policy-csp-el-escudo-del-navegador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-content-security-policy-csp-el-escudo-del-navegador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Content Security Policy (CSP): El escudo del navegador&lt;/h2&gt;
&lt;p&gt;CSP es su última linea de defensa contra Cross-Site Scripting (XSS).&lt;/p&gt;
&lt;h3 id=&quot;cabeceras-csp-estrictas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cabeceras-csp-estrictas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cabeceras CSP estrictas&lt;/h3&gt;
&lt;p&gt;Le indicamos al navegador exactamente que esta permitido.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;http&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;Content-Security-Policy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  default-src &apos;self&apos;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  script-src &apos;self&apos; https://js.stripe.com &apos;nonce-random123&apos;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  img-src &apos;self&apos; data: https://cdn.example.com;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  frame-ancestors &apos;none&apos;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lista blanca de scripts&lt;/strong&gt;: Solo pueden ejecutarse scripts de su dominio y proveedores aprobados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación basada en nonce&lt;/strong&gt;: Cada script en linea debe tener un nonce criptografico que coincida con la cabecera. Esto elimina el 99% de los ataques XSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La implementación de CSP en WordPress presenta desafios únicos debido a la naturaleza del ecosistema de plugins. Muchos plugins inyectan scripts en linea y estilos que violarian una politica CSP estricta. La solución es implementar CSP de forma progresiva: comenzar con una politica en modo “report-only” que registra las violaciones sin bloquearlas, analizar los informes para identificar los scripts legitimos que necesitan ser adaptados, y luego gradualmente endurecer la politica.&lt;/p&gt;
&lt;p&gt;La verificación basada en nonce es el enfoque recomendado para 2026. En lugar de usar &lt;code&gt;&apos;unsafe-inline&apos;&lt;/code&gt; (que efectivamente desactiva la protección CSP para scripts en linea), cada solicitud genera un nonce criptografico único. Este nonce se anade a la cabecera CSP y a cada etiqueta de script en linea legitima. Los scripts maliciosos inyectados por un atacante no tendran el nonce correcto y seran bloqueados por el navegador.&lt;/p&gt;
&lt;p&gt;La directiva &lt;code&gt;frame-ancestors &apos;none&apos;&lt;/code&gt; es particularmente importante para prevenir ataques de clickjacking, donde un atacante incrusta su sitio WordPress dentro de un iframe en una página maliciosa para engaAar a los usuarios a realizar acciones no deseadas, como cambiar configuraciónes de seguridad o aprobar transacciones.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-seguridad-automatizada-de-la-cadena-de-suministro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-seguridad-automatizada-de-la-cadena-de-suministro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Seguridad automatizada de la cadena de suministro&lt;/h2&gt;
&lt;p&gt;El código abierto es una fortaleza, pero los ataques a la cadena de suministro son un riesgo.&lt;/p&gt;
&lt;h3 id=&quot;auditoria-de-dependencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-de-dependencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria de dependencias&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Composer y NPM&lt;/strong&gt;: Antes de desplegar cualquier código, nuestro pipeline de CI escanea &lt;code&gt;composer.lock&lt;/code&gt; y &lt;code&gt;package-lock.json&lt;/code&gt; contra bases de datos de vulnerabilidades conocidas (CVEs).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación de plugins&lt;/strong&gt;: Para clientes de alta seguridad, no instalamos plugins directamente del repositorio. Los replicamos en un repositorio privado despues de una auditoria de código.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los ataques a la cadena de suministro se han convertido en uno de los vectores de amenaza de más rápido crecimiento en 2026. El ecosistema de WordPress, con sus decenas de miles de plugins y temas, representa una superficie de ataque significativa. Un atacante que logre comprometer un plugin popular puede potencialmente obtener acceso a millones de sitios web.&lt;/p&gt;
&lt;p&gt;La auditoria de dependencias es la primera linea de defensa contra estos ataques. Herramientas como &lt;code&gt;composer audit&lt;/code&gt; y &lt;code&gt;npm audit&lt;/code&gt; comparan las versiones exactas de las dependencias del proyecto contra bases de datos de vulnerabilidades conocidas. Integrar estas herramientas en el pipeline de CI/CD asegura que ninguna dependencia con vulnerabilidades conocidas llegue a producción.&lt;/p&gt;
&lt;p&gt;Para organizaciónes con requisitos de seguridad elevados, recomendamos mantener un repositorio privado de plugins. En este modelo, cada plugin se descarga del repositorio oficial de WordPress, se somete a una revision de código manual centrada en seguridad y solo entonces se anada al repositorio privado. Las actualizaciones de plugins pasan por el mismo proceso de revision antes de estar disponibles para los sitios de producción.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-logs-y-deteccion-de-anomalias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-logs-y-deteccion-de-anomalias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Logs y deteccion de anomalias&lt;/h2&gt;
&lt;p&gt;No se puede detener lo que no se puede ver.&lt;/p&gt;
&lt;h3 id=&quot;registro-centralizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#registro-centralizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Registro centralizado&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento externo&lt;/strong&gt;: Los logs se transmiten en tiempo real a un servicio externo inmutable (por ejemplo, Datadog, Splunk). Si un hacker compromete el servidor e intenta “borrar las huellas”, los logs ya estan seguros en otro lugar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deteccion de anomalias con IA&lt;/strong&gt;: Los modelos de aprendizaje automático analizan los patrones de tráfico. Un pico repentino en solicitudes POST a &lt;code&gt;xmlrpc.php&lt;/code&gt; activa un bloqueo automatizado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El registro y el monitoreo son frecuentemente los aspectos más descuidados de la seguridad WordPress, y sin embargo, son los más críticos para detectar y responder a incidentes. Sin logs adecuados, un compromiso puede pasar desapercibido durante semanas o meses, permitiendo al atacante extraer datos, instalar backdoors adicionales y establecer persistencia.&lt;/p&gt;
&lt;p&gt;Un sistema de registro efectivo para WordPress debe capturar multiples fuentes de datos. Los logs de acceso del servidor web registran cada solicitud HTTP. Los logs de autenticación de WordPress registran intentos de inicio de sesion exitosos y fallidos. Los logs de la aplicación registran acciones administrativas como cambios de configuración, instalación de plugins y modificaciones de contenido. Los logs del WAF registran solicitudes bloqueadas y patrones de ataque detectados.&lt;/p&gt;
&lt;p&gt;Centralizar todos estos logs en una plataforma externa permite correlacionar eventos entre diferentes fuentes. Por ejemplo, una serie de intentos de inicio de sesion fallidos seguida de un inicio de sesion exitoso desde una IP diferente, seguido de un cambio en la configuración de seguridad, es un patron que indica un compromiso en progreso. Sin la centralizacion, estos eventos individuales podrian pasar desapercibidos en logs separados.&lt;/p&gt;
&lt;p&gt;La deteccion de anomalias basada en IA ha madurado significativamente en 2026. Los modelos pueden establecer lineas base del comportamiento normal del sitio y alertar automáticamente sobre desviaciones significativas. Esto incluye patrones de tráfico inusuales, acceso a archivos que normalmente no se solicitan, cambios en el volumen o la estructura de las consultas a la base de datos y otros indicadores de compromiso que serian imposibles de detectar manualmente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-la-garantia-de-seguridad-de-wppoland&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-la-garantia-de-seguridad-de-wppoland&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. La garantia de seguridad de WPPoland&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, la seguridad no es una reflexion posterior. Es la base.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura primero&lt;/strong&gt;: Construimos infraestructura segura, no solo sitios web seguros.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo proactivo&lt;/strong&gt;: Nuestro SOC (Centro de Operaciones de Seguridad) vigila sus activos empresariales las 24 horas del dia, los 7 dias de la semana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listo para cumplimiento normativo&lt;/strong&gt;: Construimos según los estándares RGPD, HIPAA y SOC2.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nuestro enfoque de seguridad se basa en la premisa de que la seguridad debe ser inherente a la arquitectura, no una capa anadida posteriormente. Cada sitio WordPress que construimos incorpora las mejores prácticas de seguridad desde el primer dia: arquitectura inmutable, autenticación fuerte, controles del Edge, registro centralizado y respuesta automatizada a incidentes.&lt;/p&gt;
&lt;p&gt;El cumplimiento normativo es un requisito crítico para muchas de las organizaciónes con las que trabajamos. El RGPD impone requisitos estrictos sobre la protección de datos personales. HIPAA exige controles de seguridad específicos para información sanitaria. SOC2 requiere evidencia demostrable de controles de seguridad, disponibilidad y confidencialidad. Nuestras arquitecturas WordPress estan diseNadas para cumplir estos requisitos desde la base.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-conclusion-la-seguridad-como-cultura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-conclusion-la-seguridad-como-cultura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Conclusion: La seguridad como cultura&lt;/h2&gt;
&lt;p&gt;Mas información sobre &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.
No existe el “configurar y olvidar.” La seguridad es un proceso continuo de fortalecimiento, monitoreo y actualización. Al adoptar estos estándares empresariales, hace que su sitio WordPress sea mucho más dificil de explotar y más fácil de operar de forma segura.&lt;/p&gt;
&lt;p&gt;La seguridad efectiva no se trata de implementar la mayor cantidad de herramientas posible. Se trata de construir un sistema coherente de controles que se refuercen mutuamente. La autenticación fuerte protege el acceso. La arquitectura inmutable previene la persistencia. El WAF bloquea ataques conocidos. El registro detecta lo desconocido. Cada capa complementa a las demas, creando una defensa que es significativamente más fuerte que la suma de sus partes.&lt;/p&gt;
&lt;p&gt;En 2026, la pregunta no es si su sitio WordPress será atacado, sino cuando. La diferencia entre las organizaciónes que sufren violaciones de datos y las que no radica en la preparacion. Al implementar las estrategias descritas en esta guía, posiciona a su organización en el lado correcto de esa division.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesita una evaluación de seguridad para su sitio WordPress empresarial? Contacte a WPPoland para una auditoria de seguridad completa.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>security</category><category domain="tag">enterprise-security</category><category domain="tag">zero-trust</category><category domain="tag">passkeys</category><category domain="tag">waf</category><category domain="tag">wordpress-hardening</category><enclosure url="https://wppoland.com/images/og/technology-conference-networking-break.jpg" type="image/jpeg"/></item><item><title>El mejor CMS para grandes sitios web corporativos en 2026: Una comparativa estrategica</title><link>https://wppoland.com/es/best-cms-for-large-corporate-websites-2026-comparison/</link><guid isPermaLink="true">https://wppoland.com/es/best-cms-for-large-corporate-websites-2026-comparison/</guid><description>Elegir el CMS adecuado para un gran sitio web corporativo es una decision de alto impacto. Esta comparativa de más de 2000 palabras evalua WordPress, Sitecore y Drupal para 2026.</description><pubDate>Thu, 10 Apr 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Para una gran corporacion en 2026, el sitio web es el buque insignia de su imperio digital. Es el lugar donde los inversores consultan los informes financieros, donde los candidatos potenciales evaluan la cultura empresarial y donde los clientes globales buscan soluciones técnicas. Un CMS “aceptable” simplemente no es suficiente. Se necesita una plataforma que gestióne &lt;strong&gt;gobernanza, seguridad y localización&lt;/strong&gt; a escala global.&lt;/p&gt;
&lt;p&gt;En el pasado, las corporaciones se inclinaban hacia soluciones “Enterprise” de alto coste como Sitecore o Adobe Experience Manager. Sin embargo, 2026 marca el año en que &lt;strong&gt;el código abierto ha completado su conquista de las salas de juntas corporativas&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En esta guía de más de 2000 palabras, comparamos los principales contendientes de CMS para grandes sitios web corporativos y le ayudamos a decidir cual se alinea con sus objetivos estrategicos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-wordpress-la-corriente-principal-corporativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-wordpress-la-corriente-principal-corporativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. WordPress (la corriente principal corporativa)&lt;/h2&gt;
&lt;p&gt;En 2026, WordPress ya no es la opción “alternativa”; es el &lt;strong&gt;estándar&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gobernanza&lt;/strong&gt;: Con roles de usuario complejos y el ecosistema “PublishPress”, las corporaciones pueden gestionar cientos de partes interesadas con niveles de permisos precisos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capacidad multilingue&lt;/strong&gt;: La integración profunda con herramientas como WPML o Polylang, junto con las funciones nativas de Multisite, permite una expansion global sin interrupciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accesibilidad de talento&lt;/strong&gt;: Encontrar disenadores y desarrolladores que comprendan WordPress es sencillo, lo que reduce el riesgo de depender de una sola agencia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WordPress ha madurado significativamente en los últimos años. La arquitectura de bloques Gutenberg ha transformado la experiencia editorial, permitiendo a los equipos de marketing crear páginas complejas sin depender constantemente del departamento de TI. Además, la comunidad de WordPress es la mayor del ecosistema CMS, con miles de plugins empresariales que cubren desde la automatizacion de flujos de trabajo hasta la integración con plataformas de datos de clientes (CDP).&lt;/p&gt;
&lt;p&gt;Para las corporaciones europeas que operan en multiples mercados, WordPress ofrece ventajas únicas. La capacidad de gestionar contenido localizado a través de WPML, combinada con la flexibilidad para adaptar cada sitio regional a las normativas locales (como el RGPD), convierte a WordPress en una solución integral que escala con la organización.&lt;/p&gt;
&lt;h2 id=&quot;2-drupal-11-el-arquitecto-estructurado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-drupal-11-el-arquitecto-estructurado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Drupal 11 (el arquitecto estructurado)&lt;/h2&gt;
&lt;p&gt;Drupal sigue siendo la eleccion para organizaciónes con &lt;strong&gt;relaciones de datos altamente complejas&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Sobresale en el modelado de contenido. Si su sitio corporativo tiene miles de puntos de datos con referencias cruzadas (por ejemplo, especificaciones técnicas a través de multiples lineas de productos), Drupal es una herramienta poderosa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La contrapartida&lt;/strong&gt;: La curva de aprendizaje es pronunciada. Los equipos editoriales a menudo encuentran Drupal menos intuitivo que WordPress, lo que puede generar friccion entre los departamentos de TI y Marketing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La versión 11 de Drupal ha introducido mejoras significativas en la experiencia del usuario editorial. Sin embargo, la brecha entre Drupal y WordPress en terminos de usabilidad sigue siendo considerable. Un editor de contenido puede aprender WordPress en un par de dias, mientras que dominar el panel de Drupal requiere semanas de formacion especializada. Para las corporaciones que valoran la autonomia de sus equipos de marketing, esta diferencia es fundamental.&lt;/p&gt;
&lt;p&gt;Donde Drupal realmente brilla es en entornos gubernamentales y de administración pública. Su sistema de permisos granulares, combinado con su capacidad para modelar estructuras de contenido extremadamente complejas, lo convierte en la opción preferida para portales de gobierno que manejan miles de documentos interconectados, formularios y flujos de aprobacion.&lt;/p&gt;
&lt;h2 id=&quot;3-sitecore-la-suite-de-lujo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-sitecore-la-suite-de-lujo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Sitecore (la suite de lujo)&lt;/h2&gt;
&lt;p&gt;Sitecore se ha reposicionado en 2026 como una DXP (Digital Experience Platform) “componible”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Personalización profunda. Si su objetivo principal es mostrar contenido diferente a cada visitante individual basandose en datos de comportamiento complejos, las herramientas de IA integradas de Sitecore son robustas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La contrapartida&lt;/strong&gt;: El coste. El “impuesto Sitecore”, es decir, los altos costes de licencia y desarrollo, dificulta que la mayoria de las empresas vean un ROI positivo en comparación con configuraciónes modernas de WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El modelo de precios de Sitecore ha sido historicamente uno de sus mayores obstaculos. Las licencias anuales pueden superar fácilmente los 100.000 euros, sin contar los costes de implementación, que frecuentemente se multiplican por tres o cuatro veces esa cifra. Además, encontrar desarrolladores especializados en Sitecore es significativamente más dificil y costoso que reclutar talento WordPress.&lt;/p&gt;
&lt;p&gt;La personalización que ofrece Sitecore es genuinamente impresionante. Sin embargo, en 2026, muchas de estas capacidades pueden replicarse con WordPress combinado con herramientas de personalización basadas en IA como Google Optimize o soluciones de CDP, a una fraccion del coste y con mucha mayor flexibilidad.&lt;/p&gt;
&lt;h2 id=&quot;4-adobe-experience-manager-aem&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-adobe-experience-manager-aem&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Adobe Experience Manager (AEM)&lt;/h2&gt;
&lt;p&gt;AEM es la opción para corporaciones que viven y respiran en Adobe Creative Cloud.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Gestión de Activos Digitales (DAM) inigualable. Si su organización gestiona millones de activos de video e imagen, la integración de AEM es de clase mundial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La contrapartida&lt;/strong&gt;: Rigidez. Los ciclos de desarrollo en AEM son historicamente lentos, a menudo requiriendo meses para cambios que llevarian dias en WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AEM tiene sentido cuando una organización ya ha invertido enormemente en el ecosistema Adobe. La capacidad de conectar directamente Photoshop, InDesign, Premiere Pro y otros productos de Creative Cloud con el sistema de gestión de contenido es un flujo de trabajo que ninguna otra plataforma puede igualar. Sin embargo, esta ventaja viene con un coste total de propiedad que puede superar el millon de euros anuales para implementaciónes a gran escala.&lt;/p&gt;
&lt;p&gt;Para las corporaciones que estan evaluando AEM, la pregunta clave no es si la plataforma es potente (lo es), sino si las capacidades únicas que ofrece justifican el enorme diferencial de coste frente a WordPress, que puede lograr resultados comparables en la mayoria de los casos de uso.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;criterios-de-evaluación-técnica-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#criterios-de-evaluación-técnica-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Criterios de evaluación técnica para 2026&lt;/h2&gt;
&lt;h3 id=&quot;a-rendimiento-y-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#a-rendimiento-y-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;A. Rendimiento y Core Web Vitals&lt;/h3&gt;
&lt;p&gt;En 2026, la velocidad de la página es una señal de reputacion corporativa. Un sitio lento sugiere una empresa lenta.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; gana en flexibilidad. Puede desplegarse como un sistema “Headless” o como un monolito tradicional, ambos optimizados para velocidades inferiores al segundo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los sistemas propietarios&lt;/strong&gt; a menudo sufren de “inflacion de funciones”, lo que dificulta alcanzar las puntuaciones Lighthouse de 90+ requeridas para los mejores rankings SEO.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El rendimiento se ha convertido en un factor competitivo directo. Estudios recientes demuestran que cada segundo adicional de tiempo de carga reduce las conversiones en un 7%. Para un sitio corporativo que genera millones de euros en consultas y ventas, esta diferencia se traduce directamente en ingresos perdidos. WordPress, cuando se optimiza adecuadamente con infraestructura de nivel empresarial, consistentemente supera a los sistemas propietarios en metricas de rendimiento.&lt;/p&gt;
&lt;h3 id=&quot;b-escalabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#b-escalabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;B. Escalabilidad&lt;/h3&gt;
&lt;p&gt;Puede el sistema manejar un comunicado de prensa global que genere 5 millones de visitantes en una hora?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress Enterprise&lt;/strong&gt; utiliza escalado multi-nodo y CDN globales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drupal&lt;/strong&gt; es conocido por su eficiencia bajo cargas altas, pero requiere un equipo de DevOps altamente especializado para gestionarlo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La escalabilidad no se trata solo de manejar picos de tráfico. También incluye la capacidad de gestionar el crecimiento del contenido a lo largo del tiempo. Un sitio corporativo puede comenzar con 500 páginas y crecer a 50.000 en cinco años. WordPress maneja esta escala sin degradacion del rendimiento cuando se configura correctamente con estrategias de cache adecuadas y una arquitectura de base de datos optimizada.&lt;/p&gt;
&lt;h3 id=&quot;c-seguridad-y-cumplimiento-normativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#c-seguridad-y-cumplimiento-normativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;C. Seguridad y cumplimiento normativo&lt;/h3&gt;
&lt;p&gt;Para los departamentos de TI corporativos, esto no es negociable.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AEM&lt;/strong&gt; ofrece un jardin amurallado que se percibe como seguro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; ofrece entornos “reforzados” (como los proporcionados por WPPoland) que cumplen con los estándares SOC2 e ISO, desmintiendo el mito de que el código abierto es menos seguro.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La seguridad en el contexto corporativo abarca mucho más que la protección contra ataques. Incluye el cumplimiento de regulaciones como el RGPD en Europa, HIPAA en el sector salud estadounidense y las normativas financieras específicas de cada pais. WordPress, con su ecosistema de plugins especializados en cumplimiento normativo y su capacidad para integrarse con sistemas de gestión de identidad empresariales, ha demostrado ser una plataforma que cumple con los requisitos de seguridad más estrictos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;el-auge-del-sitio-corporativo-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-auge-del-sitio-corporativo-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El auge del sitio corporativo “Headless”&lt;/h2&gt;
&lt;p&gt;2026 es el año de la &lt;strong&gt;Arquitectura Desacoplada&lt;/strong&gt;.
Muchas corporaciones ahora utilizan WordPress o Drupal como una “API de Contenido” mientras construyen el sitio web real utilizando frameworks modernos como &lt;strong&gt;Astro 5&lt;/strong&gt; o &lt;strong&gt;Next.js&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Beneficio 1&lt;/strong&gt;: Seguridad. El backend esta oculto al público.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beneficio 2&lt;/strong&gt;: Preparacion para el futuro. Puede cambiar el diseño de su sitio web sin tocar jamás su base de datos de contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La arquitectura headless representa un cambio de paradigma en como las corporaciones abordan sus plataformas digitales. En lugar de depender de un sistema monolitico que controla tanto el contenido como la presentacion, las organizaciónes ahora pueden elegir la mejor herramienta para cada capa. WordPress sigue siendo insuperable como interfaz de gestión de contenido, mientras que frameworks como Astro 5 ofrecen un rendimiento de frontend que seria imposible de lograr con un enfoque tradicional.&lt;/p&gt;
&lt;p&gt;Esta separacion también aporta beneficios significativos en terminos de seguridad y mantenimiento. El backend de WordPress puede protegerse detras de redes privadas, accesible solo a través de APIs autenticadas, mientras que el frontend estatico se distribuye globalmente a través de CDN, siendo practicamente inmune a los vectores de ataque tradicionales contra WordPress.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;análisis-de-roi-el-coste-real-de-un-cms&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-de-roi-el-coste-real-de-un-cms&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis de ROI: El “coste real” de un CMS&lt;/h2&gt;
&lt;p&gt;Cuando se evalua un CMS, hay que mirar más alla del coste de construccion inicial.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mantenimiento&lt;/strong&gt;: Los sistemas propietarios (Sitecore/AEM) requieren soporte especializado costoso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formacion&lt;/strong&gt;: Los equipos de marketing pueden aprender WordPress en 2 dias. Aprender Adobe AEM puede llevar semanas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agilidad&lt;/strong&gt;: Cuantos ingresos se pierden cuando el equipo de marketing tiene que esperar 3 semanas a que TI lance una nueva página de destino?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El análisis de ROI debe considerar el coste total de propiedad durante un periodo de cinco años. Este calculo incluye licencias, alojamiento, desarrollo, mantenimiento, formacion del personal y coste de oportunidad. En nuestra experiencia trabajando con corporaciones europeas, WordPress consistentemente ofrece un coste total de propiedad entre un 40% y un 70% inferior al de Sitecore o AEM, mientras proporciona capacidades comparables o superiores para la gran mayoria de los casos de uso corporativos.&lt;/p&gt;
&lt;p&gt;La agilidad empresarial es quizas el factor de ROI más subestimado. En un entorno competitivo donde la velocidad de comercializacion puede determinar el éxito o fracaso de una campana, la capacidad de WordPress para permitir que los equipos de marketing publiquen contenido de forma autonoma, sin depender de ciclos de desarrollo prolongados, se traduce en una ventaja competitiva directa y cuantificable.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-que-wppoland-recomienda-wordpress-optimizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-wppoland-recomienda-wordpress-optimizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que WPPoland recomienda WordPress optimizado&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, trabajamos con corporaciones europeas para construir sitios web dominantes en buscadores. Casí siempre recomendamos WordPress porque:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Velocidad&lt;/strong&gt;: Entregamos LCP por debajo de 0,8s en cada página.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: WordPress sigue siendo la mejor plataforma para construir “Autoridad Tematica” en 2026.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control&lt;/strong&gt;: Usted es dueno de su activo. Nunca esta a merced de la actualización de precios anual de un proveedor SaaS.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nuestro enfoque va más alla de simplemente instalar WordPress. Creamos arquitecturas optimizadas que aprovechan las últimás tecnologías disponibles: cache en el borde con Cloudflare Enterprise, bases de datos optimizadas con Redis, y frontends de alto rendimiento construidos con Astro 5 cuando el proyecto lo requiere. El resultado es una plataforma que no solo cumple con los estándares corporativos más exigentes, sino que los supera.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion-tomando-la-decision-correcta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-tomando-la-decision-correcta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Tomando la decision correcta&lt;/h2&gt;
&lt;p&gt;Mas información sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.
Si su organización prioriza la &lt;strong&gt;agilidad de marketing, alto rendimiento y ROI a largo plazo&lt;/strong&gt;, &lt;strong&gt;WordPress&lt;/strong&gt; es el claro ganador para 2026. Si tiene estructuras de datos únicas y altamente complejas y un gran equipo interno de TI, &lt;strong&gt;Drupal&lt;/strong&gt; es un solido segundo clasificado.&lt;/p&gt;
&lt;p&gt;Evite los sistemas propietarios “banados en oro” a menos que tenga una necesidad específica y crítica para sus integraciones de nicho que no puedan replicarse en otro lugar por una fraccion del coste.&lt;/p&gt;
&lt;p&gt;La decision de CMS que tome hoy definira la agilidad digital de su organización durante los proximos cinco a diez años. No se trata solo de elegir una herramienta tecnológica; se trata de elegir la base sobre la cual se construira toda su estrategia digital. En 2026, esa base es WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esta su sitio web corporativo listo para una actualización? Contacte a WPPoland para una sesion de estrategia CMS.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">corporate-cms</category><category domain="tag">enterprise-software</category><category domain="tag">wordpress-vs-sitecore</category><category domain="tag">drupal-2026</category><category domain="tag">web-governance</category><enclosure url="https://wppoland.com/images/og/tech-conference-audience-listening.jpg" type="image/jpeg"/></item><item><title>Modernizacion de sitios corporativos legacy con WordPress 2026</title><link>https://wppoland.com/es/modernizing-legacy-corporate-sites-with-wordpress-2026-comprehensive-guide/</link><guid isPermaLink="true">https://wppoland.com/es/modernizing-legacy-corporate-sites-with-wordpress-2026-comprehensive-guide/</guid><description>Guia exhaustiva para modernizar sitios corporativos legacy usando WordPress en 2026. De plataformas obsoletas a arquitecturas modernas, escalables y seguras.</description><pubDate>Thu, 10 Apr 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, miles de empresas operan sitios web construidos sobre plataformas legacy que cuestan una fortuna mantener, ofrecen rendimiento mediocre y no pueden adaptarse a las exigencias del mercado digital moderno. Drupal 7 sin soporte, Sitecore con licencias astronómicas, CMS propietarios sin actualizaciones, y sitios estaticos que nadie sabe como editar: todos son candidatos para modernizacion con WordPress.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía cubre el proceso completo de modernizacion, desde la auditoria inicial hasta la optimización post-lanzamiento.&lt;/p&gt;
&lt;h2 id=&quot;1-por-que-modernizar-ahora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-por-que-modernizar-ahora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Por que modernizar ahora&lt;/h2&gt;
&lt;h3 id=&quot;el-coste-de-no-modernizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-coste-de-no-modernizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El coste de no modernizar&lt;/h3&gt;
&lt;p&gt;Los sitios legacy no solo son caros de mantener: son un riesgo activo para el negocio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Costes directos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Licencias de CMS obsoletos: 50.000-500.000 EUR/año&lt;/li&gt;
&lt;li&gt;Desarrolladores especializados en tecnologías legacy: 2-3x más caros&lt;/li&gt;
&lt;li&gt;Hosting de infraestructura antigua: 2-5x más caro que soluciones modernas&lt;/li&gt;
&lt;li&gt;Parches de seguridad manuales: Miles de euros en horas de consultoria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Costes indirectos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Perdida de posiciones SEO por rendimiento pobre y tecnología obsoleta&lt;/li&gt;
&lt;li&gt;Imposibilidad de publicar contenido rápidamente (semanas vs. minutos)&lt;/li&gt;
&lt;li&gt;Vulnerabilidades de seguridad sin parches disponibles&lt;/li&gt;
&lt;li&gt;Incapacidad de integrar herramientas modernas de marketing&lt;/li&gt;
&lt;li&gt;Dano a la imagen de marca por experiencia de usuario anticuada&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;señales-de-que-necesita-modernizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-que-necesita-modernizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de que necesita modernizar&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Su sitio tarda más de 3 segundos en cargar en móvil&lt;/li&gt;
&lt;li&gt;Publicar una página nueva toma más de 1 dia&lt;/li&gt;
&lt;li&gt;Su CMS ya no recibe actualizaciones de seguridad&lt;/li&gt;
&lt;li&gt;Los desarrolladores que mantienen el sitio son dificiles de encontrar&lt;/li&gt;
&lt;li&gt;No puede integrar herramientas modernas (analytics, CRM, marketing automation)&lt;/li&gt;
&lt;li&gt;Su sitio no es responsive o tiene problemas graves en móvil&lt;/li&gt;
&lt;li&gt;El coste de mantenimiento anual supera el 30% del coste de reconstruccion&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;2-auditoria-del-sitio-legacy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-auditoria-del-sitio-legacy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Auditoria del sitio legacy&lt;/h2&gt;
&lt;p&gt;Antes de planificar la migración, necesita un inventario completo del sitio actual.&lt;/p&gt;
&lt;h3 id=&quot;inventario-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inventario-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inventario de contenido&lt;/h3&gt;
&lt;p&gt;Documente todo el contenido existente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas&lt;/strong&gt;: Cantidad, estructura jerarquica, URLs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog/Noticias&lt;/strong&gt;: Cantidad de artículos, categorías, etiquetas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medios&lt;/strong&gt;: Imágenes, videos, documentos PDF&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios&lt;/strong&gt;: Formularios de contacto, suscripcion, registro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funcionalidades especiales&lt;/strong&gt;: Buscador, calculadoras, configuradores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integraciones&lt;/strong&gt;: CRM, ERP, marketing automation, analytics&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;inventario-técnico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inventario-técnico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inventario técnico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stack tecnológico&lt;/strong&gt;: Lenguaje, framework, base de datos, servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento actual&lt;/strong&gt;: PageSpeed Insights, Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO actual&lt;/strong&gt;: Posiciones, tráfico organico, backlinks, estructura URL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Vulnerabilidades conocidas, certificados, conformidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accesibilidad&lt;/strong&gt;: Nivel actual de cumplimiento WCAG&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mapa-de-funcionalidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mapa-de-funcionalidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mapa de funcionalidades&lt;/h3&gt;
&lt;p&gt;Catalogue cada funcionalidad del sitio actual y su equivalente WordPress:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Funcionalidad legacy&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Equivalente WordPress&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;CMS propietario&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WordPress Core + Gutenberg&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Formularios custom&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gravity Forms / WPForms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Buscador interno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Algolia / SearchWP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Gestión de usuarios&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WordPress Roles + Members&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Newsletter&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mailchimp / HubSpot integration&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;E-commerce&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WooCommerce&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Multilingual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WPML / Polylang&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Workflow de aprobacion&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;PublishPress / Edit Flow&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;3-arquitectura-wordpress-objetivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-arquitectura-wordpress-objetivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Arquitectura WordPress objetivo&lt;/h2&gt;
&lt;h3 id=&quot;para-sitios-de-100-1000-páginas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-sitios-de-100-1000-páginas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para sitios de 100-1.000 páginas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura recomendada: WordPress gestionado&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hosting: Kinsta, WP Engine o Cloudways&lt;/li&gt;
&lt;li&gt;Tema: Tema de bloques personalizado con FSE&lt;/li&gt;
&lt;li&gt;Plugins: ACF Pro, Yoast/RankMath, Wordfence&lt;/li&gt;
&lt;li&gt;CDN: Cloudflare o Bunny.net&lt;/li&gt;
&lt;li&gt;Cache: Cache nativo del hosting + Redis Object Cache&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;para-sitios-de-1000-10000-páginas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-sitios-de-1000-10000-páginas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para sitios de 1.000-10.000+ páginas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura recomendada: WordPress headless&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Backend: WordPress en Kinsta/WP Engine&lt;/li&gt;
&lt;li&gt;Frontend: Astro o Next.js en Vercel/Cloudflare Pages&lt;/li&gt;
&lt;li&gt;API: WPGraphQL para consultas eficientes&lt;/li&gt;
&lt;li&gt;CDN: Cloudflare con cache edge&lt;/li&gt;
&lt;li&gt;Búsqueda: Algolia o Typesense&lt;/li&gt;
&lt;li&gt;Cache: Redis + edge caching&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;para-sitios-multilingues-globales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-sitios-multilingues-globales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para sitios multilingues globales&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Arquitectura recomendada: WordPress Multisite&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress Multisite con subsitios por idioma/region&lt;/li&gt;
&lt;li&gt;WPML o Polylang para gestión de traducciones&lt;/li&gt;
&lt;li&gt;CDN con regiones multiples&lt;/li&gt;
&lt;li&gt;Redis en modo cluster&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/global-content-strategy-management-wordpress-2026-enterprise-guide/&quot;&gt;Estrategia global de contenidos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-proceso-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-proceso-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Proceso de migración&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-preparacion-semanas-1-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-preparacion-semanas-1-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Preparacion (Semanas 1-4)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Congelar URLs&lt;/strong&gt;: Documentar cada URL del sitio actual con su contenido y tráfico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crear mapa de redirects&lt;/strong&gt;: Para cada URL que cambie, definir el redirect 301 correspondiente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exportar contenido&lt;/strong&gt;: Usar scripts para extraer contenido del CMS legacy a formato compatible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurar entorno staging&lt;/strong&gt;: Instalar WordPress en un entorno de pruebas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-2-desarrollo-semanas-5-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-desarrollo-semanas-5-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Desarrollo (Semanas 5-12)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tema WordPress&lt;/strong&gt;: Desarrollar el nuevo tema/frontend basandose en el rediseño aprobado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funcionalidades&lt;/strong&gt;: Implementar cada funcionalidad del mapa con plugins o código personalizado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integraciones&lt;/strong&gt;: Conectar con CRM, analytics, marketing automation y otros sistemas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importar contenido&lt;/strong&gt;: Migrar contenido con scripts automatizados, preservando metadatos y estructura.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-3-testing-semanas-13-16&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-testing-semanas-13-16&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Testing (Semanas 13-16)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;QA funcional&lt;/strong&gt;: Verificar cada funcionalidad en multiples dispositivos y navegadores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QA de contenido&lt;/strong&gt;: Verificar que todo el contenido migro correctamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QA SEO&lt;/strong&gt;: Verificar URLs, redirects, metadatos, sitemaps y datos estructurados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QA de rendimiento&lt;/strong&gt;: Medir Core Web Vitals y optimizar hasta alcanzar objetivos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QA de seguridad&lt;/strong&gt;: &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad&lt;/a&gt; completa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QA de accesibilidad&lt;/strong&gt;: Verificar cumplimiento WCAG 2.2.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-4-lanzamiento-semana-17&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-lanzamiento-semana-17&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Lanzamiento (Semana 17)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Plan de rollback&lt;/strong&gt;: Definir procedimiento para volver al sitio anterior si algo falla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambio DNS&lt;/strong&gt;: Apuntar el dominio al nuevo servidor WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activar redirects&lt;/strong&gt;: Implementar todos los redirects 301.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificar indexacion&lt;/strong&gt;: Enviar nuevo sitemap a Google Search Console.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo intensivo&lt;/strong&gt;: Vigilar tráfico, errores y rendimiento durante las primeras 48 horas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-5-optimización-post-lanzamiento-semanas-18-24&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-5-optimización-post-lanzamiento-semanas-18-24&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 5: Optimización post-lanzamiento (Semanas 18-24)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Monitorear tráfico organico&lt;/strong&gt;: Comparar con periodo pre-migración.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Corregir errores 404&lt;/strong&gt;: Identificar y corregir URLs que no estan redirigidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizar rendimiento&lt;/strong&gt;: Ajustar cache, imágenes y scripts basandose en datos reales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capacitar al equipo&lt;/strong&gt;: Formar editores y administradores en el nuevo WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iterar&lt;/strong&gt;: Mejorar basandose en feedback de usuarios y datos de analytics.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;5-preservacion-de-seo-durante-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-preservacion-de-seo-durante-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Preservacion de SEO durante la migración&lt;/h2&gt;
&lt;p&gt;La preservacion del SEO es el aspecto más crítico de cualquier migración corporativa. Una migración mal ejecutada puede destruir años de posicionamiento organico.&lt;/p&gt;
&lt;h3 id=&quot;reglas-de-oro-para-preservar-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reglas-de-oro-para-preservar-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reglas de oro para preservar SEO&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Preservar URLs siempre que sea posible&lt;/strong&gt;: La mejor redireccion es la que no necesita existir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redirects 301 para cada URL que cambie&lt;/strong&gt;: Sin excepciones. Cada URL antigua debe redirigir a su equivalente nueva.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrar todos los metadatos&lt;/strong&gt;: Títulos, descriptions, canonical URLs, hreflang.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantener la estructura de enlaces internos&lt;/strong&gt;: Los enlaces internos son una señal SEO crítica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preservar los datos estructurados&lt;/strong&gt;: Schema.org, FAQ, HowTo deben mantenerse o mejorarse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notificar a Google&lt;/strong&gt;: Enviar nuevo sitemap, solicitar rastreo de URLs clave.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;monitoreo-post-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-post-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo post-migración&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Semana 1-2: Caida tipica del 10-30% en tráfico organico (normal)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Semana 3-4: Recuperacion gradual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Semana 5-8: Vuelta a niveles pre-migración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Semana 9-12: Mejora sobre niveles pre-migración (gracias a mejor rendimiento)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si el tráfico no se recupera despues de 4 semanas, revise:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Redirects faltantes o incorrectos&lt;/li&gt;
&lt;li&gt;Errores de indexacion en Search Console&lt;/li&gt;
&lt;li&gt;Problemás de renderizado o contenido bloqueado&lt;/li&gt;
&lt;li&gt;Cannonical tags incorrectos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-roi-de-la-modernizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-roi-de-la-modernizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. ROI de la modernizacion&lt;/h2&gt;
&lt;h3 id=&quot;caso-tipico-migración-de-drupal-7-a-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-tipico-migración-de-drupal-7-a-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso tipico: Migración de Drupal 7 a WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Inversión:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desarrollo: 80.000 EUR&lt;/li&gt;
&lt;li&gt;Migración: 20.000 EUR&lt;/li&gt;
&lt;li&gt;Testing: 10.000 EUR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total: 110.000 EUR&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ahorro anual:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Licencias eliminadas: 0 (Drupal es open source, pero los modulos custom cuestan)&lt;/li&gt;
&lt;li&gt;Reduccion hosting: 15.000 EUR/año&lt;/li&gt;
&lt;li&gt;Reduccion mantenimiento: 25.000 EUR/año&lt;/li&gt;
&lt;li&gt;Mayor velocidad de publicación: 20.000 EUR/año (valor de productividad)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro anual: 60.000 EUR&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ROI&lt;/strong&gt;: Positivo en 22 meses.&lt;/p&gt;
&lt;h3 id=&quot;caso-tipico-migración-de-sitecore-a-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-tipico-migración-de-sitecore-a-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso tipico: Migración de Sitecore a WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Inversión:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desarrollo: 120.000 EUR&lt;/li&gt;
&lt;li&gt;Migración: 30.000 EUR&lt;/li&gt;
&lt;li&gt;Testing: 15.000 EUR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total: 165.000 EUR&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ahorro anual:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Licencias eliminadas: 150.000 EUR/año&lt;/li&gt;
&lt;li&gt;Reduccion hosting: 20.000 EUR/año&lt;/li&gt;
&lt;li&gt;Reduccion mantenimiento: 40.000 EUR/año&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro anual: 210.000 EUR&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ROI&lt;/strong&gt;: Positivo en 10 meses.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La modernizacion de sitios corporativos legacy con WordPress es una de las inversiones más rentables que una empresa puede hacer en su infraestructura digital en 2026. Los ahorros en licencias, mantenimiento y hosting, combinados con mejoras en rendimiento, seguridad y velocidad de publicación, generan un ROI positivo tipicamente en 12-18 meses.&lt;/p&gt;
&lt;p&gt;Si esta considerando modernizar su sitio corporativo, contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para una evaluación gratuita. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño web&lt;/a&gt; y &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración&lt;/a&gt; para empresas que buscan modernizar su presencia digital.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Modernizacion de sitios corporativos&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Arquitecturas modernas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a frameworks modernos&lt;/a&gt; - Headless y composable&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad&lt;/a&gt; - Seguridad post-migración&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Soporte continuo post-lanzamiento&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>development</category><category domain="tag">legacy-modernization</category><category domain="tag">enterprise-wordpress</category><category domain="tag">migration</category><category domain="tag">digital-transformation</category><category domain="tag">corporate-websites</category><enclosure url="https://wppoland.com/images/og/debugging-complex-wordpress-site.jpg" type="image/jpeg"/></item><item><title>WordPress vs. Contentful 2026: Arquitectura CMS Headless para empresas</title><link>https://wppoland.com/es/wordpress-vs-contentful-2026-headless-comparison/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-vs-contentful-2026-headless-comparison/</guid><description>Eligiendo entre WordPress y Contentful en 2026? Esta comparación exhaustiva de más de 2500 palabras profundiza en arquitecturas Headless, entrega API-first, costo total de propiedad y experiencia de desarrollador.</description><pubDate>Tue, 08 Apr 2025 10:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;wordpress-vs-contentful-2026-la-batalla-de-arquitecturas-cms-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-vs-contentful-2026-la-batalla-de-arquitecturas-cms-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress vs. Contentful 2026: La batalla de arquitecturas CMS Headless&lt;/h2&gt;
&lt;p&gt;En 2026, el termino “CMS” ha experimentado una transformación radical. Ya no solo gestionamos páginas; gestionamos &lt;strong&gt;grafos de contenido&lt;/strong&gt;. A medida que la entrega omnicanal se convierte en estándar, la eleccion entre &lt;strong&gt;WordPress&lt;/strong&gt; (en su capacidad Headless o Hibrida) y &lt;strong&gt;Contentful&lt;/strong&gt; (el rey del Headless SaaS puro) se ha convertido en una decision arquitectonica de primer nivel.&lt;/p&gt;
&lt;p&gt;En este análisis exhaustivo de más de 2500 palabras, exploramos las implicaciones técnicas, financieras y estrategicas de elegir entre el CMS más popular del mundo y el lider de la industria en Contenido Componible.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Astro y Next.js&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-la-arquitectura-base-basado-en-documentos-vs-schema-first&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-arquitectura-base-basado-en-documentos-vs-schema-first&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La arquitectura base: Basado en documentos vs. Schema-First&lt;/h2&gt;
&lt;h3 id=&quot;wordpress-la-evolucion-al-desacoplado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-la-evolucion-al-desacoplado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress: La evolucion al desacoplado&lt;/h3&gt;
&lt;p&gt;WordPress nacio como motor de blogs, un sistema basado en documentos. Sin embargo, en 2026, es un &lt;strong&gt;Framework Hibrido&lt;/strong&gt; que puede operar en multiples modos simultaneamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La ventaja hibrida&lt;/strong&gt;: Puede usar WordPress para un sitio web tradicional mientras expone simultaneamente todos los datos via &lt;strong&gt;WPGraphQL&lt;/strong&gt;. Esta dualidad permite una transicion gradual de tradicional a headless sin disrupciones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fácilidad de uso&lt;/strong&gt;: Los equipos de marketing pueden seguir usando el editor visual de bloques (Gutenberg) para ver su contenido, incluso si el frontend real es una aplicación React o Astro separada. Esta experiencia editorial rica es una ventaja competitiva significativa.&lt;/p&gt;
&lt;h3 id=&quot;contentful-el-headless-puro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contentful-el-headless-puro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contentful: El Headless puro&lt;/h3&gt;
&lt;p&gt;Contentful es &lt;strong&gt;API-First&lt;/strong&gt; y &lt;strong&gt;Content-First&lt;/strong&gt;. No se preocupa por un sitio web; se preocupa por datos estructurados que pueden ser consumidos por cualquier canal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modelado de contenido&lt;/strong&gt;: Comienza con un lienzo en blanco y define “Content Types” (ej., “Producto”, “Banner Hero”, “Resena”). Esta estructura estricta asegura consistencia de datos a través de todos los canales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Poder omnicanal&lt;/strong&gt;: Porque el contenido es puramente datos estructurados, es igualmente comodo siendo consumido por un sitio web React, una app móvil Flutter, una interfaz Apple Vision Pro o un kiosco en tienda.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-experiencia-de-desarrollador-react-nextjs-y-astro-5&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-experiencia-de-desarrollador-react-nextjs-y-astro-5&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Experiencia de desarrollador: React, Next.js y Astro 5&lt;/h2&gt;
&lt;p&gt;En el stack de desarrollo moderno de 2026, los desarrolladores ya no quieren escribir plantillas PHP. Quieren consumir JSON y construir interfaces con frameworks JavaScript modernos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trabajando con WordPress&lt;/strong&gt;: Los desarrolladores usan &lt;strong&gt;WPGraphQL&lt;/strong&gt;. Es el estándar de 2026. La capacidad de consultar solo los datos necesarios (ej., “Dame el título y la imagen destacada de los últimos 5 posts”) reduce significativamente el tamaño de las respuestas.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;graphql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; UltimosArticulos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;  posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;first&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    nodes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      featuredImage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          sourceUrl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; MEDIUM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;          altText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;      slug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Trabajando con Contentful&lt;/strong&gt;: Las APIs CMA y CDA de Contentful son increiblemente robustas. Ofrecen SDKs especializados para cada lenguaje principal. Se siente como una herramienta de software, mientras que WordPress todavia se siente como una herramienta de contenido, una distincion importante para equipos de ingenieria.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-seo-y-optimización-para-llm-llmo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-seo-y-optimización-para-llm-llmo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. SEO y optimización para LLM (LLMO) en 2026&lt;/h2&gt;
&lt;p&gt;La forma en que los modelos de IA “ingieren” su contenido depende de lo clara que sea su estructura. En 2026, el SEO se ha expandido para incluir optimización para modelos de lenguaje grandes.&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress (Headless)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Contentful&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Generación de Schema&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fácil via RankMath/Plugins personalizados&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Debe definirse manualmente en la capa frontend&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Control de Sitemap&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Automático y altamente granular&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Requiere middleware separado o lógica frontend&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Claridad semántica&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Los bloques proporcionan buen contexto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Maxima; los campos estan estrictamente tipados&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Indexacion LLM&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente para narrativa de largo formato&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Mejor para “Hechos” técnicos y data-heavy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;E-E-A-T&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fácil de implementar con perfiles de autor&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Requiere construir todo el modelo de relaciones desde cero&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Señal E-E-A-T&lt;/strong&gt;: WordPress permite conectar fácilmente autores con perfiles autoritativos de “Experto”. En Contentful, tiene que construir todo este modelo de relaciones desde cero, lo cual agrega complejidad y costo al proyecto.&lt;/p&gt;
&lt;p&gt;Para estrategias SEO avanzadas, consulte nuestra guía de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-costo-total-de-propiedad-tco-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-costo-total-de-propiedad-tco-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Costo total de propiedad (TCO) en 2026&lt;/h2&gt;
&lt;p&gt;Aqui es donde la divergencia es más visible y frecuentemente decide la eleccion.&lt;/p&gt;
&lt;h3 id=&quot;el-tco-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-tco-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El TCO de WordPress&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Costo mensual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Costo anual&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Licencia&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Hosting gestionado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$50 - $200&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$600 - $2,400&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plugins premium&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$10 - $30&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$120 - $360&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$60 - $230&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$720 - $2,760&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Escalado&lt;/strong&gt;: Lineal. Servir 1 millon de usuarios via un frontend estatico (Astro) con WordPress como fuente Headless cuesta muy poco en recursos de servidor.&lt;/p&gt;
&lt;h3 id=&quot;el-tco-de-contentful&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-tco-de-contentful&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El TCO de Contentful&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Costo mensual&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Costo anual&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plan Team&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$489&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$5,868&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plan Enterprise&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$3,000+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$36,000+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;API calls adicionales&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Variable&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$2,000 - $10,000+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total (Enterprise)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$3,500+&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$42,000+&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Limites de API&lt;/strong&gt;: Alto tráfico significa mayores costos de API. Cada solicitud adicional incrementa la factura mensual de forma predecible pero significativa.&lt;/p&gt;
&lt;h3 id=&quot;comparativa-a-3-años&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparativa-a-3-años&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparativa a 3 años&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Headless&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Contentful Enterprise&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Año 1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$15K (setup + hosting)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$50K (licencia + setup)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Año 2&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$3K (hosting)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$42K (licencia)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Año 3&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$3K (hosting)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$42K (licencia)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total 3 años&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$21K&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$134K&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ahorro con WordPress&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$113K&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-seguridad-y-gobernanza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-seguridad-y-gobernanza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Seguridad y gobernanza&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: La seguridad es una “Responsabilidad Compartida”. Debe asegurar que sus endpoints API esten bloqueados y su nucleo WordPress actualizado. Sin embargo, en 2026, &lt;strong&gt;WordPress Headless&lt;/strong&gt; es inherentemente más seguro porque la “superficie de ataque” (la parte pública) esta desacoplada del backend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contentful&lt;/strong&gt;: La seguridad es “Gestionada”. Contentful maneja la seguridad del backend. Solo necesita preocuparse por la seguridad de sus propias claves API. Para empresas avesas al riesgo que no quieren gestionar actualizaciones, el “jardin amurallado” de Contentful es atractivo.&lt;/p&gt;
&lt;h3 id=&quot;comparativa-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparativa-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparativa de seguridad&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Aspecto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Headless&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Contentful&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Actualizaciones&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gestionadas por el equipo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Automaticas (SaaS)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Superficie de ataque&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Minima (API only)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Minima (API only)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Control&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Total&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitado al API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Compliance&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Configurable (FedRAMP, SOC2)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Proporcionado por Contentful&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Auditoria&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Completa con plugins&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Via API de auditoria&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-rendimiento-la-velocidad-del-contenido-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-rendimiento-la-velocidad-del-contenido-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Rendimiento: La velocidad del contenido API&lt;/h2&gt;
&lt;p&gt;Cuando construye un sitio de alto rendimiento, la &lt;strong&gt;computacion Edge&lt;/strong&gt; es el rey.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress Headless&lt;/strong&gt;: Usando &lt;strong&gt;WP Engine Atlas&lt;/strong&gt; o una configuración personalizada Vercel/Netlify, puede pre-renderizar todo su sitio. Cuando un editor hace clic en “Publicar”, WordPress Headless envia un webhook a su pipeline CI/CD, reconstruyendo el sitio estatico en segundos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contentful&lt;/strong&gt;: Disenado para este flujo de trabajo. Es increiblemente rápido. Sin embargo, porque es SaaS multi-inquilino, ocasionalmente esta sujeto a latencia API global durante horas pico, mientras que una instancia WordPress Headless dedicada en un VPS de alto nivel esta completamente bajo su control.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-el-desafio-del-flujo-de-trabajo-gutenberg-vs-campos-de-formulario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-desafio-del-flujo-de-trabajo-gutenberg-vs-campos-de-formulario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El desafio del flujo de trabajo: Gutenberg vs. campos de formulario&lt;/h2&gt;
&lt;p&gt;Este es el punto de dolor más grande para los equipos de marketing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: Los autores lo aman. Pueden arrastrar y soltar bloques, ver el layout y usar IA para generar imágenes y texto dentro del editor. La experiencia de escritura es natural e intuitiva.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contentful&lt;/strong&gt;: Los autores frecuentemente lo encuentran “frio”. Estan llenando campos de formulario. Mientras la app “Compose” de Contentful busca cerrar esta brecha, todavia se siente más como una interfaz de base de datos que como una plataforma de escritura creativa.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-casos-de-estudio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-casos-de-estudio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Casos de estudio&lt;/h2&gt;
&lt;h3 id=&quot;retailer-omnicanal-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#retailer-omnicanal-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Retailer omnicanal 2026&lt;/h3&gt;
&lt;p&gt;Una marca retail global necesitaba gestionar descripciones de productos a través de: sitio e-commerce, app móvil iOS/Android y pantallas de vestidor interactivas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La eleccion&lt;/strong&gt;: Eligieron &lt;strong&gt;Contentful&lt;/strong&gt;.
&lt;strong&gt;La razon&lt;/strong&gt;: No necesitaban un “Sitio Web” en el sentido tradicional; necesitaban un “Hub Central de Verdad”. El modelado estricto de Contentful aseguraba que una descripción de producto actualizada una vez se reflejara perfectamente en los tres dispositivos con 100% de fiabilidad API.&lt;/p&gt;
&lt;h3 id=&quot;blog-educativo-de-alto-tráfico-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#blog-educativo-de-alto-tráfico-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Blog educativo de alto tráfico 2026&lt;/h3&gt;
&lt;p&gt;Un editor tecnológico lider gestionaba 50.000 artículos.
&lt;strong&gt;La eleccion&lt;/strong&gt;: Eligieron &lt;strong&gt;WordPress Headless&lt;/strong&gt;.
&lt;strong&gt;La razon&lt;/strong&gt;: El costo de Contentful para 50.000 registros era prohibitivo (más de $100K anuales). Usando WordPress con &lt;strong&gt;WPGraphQL&lt;/strong&gt;, mantuvieron sus datos legacy mientras construian un frontend ultrarrápido con &lt;strong&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Astro 5&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-matriz-de-comparación-wppoland-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-matriz-de-comparación-wppoland-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Matriz de comparación WPPoland 2026&lt;/h2&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress (Hibrido)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Contentful (Headless puro)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cuota de mercado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;45%+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C; 1%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Personalización&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Infinita (GPL)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada a la API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ecosistema de plugins&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;60.000+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Marketplace en crecimiento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;TCO&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo a medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto (Enterprise)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Fácilidad para editores&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;DX desarrollador&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta (WPGraphQL)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta (CMA/CDA)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Soporte multilingue&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Via plugins (excelente)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo (excelente)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Búsqueda integrada&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Via Elasticsearch&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Requiere servicio externo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-faq-preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-faq-preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. FAQ: Preguntas frecuentes&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Se puede usar WordPress como CMS Headless?&lt;/strong&gt; Si, y en 2026 es una de las formás más estables y populares de hacerlo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contentful es mejor para proyectos pequeños?&lt;/strong&gt; El tier gratuito es genial para proyectos pequeños, pero escalar se vuelve costoso muy rápidamente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WordPress Headless afecta el SEO?&lt;/strong&gt; No. De hecho, al permitir usar frameworks como &lt;strong&gt;Astro&lt;/strong&gt;, puede mejorar significativamente sus puntuaciones SEO.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contentful es más seguro que WordPress?&lt;/strong&gt; La seguridad gestionada es más fácil, pero una instancia WordPress endurecida es igualmente segura para uso profesional.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Que es un “CMS Hibrido”?&lt;/strong&gt; Un sistema que permite usar plantillas tradicionales &lt;em&gt;y&lt;/em&gt; APIs Headless simultaneamente. WordPress destaca en esto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Necesito un servidor para Contentful?&lt;/strong&gt; No, es 100% SaaS. Sin embargo, necesita un servidor (o plataforma serverless como Vercel) para su frontend.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Puedo usar WooCommerce Headless?&lt;/strong&gt; Si. &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;WooCommerce Headless&lt;/a&gt; (usando la API REST) es una tendencia poderosa en 2026 para tiendas de alto rendimiento.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contentful es mejor para apps móviles?&lt;/strong&gt; Generalmente si, porque fue construido desde el primer dia para entornos no web.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cual es mejor para integración con IA?&lt;/strong&gt; WordPress tiene un ecosistema de plugins más maduro para IA (indexacion, generación, análisis).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Puedo cambiar de uno a otro?&lt;/strong&gt; Es dificil. Implica migrar datos entre modelos filosoficos diferentes (documentos vs. datos estructurados).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;11-conclusion-el-veredicto-del-decisor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-conclusion-el-veredicto-del-decisor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;11. Conclusion: El veredicto del decisor&lt;/h2&gt;
&lt;p&gt;En 2026, &lt;strong&gt;WordPress gana&lt;/strong&gt; en versatilidad, costo y experiencia editorial. Es la eleccion “Segura” y “Escalable” para el 90% de los casos de uso empresariales. &lt;strong&gt;Contentful gana&lt;/strong&gt; en modelado de datos puro y sofisticacion omnicanal para marcas masivas y globales con ecosistemas de apps complejos.&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, somos expertos en &lt;strong&gt;WordPress Headless&lt;/strong&gt;. Ayudamos a convertir su instalación WordPress en un motor de contenido de alto rendimiento que alimenta los frontends del futuro.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No se conforme con el CMS de ayer. Construya para 2026 con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Arquitectura headless empresarial&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Frontends modernos para WordPress headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento API para headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - E-commerce headless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO WordPress&lt;/a&gt; - SEO para arquitecturas headless&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>business</category><category domain="tag">wordpress-vs-contentful</category><category domain="tag">headless-cms</category><category domain="tag">api-first</category><category domain="tag">enterprise-architecture</category><category domain="tag">performance-2026</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Optimización de Interaction to Next Paint (INP): El rey definitivo del SEO en 2026</title><link>https://wppoland.com/es/interaction-to-next-paint-inp-optimization-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/interaction-to-next-paint-inp-optimization-guide-2026/</guid><description>FID esta muerto. Interaction to Next Paint (INP) es el nuevo estándar de interactividad web. Aprende a dominar este factor de ranking 2026 para WordPress.</description><pubDate>Sat, 05 Apr 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;En 2026, la definicion de un sitio web &quot;rápido&quot; ha evolucionado más alla de cuan rápido aparece la primera imagen. Hoy, la velocidad se define por la &lt;strong&gt;responsividad&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cuando un usuario hace clic en un boton de tu sitio WordPress, reacciona instantaneamente, o hay un “hipo” perceptible? Esta brecha - el tiempo entre la accion del usuario y la respuesta visual del navegador - es lo que mide &lt;strong&gt;Interaction to Next Paint (INP)&lt;/strong&gt;. Desde que Google lo convirtio en un factor de ranking central, INP se ha convertido en el asesino silencioso de rankings para sitios que dependen demasiado de JavaScript no optimizado.&lt;/p&gt;
&lt;p&gt;En esta guía técnica de más de 2500 palabras, desglosamos como optimizar tu sitio WordPress para la metrica de rendimiento más importante de 2026.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-entendiendo-el-ciclo-de-vida-de-inp-las-tres-fases&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-entendiendo-el-ciclo-de-vida-de-inp-las-tres-fases&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Entendiendo el ciclo de vida de INP: Las tres fases&lt;/h2&gt;
&lt;p&gt;INP no es solo un número; es la suma de tres fases distintas que ocurren cada vez que un usuario interactua con tu sitio:&lt;/p&gt;
&lt;h3 id=&quot;input-delay-retardo-de-entrada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#input-delay-retardo-de-entrada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Input Delay (Retardo de Entrada)&lt;/h3&gt;
&lt;p&gt;El tiempo entre la interacción del usuario y el momento en que los manejadores de eventos del sitio comienzan a ejecutarse. Esto ocurre cuando el hilo principal esta ocupado con otra tarea (como ejecutar un script de analytics o procesar una animacion CSS) en el momento exacto en que el usuario hace clic.&lt;/p&gt;
&lt;h3 id=&quot;processing-time-tiempo-de-procesamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#processing-time-tiempo-de-procesamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Processing Time (Tiempo de Procesamiento)&lt;/h3&gt;
&lt;p&gt;El tiempo que tardan esos manejadores de eventos en ejecutarse. Si tu handler de clic realiza calculos complejos, consulta el DOM extensivamente o ejecuta lógica de negocio pesada, esta fase será larga.&lt;/p&gt;
&lt;h3 id=&quot;presentation-delay-retardo-de-presentacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#presentation-delay-retardo-de-presentacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Presentation Delay (Retardo de Presentacion)&lt;/h3&gt;
&lt;p&gt;El tiempo que le toma al navegador recalcular el layout y pintar el siguiente frame en la pantalla. Incluso si tu código termina rápido, un DOM profundo y cambios de estilo complejos pueden hacer que esta fase sea costosa.&lt;/p&gt;
&lt;p&gt;Para lograr una calificación “Buena” (inferior a 200ms), debes minimizar las tres fases. En la práctica, esto significa que cada interacción - desde un clic en un menú de navegación hasta una pulsacion de tecla en un campo de búsqueda - debe completarse visualmente en menos de 200 milisegundos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-fase-1-reduciendo-el-input-delay-liberando-el-hilo-principal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-fase-1-reduciendo-el-input-delay-liberando-el-hilo-principal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Fase 1: Reduciendo el Input Delay (Liberando el hilo principal)&lt;/h2&gt;
&lt;p&gt;El input delay es generalmente causado por el hilo principal estando ocupado con algo más cuando el usuario intenta hacer clic. En WordPress, los culpables más comunes son scripts de terceros que se ejecutan periodicamente sin consideracion por las interacciones del usuario.&lt;/p&gt;
&lt;h3 id=&quot;yielding-al-hilo-principal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#yielding-al-hilo-principal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Yielding al hilo principal&lt;/h3&gt;
&lt;p&gt;Usamos &lt;code&gt;scheduler.yield()&lt;/code&gt; o &lt;code&gt;requestIdleCallback&lt;/code&gt; para dividir tareas de JavaScript de larga duracion en fragmentos más pequeños. Esto permite al navegador “interrumpir” una tarea secundaria para manejar una interacción del usuario.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Antes: Tarea larga que bloquea el hilo principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; processLargeList&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  items.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    expensiveOperation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(item);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Despues: Tarea dividida con yielding&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; processLargeList&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; items) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    expensiveOperation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(item);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (navigator.scheduling?.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;isInputPending&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;?.()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; scheduler.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;yield&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;eliminando-javascript-no-utilizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminando-javascript-no-utilizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminando JavaScript no utilizado&lt;/h3&gt;
&lt;p&gt;Usamos herramientas modernas de WordPress para asegurar que solo el JS necesario para la vista actual se carga. Si un usuario esta en una entrada de blog, por que se esta cargando la biblioteca JS de checkout de WooCommerce? La carga condicional de assets es fundamental.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h3 id=&quot;deferring-de-scripts-no-críticos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deferring-de-scripts-no-críticos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deferring de scripts no críticos&lt;/h3&gt;
&lt;p&gt;En 2026, categorizamos los scripts en tres niveles de prioridad:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Críticos&lt;/strong&gt;: Necesarios para la funcionalidad inmediata de la página (cargados en &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; con &lt;code&gt;async&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importantes&lt;/strong&gt;: Necesarios para la interactividad pero no para la carga inicial (cargados con &lt;code&gt;defer&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No críticos&lt;/strong&gt;: Analytics, chat widgets, tracking (cargados despues del evento &lt;code&gt;load&lt;/code&gt; o al detectar interacción)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-fase-2-optimizando-el-processing-time&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-fase-2-optimizando-el-processing-time&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Fase 2: Optimizando el Processing Time&lt;/h2&gt;
&lt;p&gt;Esta es donde la eficiencia de tu código se pone a prueba directamente.&lt;/p&gt;
&lt;h3 id=&quot;manejadores-de-eventos-ligeros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejadores-de-eventos-ligeros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejadores de eventos ligeros&lt;/h3&gt;
&lt;p&gt;Evita lógica compleja dentro de handlers de clic. En lugar de calcular un cambio de precio complejo directamente en el evento de clic, dispara un cambio de estado y deja que el navegador maneje la actualización asincronicamente.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Antes: Logica pesada en el handler&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;button.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; price&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; calculateComplexPrice&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(product, variants, discounts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  updateDOM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(price);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  sendAnalytics&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;price_calculated&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, price);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  updateCart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(product, price);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Despues: Handler ligero con trabajo diferido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;button.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  requestAnimationFrame&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; price&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; calculateComplexPrice&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(product, variants, discounts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    updateDOM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(price);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Analytics diferido al tiempo idle&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  requestIdleCallback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    sendAnalytics&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;price_calculated&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, price);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    updateCart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(product, price);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;la-estrategia-partytown&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-estrategia-partytown&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La estrategia “Partytown”&lt;/h3&gt;
&lt;p&gt;Mover scripts de terceros no esenciales (chatbots, analytics) a un Web Worker. Esto asegura que nunca bloqueen el hilo principal, reduciendo efectivamente el processing time a casí cero para tareas no criticas del negocio.&lt;/p&gt;
&lt;p&gt;Partytown es particularmente efectivo en WordPress donde plugins como Google Tag Manager, Facebook Pixel, Hotjar y Intercom compiten por el hilo principal. Al moverlos a un Web Worker, el hilo principal queda libre exclusivamente para interacciones del usuario.&lt;/p&gt;
&lt;h3 id=&quot;virtualizacion-de-listas-largas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#virtualizacion-de-listas-largas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Virtualizacion de listas largas&lt;/h3&gt;
&lt;p&gt;Para páginas de WordPress con listas extensas (como archivos de blog, catálogos de productos WooCommerce o tablas de datos), implementamos virtualizacion. En lugar de renderizar 500 elementos en el DOM, solo renderizamos los 20 visibles en el viewport, creando y destruyendo elementos a medida que el usuario hace scroll.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-fase-3-minimizando-el-presentation-delay&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-fase-3-minimizando-el-presentation-delay&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Fase 3: Minimizando el Presentation Delay&lt;/h2&gt;
&lt;p&gt;Incluso si tu código termina rápido, el navegador puede luchar para “pintar” el resultado si el DOM es complejo o los estilos son costosos de recalcular.&lt;/p&gt;
&lt;h3 id=&quot;reduciendo-layout-thrashing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reduciendo-layout-thrashing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reduciendo Layout Thrashing&lt;/h3&gt;
&lt;p&gt;Los temas WordPress modernos de 2026 evitan leer una propiedad e inmediatamente escribir en ella (por ejemplo, &lt;code&gt;offsetWidth&lt;/code&gt; seguido de &lt;code&gt;style.width&lt;/code&gt;). Esto fuerza al navegador a recalcular el layout demasiadas veces, un patron conocido como “layout thrashing” que puede multiplicar por 10 el presentation delay.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Layout thrashing - EVITAR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;elements.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; el.offsetWidth; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Fuerza recalculo de layout&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  el.style.width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;px&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Invalida el layout&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto - Batch reads, then writes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; widths&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; elements.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; el.offsetWidth);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;elements.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  el.style.width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; widths[i] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;px&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;css-contain-strict&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-contain-strict&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS &lt;code&gt;contain: strict&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Usar la propiedad &lt;code&gt;contain&lt;/code&gt; en secciones independientes de la página (como una barra lateral o un bloque de comentarios) le dice al navegador que un cambio en esa sección no afectara al resto de la página, acelerando drasticamente la fase de “Next Paint”.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.sidebar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  contain&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strict&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  content-visibility&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  contain-intrinsic-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.comments-section&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  contain&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: layout &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; paint;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  content-visibility&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  contain-intrinsic-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;content-visibility-auto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#content-visibility-auto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Content-visibility: auto&lt;/h3&gt;
&lt;p&gt;La propiedad CSS &lt;code&gt;content-visibility: auto&lt;/code&gt; es una de las herramientas más poderosas para mejorar el presentation delay. Le dice al navegador que no renderice contenido fuera del viewport hasta que sea necesario, reduciendo dramaticamente el trabajo de layout y pintura para la interacción actual.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-identificando-asesinos-de-inp-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-identificando-asesinos-de-inp-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Identificando asesinos de INP en WordPress&lt;/h2&gt;
&lt;p&gt;En 2026, estos son los culpables más comunes de puntuaciones INP deficientes en sitios WordPress:&lt;/p&gt;
&lt;h3 id=&quot;constructores-de-páginas-pesados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#constructores-de-páginas-pesados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Constructores de páginas pesados&lt;/h3&gt;
&lt;p&gt;Divi y Elementor a menudo añaden anidamiento DOM profundo (10-15 niveles de &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; innecesarios), lo que hace que el recalculo de layout sea lento. Un boton que en HTML puro tendria 2 niveles de anidamiento, en Elementor puede tener 8. Cada nivel adicional multiplica el trabajo del navegador durante el presentation delay.&lt;/p&gt;
&lt;h3 id=&quot;widgets-de-chat&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#widgets-de-chat&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Widgets de chat&lt;/h3&gt;
&lt;p&gt;La mayoria de los scripts de live-chat son enormes consumidores del hilo principal. Cargan entre 300KB y 1MB de JavaScript, establecen conexiónes WebSocket persistentes y ejecutan polling periodico que interfiere con las interacciones del usuario. En 2026, usamos widgets que solo se inicializan cuando el usuario pide ayuda (clic en un boton), no automáticamente al cargar la página.&lt;/p&gt;
&lt;h3 id=&quot;sliders-con-auto-reproducción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sliders-con-auto-reproducción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sliders con auto-reproducción&lt;/h3&gt;
&lt;p&gt;Las transiciones que se disparan cada 3 segundos pueden solaparse con clics del usuario, causando un lag de entrada masivo. Si el navegador esta en medio de una animacion de transicion de slider cuando el usuario hace clic en un enlace del menú, la interacción tiene que esperar a que la animacion termine.&lt;/p&gt;
&lt;h3 id=&quot;woocommerce-en-páginas-de-no-tienda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#woocommerce-en-páginas-de-no-tienda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WooCommerce en páginas de no-tienda&lt;/h3&gt;
&lt;p&gt;WooCommerce carga por defecto fragmentos de cart-ajax en todas las páginas del sitio. Estos scripts ejecutan solicitudes AJAX periodicas para mantener el carrito actualizado, consumiendo hilo principal incluso en páginas de blog donde no hay funcionalidad de tienda.&lt;/p&gt;
&lt;h3 id=&quot;google-maps-embebido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-maps-embebido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Maps embebido&lt;/h3&gt;
&lt;p&gt;Los embeds de Google Maps cargan una cantidad significativa de JavaScript y mantienen listeners de eventos activos que compiten con las interacciones del usuario. Recomendamos reemplazarlos con imágenes estaticas que cargan el mapa interactivo solo al hacer clic.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-herramientas-de-diagnóstico-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-herramientas-de-diagnóstico-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Herramientas de diagnóstico para 2026&lt;/h2&gt;
&lt;p&gt;Para arreglar INP, necesitas datos precisos sobre que esta causando el problema.&lt;/p&gt;
&lt;h3 id=&quot;crux-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crux-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CrUX API&lt;/h3&gt;
&lt;p&gt;Proporciona 28 dias de datos de usuarios reales. Esta es tu fuente de verdad sobre como los usuarios reales experimentan tu sitio en diferentes dispositivos y conexiónes. CrUX reporta el percentil 75 de INP, lo que significa que debes optimizar para el 75% de las interacciones más lentas, no para el promedio.&lt;/p&gt;
&lt;h3 id=&quot;long-animation-frames-loaf-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#long-animation-frames-loaf-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Long Animation Frames (LoAF) API&lt;/h3&gt;
&lt;p&gt;Este es el “estándar de oro” en 2026. Te dice exactamente que script causo que un frame tomara demasiado tiempo, incluyendo el archivo fuente, la función y la duracion. LoAF reemplaza a la antigua Long Tasks API con información mucho más granular.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar Long Animation Frames&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; observer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; PerformanceObserver&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  for&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; entry&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; list.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getEntries&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (entry.duration &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;LoAF detected:&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        duration: entry.duration,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        scripts: entry.scripts.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          sourceURL: s.sourceURL,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          functionName: s.functionName,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          duration: s.duration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;observer.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;observe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ type: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;long-animation-frame&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, buffered: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;extension-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#extension-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Extension Web Vitals&lt;/h3&gt;
&lt;p&gt;Una herramienta de navegador que muestra el INP de cada interacción mientras la realizas, permitiendo depuracion instantanea. Haz clic en cada boton, enlace y campo de formulario de tu sitio y observa las metricas en tiempo real.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-estrategia-de-optimización-paso-a-paso-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-estrategia-de-optimización-paso-a-paso-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Estrategia de optimización paso a paso para WordPress&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-auditoria-de-linea-base&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-auditoria-de-linea-base&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Auditoria de linea base&lt;/h3&gt;
&lt;p&gt;Ejecuta un informe CrUX para tu sitio y documenta el INP actual por tipo de página (home, blog, producto, categoría). Identifica las páginas con peor INP como prioridad.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-inventario-de-scripts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-inventario-de-scripts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Inventario de scripts&lt;/h3&gt;
&lt;p&gt;Lista todos los scripts cargados en tu sitio WordPress. Para cada uno, documenta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tamaño del archivo&lt;/li&gt;
&lt;li&gt;Si se ejecuta en el hilo principal&lt;/li&gt;
&lt;li&gt;Si puede ser diferido, movido a un Web Worker o eliminado&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-3-implementar-yielding&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-implementar-yielding&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Implementar yielding&lt;/h3&gt;
&lt;p&gt;Identifica las tareas largas (&gt;50ms) usando LoAF y divídelas con &lt;code&gt;scheduler.yield()&lt;/code&gt;. Prioriza las tareas que se ejecutan durante o cerca de las interacciones del usuario.&lt;/p&gt;
&lt;h3 id=&quot;paso-4-reducir-la-complejidad-dom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-reducir-la-complejidad-dom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Reducir la complejidad DOM&lt;/h3&gt;
&lt;p&gt;Audita la profundidad de tu DOM con Chrome DevTools. Si la profundidad maxima supera 10 niveles, es hora de simplificar. Considera migrar de constructores de páginas a bloques nativos de Gutenberg.&lt;/p&gt;
&lt;h3 id=&quot;paso-5-monitoreo-continuo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-monitoreo-continuo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Monitoreo continuo&lt;/h3&gt;
&lt;p&gt;Implementa monitoreo RUM (Real User Monitoring) para rastrear INP continuamente. Configura alertas cuando el INP supere 200ms para que puedas identificar y corregir regresiones rápidamente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-por-que-wppoland-es-la-autoridad-en-inp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-por-que-wppoland-es-la-autoridad-en-inp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Por que WPPoland es la autoridad en INP&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, nos especializamos en la metrica de rendimiento “Human-First”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Refactorizacion de JavaScript&lt;/strong&gt;: Reescribimos código de plugins inflado en alternativas ligeras y eficientes que mantienen la funcionalidad sin el peso. Conoce más sobre nuestro &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;servicio de mantenimiento WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Diagnostico LoAF&lt;/strong&gt;: Usamos telemetria avanzada para localizar la linea exacta de código que causa tu lag.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Diseño de interactividad&lt;/strong&gt;: No solo arreglamos velocidad; hacemos que tu sitio se &lt;em&gt;sienta&lt;/em&gt; “snappy” y premium. La percepcion de velocidad es tan importante como la velocidad medida.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-la-revolucion-de-la-responsividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-la-revolucion-de-la-responsividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: La revolucion de la responsividad&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Los Core Web Vitals tratan sobre como un usuario &lt;em&gt;se siente&lt;/em&gt; al interactuar con tu marca. &lt;strong&gt;Interaction to Next Paint&lt;/strong&gt; es la metrica de la confianza. Cuando tu sitio responde instantaneamente, tus usuarios se sienten en control y tu marca se siente premium. Cuando tiene lag, se siente amateur.&lt;/p&gt;
&lt;p&gt;En 2026, los usuarios no toleran retrasos. Una demora de 300ms en un boton de “Agregar al carrito” puede costar miles de euros en ventas perdidas. Un menú de navegación que tarda 500ms en responder aumenta la tasa de rebote en dispositivos móviles hasta un 25%.&lt;/p&gt;
&lt;p&gt;Optimizar para INP ya no es una “tarea técnica” - es la estrategia de SEO y UX más importante que implementaras este año. Los sitios que dominan INP no solo se posicionan mejor, sino que convierten mejor, retienen mejor y construyen marcas más fuertes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tu sitio WordPress se siente lento? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para dominar tu INP y asegurar tus rankings en 2026.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>performance</category><category>seo</category><category domain="tag">inp-optimization</category><category domain="tag">core-web-vitals</category><category domain="tag">wordpress-speed</category><category domain="tag">javascript-performance</category><category domain="tag">ux-design-2026</category><enclosure url="https://wppoland.com/images/og/wordpress-security-why-updates-and-security-measures-are-crucial.jpg" type="image/jpeg"/></item><item><title>Gobernanza avanzada de WordPress Multisite en 2026</title><link>https://wppoland.com/es/advanced-wordpress-multisite-governance-2026/</link><guid isPermaLink="true">https://wppoland.com/es/advanced-wordpress-multisite-governance-2026/</guid><description>Guia avanzada para la gobernanza de redes WordPress Multisite empresariales en 2026. Roles, políticas, automatización y mejores prácticas para redes de 50+ sitios.</description><pubDate>Tue, 25 Mar 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;WordPress Multisite es la solución más poderosa para organizaciónes que gestionan múltiples sitios web desde una única plataforma. Pero el poder sin gobernanza es caos. En 2026, las redes Multisite empresariales con 50, 100 o incluso 500+ sitios necesitan políticas claras, roles definidos, automatización robusta y monitoreo continuo para funcionar de forma eficiente y segura.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía cubre las estrategias avanzadas de gobernanza necesarias para operar redes WordPress Multisite a escala empresarial.&lt;/p&gt;
&lt;h2 id=&quot;1-arquitectura-de-gobernanza-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-arquitectura-de-gobernanza-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Arquitectura de gobernanza Multisite&lt;/h2&gt;
&lt;h3 id=&quot;estructura-organizativa-típica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-organizativa-típica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura organizativa típica&lt;/h3&gt;
&lt;p&gt;Una red Multisite empresarial típica tiene esta jerarquía:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Super Admin Global]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    +-- [Network Manager]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |       |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |       +-- [Site Admin Region A]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |       |       +-- [Editor Local A1]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |       |       +-- [Editor Local A2]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |       |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |       +-- [Site Admin Region B]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |               +-- [Editor Local B1]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |               +-- [Editor Local B2]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    +-- [Security Manager]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    +-- [Plugin Manager]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    +-- [Theme Manager]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;roles-personalizados-para-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#roles-personalizados-para-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Roles personalizados para Multisite&lt;/h3&gt;
&lt;p&gt;WordPress Multisite por defecto solo ofrece dos niveles: Super Admin y Site Admin. Para gobernanza empresarial, necesita roles intermedios:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Crear roles personalizados para la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; create_multisite_governance_roles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Network Manager: gestiona sitios pero no plugins/temas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;network_manager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Network Manager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;manage_sites&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;manage_network_users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;create_sites&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;delete_sites&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// No puede eliminar sitios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;manage_network_plugins&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;manage_network_themes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Regional Site Admin: admin de su sitio con restricciones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;regional_admin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Regional Admin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;publish_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_others_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;delete_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;manage_categories&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;upload_files&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_pages&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;publish_pages&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_theme_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // No puede instalar plugins ni temas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;install_plugins&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;activate_plugins&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;install_themes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Content Reviewer: puede revisar pero no publicar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;content_reviewer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content Reviewer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;read&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_others_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_published_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // No puede publicar ni eliminar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;publish_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;delete_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;create_multisite_governance_roles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;2-politicas-de-plugins-y-temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-politicas-de-plugins-y-temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Politicas de plugins y temas&lt;/h2&gt;
&lt;h3 id=&quot;el-problema-de-los-plugins-sin-control&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-de-los-plugins-sin-control&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema de los plugins sin control&lt;/h3&gt;
&lt;p&gt;En una red Multisite sin gobernanza, cada Site Admin puede activar cualquier plugin disponible. Esto crea problemas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugins de baja calidad que degradan rendimiento&lt;/li&gt;
&lt;li&gt;Plugins con vulnerabilidades de seguridad&lt;/li&gt;
&lt;li&gt;Conflictos entre plugins en diferentes sitios&lt;/li&gt;
&lt;li&gt;Inconsistencia visual y funcional entre sitios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-plugins-controlada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-plugins-controlada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de plugins controlada&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Lista blanca de plugins aprobados:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Restringir activacion de plugins a lista aprobada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; restrict_plugin_activation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($plugin) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $approved_plugins &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;advanced-custom-fields-pro/acf.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wordpress-seo/wp-seo.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;redirection/redirection.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wpforms-lite/wpforms.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;redis-cache/redis-cache.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($plugin, $approved_plugins) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_super_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Este plugin no esta aprobado para uso en la red. Contacte al administrador de red.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;activate_plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;restrict_plugin_activation&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Niveles de plugins:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Obligatorios (must-use)&lt;/strong&gt;: Plugins críticos que se activan automáticamente en todos los sitios (seguridad, cache, SEO base). Se instalan en &lt;code&gt;wp-content/mu-plugins/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recomendados&lt;/strong&gt;: Plugins que los Site Admins pueden activar libremente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restringidos&lt;/strong&gt;: Plugins que requieren aprobacion del Super Admin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prohibidos&lt;/strong&gt;: Plugins que no se permiten en la red por seguridad o rendimiento.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;gestión-centralizada-de-temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-centralizada-de-temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión centralizada de temas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Permitir solo temas aprobados en la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; restrict_theme_selection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($themes) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $approved_themes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;corporate-theme-2026&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;brand-theme-light&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;brand-theme-dark&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;twentytwentysix&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// fallback&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($themes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $slug &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $theme) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($slug, $approved_themes)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($themes[$slug]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $themes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;allowed_themes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;restrict_theme_selection&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;3-automatizacion-con-wp-cli&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-automatizacion-con-wp-cli&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Automatizacion con WP-CLI&lt;/h2&gt;
&lt;p&gt;WP-CLI es la herramienta esencial para gestionar redes Multisite a escala. Permite ejecutar comandos en todos los sitios de la red simultaneamente.&lt;/p&gt;
&lt;h3 id=&quot;comandos-esenciales-de-gobernanza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comandos-esenciales-de-gobernanza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comandos esenciales de gobernanza&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Actualizar todos los sitios:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Actualizar WordPress core en toda la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Actualizar todos los plugins en toda la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Actualizar temas en toda la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Auditar plugins activos:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Listar plugins activos en cada sitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --field=url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;=== &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ===&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --status=active&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=name,versión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Verificar seguridad:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Verificar usuarios con permisos de administrador en toda la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --role=administrator&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=ID,user_login,user_email&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Buscar plugins con vulnerabilidades conocidas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=name,versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  # Verificar contra base de datos de vulnerabilidades&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  check_vulnerability&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;scripts-de-mantenimiento-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#scripts-de-mantenimiento-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Scripts de mantenimiento automatizado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Script de mantenimiento semanal para Multisite&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Ejecutar via cron: 0 3 * * 0 /path/to/maintenance.sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 1. Actualizar plugins y temas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 2. Limpiar transients expirados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --field=url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --expired&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --url=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$url&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 3. Optimizar tablas de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; optimize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --network&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 4. Verificar integridad de archivos core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify-checksums&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# 5. Enviar reporte&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Mantenimiento completado: $(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; mail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Multisite Maintenance&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; admin@empresa.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-seguridad-a-nivel-de-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-seguridad-a-nivel-de-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Seguridad a nivel de red&lt;/h2&gt;
&lt;h3 id=&quot;politica-de-contrasenas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#politica-de-contrasenas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Politica de contrasenas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Forzar contrasenas seguras en toda la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; enforce_strong_passwords&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($errors, $update, $user) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $password &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pass1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($password) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;password_too_short&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;La contrasena debe tener al menos 16 caracteres.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;[A-Z]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $password) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;[a-z]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $password) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;[0-9]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $password) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;[^A-Za-z0-9]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $password)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;password_too_simple&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;La contrasena debe incluir mayusculas, minusculas, números y simbolos.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user_profile_update_errors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;enforce_strong_passwords&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;monitoreo-de-actividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-de-actividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo de actividad&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar acciones criticas en toda la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; log_network_activity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($action, $details) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;base_prefix &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;network_audit_log&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;user_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_current_user_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;action&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $action,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;details&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($details),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;site_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_current_blog_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;ip_address&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REMOTE_ADDR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;timestamp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mysql&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Hooks para acciones criticas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;activate_plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($plugin) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log_network_activity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugin_activated&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $plugin]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;deactivate_plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($plugin) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log_network_activity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugin_deactivated&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $plugin]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_login&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user_login) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log_network_activity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user_login&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $user_login]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_login_failed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($username) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    log_network_activity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_failed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;username&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $username]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;aislamiento-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aislamiento-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aislamiento de seguridad&lt;/h3&gt;
&lt;p&gt;Una vulnerabilidad en un sitio no debe comprometer toda la red:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Permisos de archivo estrictos&lt;/strong&gt;: Cada sitio tiene sus propios directorios de uploads con permisos aislados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefijos de tabla separados&lt;/strong&gt;: Aunque comparten la misma base de datos, cada sitio tiene sus propias tablas con prefijo único.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WAF a nivel de red&lt;/strong&gt;: Cloudflare o Sucuri protegiendo toda la red con reglas específicas por sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo de integridad&lt;/strong&gt;: Verificación periodica de que los archivos core no han sido modificados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditorias de seguridad&lt;/a&gt; regulares&lt;/strong&gt; para toda la red.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-gestión-de-contenido-en-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-gestión-de-contenido-en-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Gestión de contenido en red&lt;/h2&gt;
&lt;h3 id=&quot;sincronizacion-de-contenido-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sincronizacion-de-contenido-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sincronizacion de contenido global&lt;/h3&gt;
&lt;p&gt;Algunos contenidos (avisos legales, politica de privacidad, mensajes de marca) deben sincronizarse entre todos los sitios:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Sincronizar posts globales a todos los sitios de la red&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sync_global_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_global_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;yes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $sites &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sites&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($sites &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $site) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;blog_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_current_blog_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;continue&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        switch_to_blog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;blog_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Buscar post sincronizado existente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $synced_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;_synced_post_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $sync_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_title,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_content,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_status,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_type,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($synced_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $sync_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $synced_id;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            wp_update_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sync_data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $new_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_insert_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sync_data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            update_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;_synced_post_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $new_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        restore_current_blog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;sync_global_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;dashboard-de-gobernanza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dashboard-de-gobernanza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dashboard de gobernanza&lt;/h3&gt;
&lt;p&gt;Cree un dashboard centralizado que muestre el estado de toda la red:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Salud de sitios&lt;/strong&gt;: Sitios activos, inactivos, con problemas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estado de actualizaciones&lt;/strong&gt;: Plugins/temas desactualizados por sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metricas de contenido&lt;/strong&gt;: Páginas publicadas, borradores, programados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metricas de rendimiento&lt;/strong&gt;: Core Web Vitals por sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metricas de seguridad&lt;/strong&gt;: Intentos de login fallidos, plugins vulnerables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actividad de usuarios&lt;/strong&gt;: Logins, publicaciónes, cambios de configuración&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-escalabilidad-de-la-red&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-escalabilidad-de-la-red&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Escalabilidad de la red&lt;/h2&gt;
&lt;h3 id=&quot;infraestructura-para-redes-grandes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#infraestructura-para-redes-grandes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Infraestructura para redes grandes&lt;/h3&gt;
&lt;p&gt;Para redes de 50+ sitios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Base de datos&lt;/strong&gt;: MySQL con replicacion read-replica para distribuir carga&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Object Cache&lt;/strong&gt;: Redis en modo cluster para cache compartido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;: S3 o equivalente para archivos de medios compartidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN&lt;/strong&gt;: Cloudflare o Bunny.net con reglas por sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo&lt;/strong&gt;: New Relic o Datadog para visibilidad completa&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de base de datos&lt;/h3&gt;
&lt;p&gt;Cada sitio en la red crea tablas adicionales en la base de datos. Con 100+ sitios, la base de datos puede tener miles de tablas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Verificar tamaño de la base de datos por sitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; table_schema,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;       ROUND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;SUM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(data_length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; index_length) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1024&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1024&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; size_mb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; information_schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;tables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; table_schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wordpress_multisite&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;GROUP BY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; table_schema;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Identificar tablas más grandes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; table_name,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;       ROUND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((data_length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; index_length) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1024&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1024&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; size_mb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; information_schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;tables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; table_schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wordpress_multisite&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ORDER BY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (data_length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; index_length) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DESC&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIMIT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;auto-provisioning-de-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auto-provisioning-de-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auto-provisioning de sitios&lt;/h3&gt;
&lt;p&gt;Para redes que necesitan crear sitios frecuentemente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Auto-provision de sitios con configuración estandar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; provision_standard_site&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($domain, $title, $admin_email) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Crear sitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $site_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wpmu_create_blog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($domain, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $title, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_user_by&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $admin_email)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($site_id)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $site_id;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    switch_to_blog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($site_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Activar plugins obligatorios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    activate_plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wordpress-seo/wp-seo.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    activate_plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;redis-cache/redis-cache.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    activate_plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wpforms-lite/wpforms.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Configurar tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    switch_theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;corporate-theme-2026&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Configurar opciones estandar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    update_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;blogdescription&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    update_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;permalink_structure&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;%postname%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    update_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;default_comment_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;closed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    update_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;timezone_string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Europe/Madrid&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Crear páginas base&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_insert_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Inicio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_insert_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_insert_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Aviso legal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    restore_current_blog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $site_id;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La gobernanza de WordPress Multisite empresarial en 2026 requiere un enfoque sistematico que combine roles bien definidos, políticas claras de plugins y temas, automatización con WP-CLI, seguridad a nivel de red y monitoreo continuo. Con la gobernanza adecuada, WordPress Multisite puede gestionar cientos de sitios de forma eficiente, segura y escalable.&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para implementar o mejorar la gobernanza de su red WordPress Multisite, contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt;, &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento de redes multisite&lt;/a&gt; y &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditorias de seguridad&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Implementación Multisite&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Soporte para redes Multisite&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad&lt;/a&gt; - Seguridad a nivel de red&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Rendimiento de redes Multisite&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>enterprise</category><category domain="tag">wordpress-multisite</category><category domain="tag">enterprise-governance</category><category domain="tag">network-administration</category><category domain="tag">content-governance</category><category domain="tag">scalability</category><enclosure url="https://wppoland.com/images/og/wordpress-debloat-optimization-guide.jpg" type="image/jpeg"/></item><item><title>Gutenberg vs Elementor vs Divi en 2026: que constructor de páginas gana?</title><link>https://wppoland.com/es/gutenberg-vs-elementor-divi-2026-page-builder-comparison/</link><guid isPermaLink="true">https://wppoland.com/es/gutenberg-vs-elementor-divi-2026-page-builder-comparison/</guid><description>Comparativa práctica de Gutenberg, Elementor y Divi en 2026: rendimiento real, lock-in, flujo de desarrollo y mantenimiento editorial.</description><pubDate>Tue, 18 Mar 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tres constructores cubren la mayor parte del mercado WordPress en 2026. Gutenberg viene en cada instalación. Elementor esta presente en aproximadamente 6 millones de sitios activos. Divi ronda los 3 millones. El dato interesante es cuantos sitios corren realmente un tema de bloques con full site editing - esa cifra sigue en un porcentaje pequeno, lo que significa que la mayoria del parque WordPress sigue con temas clasicos y Gutenberg solo en el cuerpo del post, Elementor en plantillas, o Divi de extremo a extremo.&lt;/p&gt;
&lt;p&gt;La eleccion entre ellos no es un concurso de belleza. Es un compromiso entre overhead de assets, lock-in de proveedor, flujo de desarrollo, y como un cliente no tecnico edita el sitio tras la entrega. Esta guia recorre cada eje con el compromiso real al que se enfrenta.&lt;/p&gt;
&lt;p&gt;Respuesta corta: Gutenberg para sitios de contenido donde un equipo editorial sera formado y un desarrollador mantiene theme.json. Elementor para flujos de agencia centrados en landing pages donde el editor de marketing necesita publicar páginas sin tocar codigo. Divi para freelancers solos que entregan sitios acabados a clientes no tecnicos con retainer a largo plazo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-que-produce-realmente-cada-constructor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-que-produce-realmente-cada-constructor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Que produce realmente cada constructor&lt;/h2&gt;
&lt;p&gt;La diferencia arquitectonica no es un eslogan: es lo que acaba en la base de datos y en el cable.&lt;/p&gt;
&lt;h3 id=&quot;gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gutenberg&lt;/h3&gt;
&lt;p&gt;El markup de bloques se almacena como HTML con delimitadores de comentario (&lt;code&gt;&amp;#x3C;!-- wp:paragraph --&gt;&lt;/code&gt;). Al renderizar, los bloques emiten HTML semantico; los estilos viven en theme.json y en hojas de estilo de bloques. Si desactiva Gutenberg (imposible en la práctica al ser core), el HTML sigue siendo válido. Si migra a otra plataforma, el cuerpo del contenido es portable.&lt;/p&gt;
&lt;h3 id=&quot;elementor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elementor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elementor&lt;/h3&gt;
&lt;p&gt;El contenido se guarda en &lt;code&gt;_elementor_data&lt;/code&gt; como postmeta - un arbol JSON de definiciones de widget. La columna &lt;code&gt;post_content&lt;/code&gt; esta normalmente vacia en páginas Elementor. Si desactiva Elementor, el frontend cae a lo que haya en &lt;code&gt;post_content&lt;/code&gt;, que suele ser nada.&lt;/p&gt;
&lt;h3 id=&quot;divi&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#divi&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Divi&lt;/h3&gt;
&lt;p&gt;El layout vive en shortcodes dentro de &lt;code&gt;post_content&lt;/code&gt;: &lt;code&gt;[et_pb_section][et_pb_row][et_pb_column][et_pb_text]...&lt;/code&gt;. Si desactiva Divi, el frontend muestra los corchetes de shortcode crudos. El patron de lock-in es más antiguo que el de Elementor, pero visualmente identico para el lector.&lt;/p&gt;
&lt;p&gt;La conclusion: Gutenberg produce HTML portable, Elementor y Divi producen estructuras propietarias que atan su contenido al runtime del plugin.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-rendimiento-numeros-reales-no-vibras-de-lighthouse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-rendimiento-numeros-reales-no-vibras-de-lighthouse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Rendimiento: numeros reales, no vibras de Lighthouse&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Eje&lt;/th&gt;&lt;th&gt;Gutenberg + tema de bloques&lt;/th&gt;&lt;th&gt;Elementor (Pro)&lt;/th&gt;&lt;th&gt;Divi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CSS anadido en una página tipica&lt;/td&gt;&lt;td&gt;0-30 KB&lt;/td&gt;&lt;td&gt;150-300 KB&lt;/td&gt;&lt;td&gt;120-280 KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JS anadido&lt;/td&gt;&lt;td&gt;0-20 KB&lt;/td&gt;&lt;td&gt;100-200 KB (frontend.js, swiper, dialog)&lt;/td&gt;&lt;td&gt;80-180 KB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Nodos DOM en una página de marketing&lt;/td&gt;&lt;td&gt;base&lt;/td&gt;&lt;td&gt;3-5x base (wrapper-por-widget)&lt;/td&gt;&lt;td&gt;2-4x base&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;INP bajo carga editorial intensa&lt;/td&gt;&lt;td&gt;bajo&lt;/td&gt;&lt;td&gt;sensible al numero de widgets&lt;/td&gt;&lt;td&gt;sensible al numero de modulos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Dos observaciones de practitioner detras de esos rangos:&lt;/p&gt;
&lt;p&gt;Una tienda WooCommerce con 30+ plantillas Elementor en producto, archivo, single y checkout muestra rutinariamente TTFB superior a 1.5s en hosting compartido tipico (caso real visto en cliente de retail .es), porque Elementor parsea el JSON de widgets en cada peticion antes de renderizar. La cache ayuda, el experimento de carga de assets de Elementor ayuda, pero el overhead estructural no desaparece.&lt;/p&gt;
&lt;p&gt;Un sitio Gutenberg con 100+ patterns de bloque y sin disciplina de registro central se convierte en su propio problema de mantenimiento: los editores copian un pattern de hero, lo personalizan inline, y acaba con 40 variantes de hero en producción sin fuente unica. Las ganancias de rendimiento de Gutenberg no sobreviven a la deriva editorial sin alguien responsable de theme.json y la libreria de patterns.&lt;/p&gt;
&lt;p&gt;Divi se sitúa entre los dos: más ligero que el Elementor heredado tras la reescritura de la version 5, más pesado que Gutenberg, con el mismo impuesto de lock-in por shortcode.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-experiencia-de-desarrollador-y-pipeline-de-build&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-experiencia-de-desarrollador-y-pipeline-de-build&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Experiencia de desarrollador y pipeline de build&lt;/h2&gt;
&lt;p&gt;Aqui la comparativa deja de ser sobre usuarios finales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gutenberg&lt;/strong&gt; asume un pipeline React + ESNext. Para enviar un bloque custom necesita &lt;code&gt;@wordpress/scripts&lt;/code&gt;, un archivo &lt;code&gt;block.json&lt;/code&gt; de metadatos y &lt;code&gt;registerBlockType()&lt;/code&gt; en el lado JS. La curva de aprendizaje es real - los estudios WordPress que crecieron con temas PHP clasicos (muy comun en agencias espanolas pequenas) la sienten al primer contacto. La recompensa es que los bloques custom se comportan como ciudadanos WordPress de primera clase: soporte REST API, plantillas de bloque, patterns y overrides de theme.json.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elementor&lt;/strong&gt; permite que un no-desarrollador publique páginas sin codigo. La API de widgets custom existe, pero la mayoria de agencias nunca la tocan: ensamblan a partir de la libreria interna y de packs de terceros. Esta es la razón real por la que Elementor gana las entregas agencia-cliente: el cliente puede editar el sitio sin romperlo, y la agencia no recibe llamadas a las 2 de la madrugada por un syntax error. Estudios espanoles como Cero Estudio y otros de Madrid y Barcelona han construido buena parte de su pipeline sobre este modelo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Divi&lt;/strong&gt; se sitúa entre ambos. El Divi Builder es amigable para no-tecnicos como Elementor; la API de modulos via child theme se acerca más al modelo developer de Gutenberg que la de widgets de Elementor. Los freelancers solos que disenan pero no escriben React tienden a aterrizar aqui - patron habitual entre freelancers de ecommerce minorista en .es que entregan tiendas a clientes que solo quieren cambiar precios y fotos.&lt;/p&gt;
&lt;p&gt;Si necesita saber cual aprender: un desarrollador WordPress de 2026 envia bloques Gutenberg y plantillas FSE, conoce Elementor lo suficiente para migrar sitios fuera de el, y sabe que Divi existe para trabajo de retainer.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-lock-in-y-coste-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-lock-in-y-coste-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Lock-in y coste de migración&lt;/h2&gt;
&lt;p&gt;Dos modos de fallo que aparecen repetidamente:&lt;/p&gt;
&lt;p&gt;Un sitio brochure de 200 páginas construido en Elementor con 30+ plantillas Elementor y sin herencia de plantilla. Anadir un solo campo a la plantilla “caso de estudio” significa editar 200 páginas a mano porque las plantillas Elementor son copy-on-create, no por referencia. La agencia que lo construyó facturó mantenimiento trimestral durante anos exactamente sobre esta friccion.&lt;/p&gt;
&lt;p&gt;Una inmobiliaria en Divi durante ocho anos. Cambiar de tema implica reconstruir manualmente cada página porque los shortcodes Divi estan ligados a modulos Divi, y no existe migrador que preserve la fidelidad del layout. El sitio esta funcionalmente atrapado en Divi hasta que alguien presupueste una reconstrucción.&lt;/p&gt;
&lt;p&gt;La portabilidad de Gutenberg es la respuesta práctica. El markup de bloque sobrevive a cambios de tema, a la rotación de plugins, e incluso a flujos export-to-static.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-aepd-rgpd-y-widgets-de-terceros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-aepd-rgpd-y-widgets-de-terceros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. AEPD, RGPD y widgets de terceros&lt;/h2&gt;
&lt;p&gt;Un punto especifico para el mercado espanol que rara vez se menciona en comparativas en ingles: la AEPD ha endurecido la fiscalización sobre cookies y tracking de terceros. Muchos widgets de Elementor (formularios con reCAPTCHA, video embeds, mapas, sliders con servicios externos) cargan recursos de terceros antes del consentimiento si no se configuran cuidadosamente. La sancion media en casos resueltos por la AEPD se mueve en rangos de cuatro a cinco cifras, y el “lo configura Elementor por mi” no es defensa.&lt;/p&gt;
&lt;p&gt;Gutenberg, al ser HTML plano renderizado en servidor, deja la decisión sobre cargar terceros en el desarrollador y en el plugin de consentimiento - el bloqueo previo al consent es trivial. En Elementor y Divi, hay que auditar widget por widget cual carga terceros y cual no, y reconfigurar la integración con el banner de consentimiento.&lt;/p&gt;
&lt;p&gt;Para sitios .es regulados (banca, salud, ecommerce con datos sensibles), este punto solo ya inclina la decisión hacia Gutenberg en muchas auditorias.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-flujo-editorial-y-herencia-de-plantillas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-flujo-editorial-y-herencia-de-plantillas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Flujo editorial y herencia de plantillas&lt;/h2&gt;
&lt;p&gt;Donde Gutenberg y Elementor divergen más es en edicion editorial en bulk.&lt;/p&gt;
&lt;p&gt;Gutenberg tiene &lt;strong&gt;patterns sincronizados&lt;/strong&gt; (antes “bloques reutilizables”): edita una vez, propaga en todas partes. Esta es la feature decisiva para equipos editoriales de revistas, knowledge bases o documentación. Combinado con plantillas de bloque y template parts en FSE, hay herencia real: cambia el template part del footer del articulo y todos los articulos lo reflejan.&lt;/p&gt;
&lt;p&gt;Elementor tiene &lt;strong&gt;widgets globales&lt;/strong&gt; en Pro y &lt;strong&gt;theme parts&lt;/strong&gt; en el Theme Builder, pero las instancias de plantilla suelen ser copy-on-create. Equipos editoriales que no aprendieron el patron de widget global temprano acaban con N copias del mismo hero, deriva entre ellas y una factura de mantenimiento.&lt;/p&gt;
&lt;p&gt;Divi tiene modulos globales y Theme Builder, similar a Elementor.&lt;/p&gt;
&lt;p&gt;Para un sitio de contenido con 500 articulos, los patterns sincronizados de Gutenberg con plantillas de bloque son la unica de las tres opciones que escala sin presupuesto de mantenimiento dedicado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-coste-la-licencia-es-el-numero-pequeno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-coste-la-licencia-es-el-numero-pequeno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Coste: la licencia es el numero pequeno&lt;/h2&gt;
&lt;p&gt;La pregunta sobre la licencia importa menos que la pregunta sobre renovación y migración.&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Eje de coste&lt;/th&gt;&lt;th&gt;Gutenberg&lt;/th&gt;&lt;th&gt;Elementor Pro&lt;/th&gt;&lt;th&gt;Divi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Licencia&lt;/td&gt;&lt;td&gt;gratis&lt;/td&gt;&lt;td&gt;precio individual (suscripción)&lt;/td&gt;&lt;td&gt;precio individual (licencia tipo lifetime historica)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo dev para enviar un bloque/widget custom&lt;/td&gt;&lt;td&gt;mayor (pipeline React)&lt;/td&gt;&lt;td&gt;menor (editor visual)&lt;/td&gt;&lt;td&gt;menor (builder visual)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Renovación a nivel cartera&lt;/td&gt;&lt;td&gt;ninguna&lt;/td&gt;&lt;td&gt;crece con el numero de sitios&lt;/td&gt;&lt;td&gt;plana tras compra lifetime&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Coste de migración al irse&lt;/td&gt;&lt;td&gt;bajo (HTML portable)&lt;/td&gt;&lt;td&gt;alto (requiere reconstrucción)&lt;/td&gt;&lt;td&gt;alto (reconstrucción de shortcodes)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mantenimiento editorial a escala&lt;/td&gt;&lt;td&gt;bajo (patterns sincronizados)&lt;/td&gt;&lt;td&gt;alto sin disciplina&lt;/td&gt;&lt;td&gt;alto sin disciplina&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La factura que hunde proyectos no es la licencia, es el coste de migración dentro de tres anos y la deriva editorial dentro de dos. El precio gratis de Gutenberg es moderadamente interesante; su bajo coste de migración es el ahorro real.&lt;/p&gt;
&lt;p&gt;El precio de Elementor y Divi es individual - solicite presupuesto a nivel de cartera, no por sitio aislado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-comunidad-y-soporte-en-el-mercado-espanol&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-comunidad-y-soporte-en-el-mercado-espanol&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Comunidad y soporte en el mercado espanol&lt;/h2&gt;
&lt;p&gt;Un detalle de mercado: la comunidad WordPress espanola en los meetups de WordPress Madrid y WordPress Barcelona ha pivotado claramente hacia Gutenberg y FSE en los ultimos dos anos, con charlas regulares sobre block themes, theme.json y custom blocks. La WordCamp Espana mantiene track tecnico centrado en bloques. La traducción al espanol de Gutenberg al core esta al dia; las traducciones de Elementor y Divi tienen huecos historicos en strings de widgets nuevos, especialmente en versiones recientes de Pro.&lt;/p&gt;
&lt;p&gt;Si el equipo del cliente final consume documentación en espanol, Gutenberg suele presentar menos friccion linguistica que los plugins de terceros.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-eligiendo-uno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-eligiendo-uno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Eligiendo uno&lt;/h2&gt;
&lt;p&gt;Una regla de decisión a nivel practitioner:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elija Gutenberg si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El sitio es de contenido pesado (blog, documentación, revista, knowledge base)&lt;/li&gt;
&lt;li&gt;Habrá un equipo editorial formado, no asumido competente desde el dia uno&lt;/li&gt;
&lt;li&gt;Puede presupuestar tiempo de desarrollo para theme.json y una libreria de patterns gestionada&lt;/li&gt;
&lt;li&gt;Espera que el sitio sobreviva a cualquier proveedor de plugin individual&lt;/li&gt;
&lt;li&gt;El cumplimiento RGPD/AEPD requiere control fino sobre que se carga antes del consentimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elija Elementor si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El entregable son landing pages y la editora es la responsable de marketing&lt;/li&gt;
&lt;li&gt;El pixel-pushing importa más que la limpieza del HTML&lt;/li&gt;
&lt;li&gt;La entrega agencia-a-cliente es el modo de fallo que más necesita evitar&lt;/li&gt;
&lt;li&gt;Ha procesado el coste de renovación en toda la cartera y lo acepta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elija Divi si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es un freelancer solo o un estudio de dos personas con cartera de retainer larga&lt;/li&gt;
&lt;li&gt;La licencia tipo lifetime hace que las cuentas cuadren en muchos sitios pequenos&lt;/li&gt;
&lt;li&gt;Los clientes son no-tecnicos y editan poco&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La pregunta equivocada es “que constructor es el mejor en 2026”. La pregunta correcta es “que compromiso puede sostener mi equipo durante los próximos cuatro anos”.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-preguntas-frecuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-preguntas-frecuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Preguntas frecuentes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Es Gutenberg un constructor de páginas?&lt;/strong&gt;
En 2026 si - con FSE, plantillas de bloque, template parts, theme.json y patterns sincronizados, cubre la superficie funcional de un constructor de páginas para la mayoria de casos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puedo correr Elementor y Gutenberg juntos?&lt;/strong&gt;
Tecnicamente si. Operativamente, paga ambos impuestos de rendimiento y confunde a los editores. Elija uno por sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Que suite de bloques Gutenberg debo anadir?&lt;/strong&gt;
GenerateBlocks para sitios donde rendimiento es prioridad, Kadence para marketing más rico, Stackable para landing pages. Ninguno obligatorio - bloques nativos y theme.json cubren la mayoria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desaparecera Elementor?&lt;/strong&gt;
Improbable - 6 millones de sitios son un foso. Lo que cambia es su estatus de opcion por defecto; las construcciones nuevas empiezan cada vez más en Gutenberg.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Funciona WooCommerce con Gutenberg?&lt;/strong&gt;
Si. Los bloques Cart y Checkout son la ruta recomendada en 2026. Las tiendas heredadas con shortcodes siguen funcionando pero ya no reciben la misma inversion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por que se quejan los desarrolladores de Elementor?&lt;/strong&gt;
Bloat de DOM, lock-in en postmeta y el impuesto de migración. La queja no es tanto sobre la edicion visual como sobre lo que el editor visual deja detras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esta FSE listo para producción?&lt;/strong&gt;
Para construcciones nuevas si. Para migrar grandes sitios existentes con tema clasico, parcialmente - configuraciones hibridas (tema de bloques para nuevas plantillas, clasico para legacy) funcionan en práctica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Existe migrador automatico de Elementor a Gutenberg?&lt;/strong&gt;
No. Toda migración creible es manual o semimanual. Las herramientas que prometen conversión automatica producen HTML que igual hay que limpiar a mano.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;ultima-actualización-2026-04-01&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ultima-actualización-2026-04-01&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ultima actualización: 2026-04-01&lt;/h2&gt;
&lt;p&gt;Autor: wppoland.com&lt;/p&gt;
&lt;p&gt;Si necesita ayuda para elegir el constructor adecuado o migrar de Elementor o Divi a Gutenberg, contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt;. Ofrecemos servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; y &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño web&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Implementación con Gutenberg&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Migración desde page builders&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;Desarrollo WooCommerce&lt;/a&gt; - Tiendas optimizadas&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>business</category><category domain="tag">gutenberg-vs-elementor</category><category domain="tag">wordpress-page-builders</category><category domain="tag">divi-2026</category><category domain="tag">web-performance</category><category domain="tag">block-editor</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>El futuro de WordPress 2027: Liberacion de datos y el nuevo admin</title><link>https://wppoland.com/es/future-of-wordpress-development-2027-predictions/</link><guid isPermaLink="true">https://wppoland.com/es/future-of-wordpress-development-2027-predictions/</guid><description>Que viene despues de Gutenberg? Predecimos la hoja de ruta 2027: El rediseño completo de WP-Admin, Data Liberation y el fin de los &apos;Temas&apos; tal como los conocemos.</description><pubDate>Mon, 17 Mar 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;A medida que nos acercamos al lanzamiento de WordPress 6.9 y miramos hacia la versión 7.0 en 2027, el CMS más popular del mundo representa algo muy diferente a lo que era en 2020. La &quot;Fase 3 de Gutenberg&quot; (Colaboración) esta madurando, y la comunidad ahora mira hacia la &lt;strong&gt;Fase 4: Multilingue&lt;/strong&gt; y la iniciativa más amplia de &lt;strong&gt;Data Liberation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Como será el WordPress de 2027 para desarrolladores y agencias? Es más rápido, más abierto y fundamentalmente rediseñado.&lt;/p&gt;
&lt;p&gt;Aqui estan las predicciones y el análisis de WPPoland para la hoja de ruta 2027.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-el-admin-rediseñado-adios-al-wp-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-admin-rediseñado-adios-al-wp-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El admin rediseñado: Adios al &lt;code&gt;wp-admin&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;El menú lateral izquierdo de &lt;code&gt;wp-admin&lt;/code&gt; ha estado con nosotros desde WordPress 2.7 (2008). En 2027, finalmente se jubila. Este cambio no es cosmetico - es una reimaginacion fundamental de como los usuarios interactuan con el sistema de gestión de contenido más utilizado del mundo.&lt;/p&gt;
&lt;h3 id=&quot;el-lienzo-unificado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-lienzo-unificado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El lienzo unificado&lt;/h3&gt;
&lt;p&gt;La distincion entre “El Panel de Control” y “El Editor del Sitio” se esta desvaneciendo. En 2027, estas dos experiencias se fusionan en un único lienzo contextual.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Edicion contextual&lt;/strong&gt;: No vas a “Ajustes” para cambiar el título del sitio. Haces clic en el título en el editor y lo cambias directamente. Todo se edita en su lugar, exactamente donde se ve.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;JavaScript-First&lt;/strong&gt;: El nuevo admin es una Single Page Application (SPA). Las transiciones son instantaneas. No más recargas de página al guardar una entrada. La experiencia se siente tan fluida como una aplicación móvil nativa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Personalizabilidad&lt;/strong&gt;: Las agencias pueden curar completamente la experiencia de administración de forma nativa, bloqueando bloques específicos y personalizando la interfaz sin hackear &lt;code&gt;functions.php&lt;/code&gt;. Esto es transformador para equipos que entregan sitios WordPress a clientes no técnicos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-impacto-para-los-desarrolladores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-impacto-para-los-desarrolladores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El impacto para los desarrolladores&lt;/h3&gt;
&lt;p&gt;Los desarrolladores que han construido su carrera en torno al PHP para personalizar el admin de WordPress necesitaran expandir sus habilidades. El conocimiento de React y la arquitectura de la REST API de WordPress se convierte en esencial, no opcional. Sin embargo, la buena noticia es que el nucleo PHP permanece estable - solo la capa de presentacion cambia.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-data-liberation-confianza-a-través-de-la-apertura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-data-liberation-confianza-a-través-de-la-apertura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Data Liberation: Confianza a través de la apertura&lt;/h2&gt;
&lt;p&gt;Una de las iniciativas clave de Matt Mullenweg para mediados de la decada de 2020 ha sido &lt;strong&gt;Data Liberation&lt;/strong&gt; - posiblemente el proyecto más audaz y contraintuitivo en la historia de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;la-paradoja-del-bloqueo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-paradoja-del-bloqueo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La paradoja del bloqueo&lt;/h3&gt;
&lt;p&gt;Historicamente, las plataformas SaaS intentan bloquearte. Wix, Squarespace y Shopify hacen que sea deliberadamente dificil llevarte tu contenido a otro lugar. WordPress 2027 hace exactamente lo contrario.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Exportacion universal&lt;/strong&gt;: Un formato estandarizado JSON/ZIP que te permite mover todo tu sitio - contenido, medios y diseño - a otro CMS (o a otro host de WordPress) con un clic. No más archivos WXR fragmentados que pierden imágenes y metadatos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Importacion desde cualquier plataforma&lt;/strong&gt;: Data Liberation no es solo exportacion. También incluye importadores robustos desde Wix, Squarespace, Ghost, Medium y otras plataformas populares, facilitando que los usuarios migren &lt;em&gt;hacia&lt;/em&gt; WordPress.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Por que?&lt;/strong&gt;: Al hacer fácil salir, WordPress hace que la gente tenga confianza para quedarse. Se convierte en la “Suiza de la Web” - el lugar neutral y seguro para tus datos. La psicologia es poderosa: cuando sabes que no estas atrapado, la ansiedad de compromiso desaparece.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implicaciones-empresariales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implicaciones-empresariales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implicaciones empresariales&lt;/h3&gt;
&lt;p&gt;Para las grandes corporaciones, Data Liberation elimina uno de los principales argumentos contra WordPress: el riesgo de bloqueo de proveedor. Los CTO y arquitectos empresariales pueden aprobar WordPress sabiendo que siempre existe una ruta de salida limpia. Esto, ironicamente, aumenta la adopcion empresarial en lugar de reducirla.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-la-muerte-del-tema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-la-muerte-del-tema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. La muerte del “Tema”&lt;/h2&gt;
&lt;p&gt;Que es un tema en 2027? Ciertamente no es una carpeta de plantillas PHP. La evolucion de los temas de WordPress ha sido gradual pero imparable, y en 2027 llega a su conclusion lógica.&lt;/p&gt;
&lt;h3 id=&quot;stylejson-y-patrones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stylejson-y-patrones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Style.json y patrones&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Global Styles&lt;/strong&gt;: La identidad visual de un sitio se define enteramente en &lt;code&gt;theme.json&lt;/code&gt; (o su sucesor). Colores, tipografia, espaciado, sombras - todo vive en un único archivo de configuración declarativo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bibliotecas de patrones&lt;/strong&gt;: Un “tema” es esencialmente una coleccion curada de patrones de bloques. No compras un tema; te suscribes a un proveedor de patrones. Estos patrones son como piezas de LEGO que se combinan para crear cualquier diseño imaginable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;El fin de los Child Themes&lt;/strong&gt;: Ya no necesitamos child themes para sobrescribir estilos. Usamos la interfaz de Global Styles y exportamos nuestros cambios como una variacion. Esto elimina una de las fuentes más comunes de errores en sitios WordPress: conflictos entre parent y child themes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;que-significa-esto-para-las-agencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-esto-para-las-agencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa esto para las agencias?&lt;/h3&gt;
&lt;p&gt;Las agencias que vendian temas premium de $59 necesitan repensar su modelo de negocio. El valor ya no esta en el tema como producto empaquetado, sino en:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sistemas de diseño&lt;/strong&gt;: Crear bibliotecas de patrones coherentes y escalables para marcas específicas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consultoria de identidad digital&lt;/strong&gt;: Traducir la identidad de marca en configuraciónes &lt;code&gt;theme.json&lt;/code&gt; personalizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migración y optimización&lt;/strong&gt;: Ayudar a los clientes a migrar de temas legacy a arquitecturas de bloques modernas&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-ia-en-el-nucleo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-ia-en-el-nucleo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. IA en el nucleo&lt;/h2&gt;
&lt;p&gt;Hasta 2025, la IA era territorio de plugins. Para 2027, será nativa. Esta integración no es sobre reemplazar al humano - es sobre eliminar la friccion de tareas repetitivas que consumen tiempo y distraen de la creación de valor real.&lt;/p&gt;
&lt;h3 id=&quot;llms-locales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#llms-locales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;LLMs locales?&lt;/h3&gt;
&lt;p&gt;Hay discusion sobre incluir LLMs ligeros, local-first (o conectar con APIs de IA del navegador) directamente en el nucleo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Texto alternativo automático&lt;/strong&gt;: La biblioteca de medios genera automáticamente texto alternativo al subir imágenes. Esto no es solo una conveniencia - es un salto enorme para la &lt;a href=&quot;/es/wordpress-accessibility-wcag-2-2-guide-2026/&quot;&gt;accesibilidad web&lt;/a&gt; y el cumplimiento de la EAA.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resumenes de contenido&lt;/strong&gt;: El campo “Extracto” se rellena automáticamente con contenido resumido por IA. Los editores pueden revisar y ajustar, pero ya no empiezan desde cero.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Generación de patrones&lt;/strong&gt;: “Crea una tabla de precios con 3 columnas” -&gt; El editor de bloques la construye instantaneamente usando bloques del nucleo. No se necesitan plugins de terceros ni constructores de páginas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ia-para-traducciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ia-para-traducciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IA para traducciones&lt;/h3&gt;
&lt;p&gt;La Fase 4 (Multilingue) combinada con IA del nucleo permite traducciones asistidas directamente en el editor. Los editores pueden crear contenido en un idioma y obtener borradores automáticos en idiomas adicionales que solo necesitan revision humana. Esto transforma la gestión de contenido multilingue de un proceso tedioso y costoso a un flujo de trabajo agil.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-multilingue-es-nativo-fase-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-multilingue-es-nativo-fase-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Multilingue es nativo (Fase 4)&lt;/h2&gt;
&lt;p&gt;Durante 20 años, necesitamos WPML o Polylang. La Fase 4 cambia todo. Esta es posiblemente la actualización más esperada por la comunidad WordPress hispanohablante.&lt;/p&gt;
&lt;h3 id=&quot;multilingue-canonico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multilingue-canonico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multilingue canonico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Esquema de base de datos estandarizado&lt;/strong&gt;: Las tablas del nucleo ahora soportan oficialmente traducciones. No más &lt;code&gt;wp_icl_translations&lt;/code&gt; hackeadas al lado. Las relaciones entre traducciones se manejan nativamente en la estructura de datos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: El soporte nativo de consultas significa que los sitios multilingues ya no sufren una penalizacion de base de datos del 30%. Las consultas son eficientes porque las traducciones no son un “complemento” sino una parte integral de la arquitectura.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Impacto&lt;/strong&gt;: Esto elimina un gran segmento del mercado de plugins pero mejora masivamente la experiencia para empresas globales. Para mercados como Latinoamerica y España, donde el multilingue (español, portugues, ingles) es crítico para los negocios, esto es revolucionario.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implicaciones-para-la-estrategia-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implicaciones-para-la-estrategia-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implicaciones para la estrategia de contenido&lt;/h3&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Con multilingue nativo, las estrategias de contenido global se simplifican enormemente. Las empresas pueden mantener un único sitio WordPress que sirve contenido en multiples idiomas con URLs limpias, hreflang automático y gestión centralizada de traducciones. Esto elimina la necesidad de instalaciones separadas o configuraciónes Multisite complejas para cada idioma.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-el-auge-de-las-distros-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-el-auge-de-las-distros-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. El auge de las “distros” de WordPress&lt;/h2&gt;
&lt;p&gt;Con el nucleo volviendose más modular, vemos el auge de distribuciones especializadas. Al igual que Linux tiene Ubuntu, Fedora y Arch para diferentes casos de uso, WordPress comienza a diversificarse.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Distro de e-commerce&lt;/strong&gt;: Un WordPress pre-empaquetado optimizado exclusivamente para WooCommerce (sin bloat de blog). Rendimiento ajustado para catálogos de productos, carritos y checkouts. Ideal para tiendas online que no necesitan funcionalidad de blog.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Distro Headless&lt;/strong&gt;: Una versión reducida solo-API para uso con Next.js o Astro. Sin temas frontend, sin assets de admin innecesarios. Solo la API GraphQL/REST y el editor de contenido. Perfecta para equipos que usan &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;arquitecturas de migración a Next.js y Astro&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Distro de creador&lt;/strong&gt;: Una versión simplificada para autores de newsletters, compitiendo directamente con Substack y Ghost. Monetizacion integrada, suscripciones, y distribucion de email sin plugins adicionales.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Distro empresarial&lt;/strong&gt;: Orientada a grandes corporaciones con requisitos estrictos de seguridad, cumplimiento y gobernanza. Incluye autenticación SAML, integración con directorios corporativos y flujos de aprobacion de contenido. Conoce más sobre nuestra &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;por-que-esto-importa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-esto-importa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que esto importa?&lt;/h3&gt;
&lt;p&gt;Las distribuciones resuelven uno de los problemas más antiguos de WordPress: la complejidad innecesaria. Un blogger no necesita las tablas de WooCommerce en su base de datos. Una tienda online no necesita las herramientas de blogging. Al modularizar el nucleo, cada distribucion ofrece exactamente lo que el usuario necesita, sin el lastre de funcionalidades irrelevantes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-el-ecosistema-de-wordpress-en-2027&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-ecosistema-de-wordpress-en-2027&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El ecosistema de WordPress en 2027&lt;/h2&gt;
&lt;h3 id=&quot;el-papel-de-las-agencias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-papel-de-las-agencias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El papel de las agencias&lt;/h3&gt;
&lt;p&gt;Las agencias WordPress en 2027 no son las mismás que en 2020. El valor ya no esta en “instalar WordPress y elegir un tema”. Las agencias exitosas ofrecen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura de soluciones&lt;/strong&gt;: Diseñar la combinación correcta de WordPress nucleo, plugins y servicios externos para cada caso de uso empresarial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración de IA&lt;/strong&gt;: Configurar y personalizar las capacidades de IA del nucleo para flujos de trabajo específicos del clientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estrategia de contenido global&lt;/strong&gt;: Aprovechar el multilingue nativo para estrategias de contenido que abarcan multiples mercados e idiomas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento y escalabilidad&lt;/strong&gt;: Garantizar que los sitios WordPress empresariales mantienen puntuaciones perfectas de Core Web Vitals bajo carga pesada&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-ecosistema-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ecosistema-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ecosistema de plugins&lt;/h3&gt;
&lt;p&gt;El mercado de plugins experimenta su mayor transformación. Los plugins que replican funcionalidad que ahora esta en el nucleo (multilingue, IA básica, patrones) pierden relevancia. Los plugins que sobreviven y prosperan son aquellos que ofrecen funcionalidad genuinamente especializada: integraciones con CRM específicos, lógica de negocio personalizada, y herramientas de nicho que el nucleo nunca cubrira.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-preparandote-para-2027-acciones-concretas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-preparandote-para-2027-acciones-concretas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Preparandote para 2027: Acciones concretas&lt;/h2&gt;
&lt;p&gt;Para desarrolladores y propietarios de sitios que quieren estar preparados para el WordPress de 2027, estas son las acciones recomendadas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Migra a temas de bloques ahora&lt;/strong&gt;: Si sigues usando temas clásicos PHP, comienza la transicion a temas de bloques (FSE). Cuanto más esperes, más dolorosa será la migración.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aprende React&lt;/strong&gt;: El admin de WordPress será JavaScript-first. Familiarizarte con React y la API de bloques de WordPress te posiciona para los proximos años.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Adopta theme.json&lt;/strong&gt;: Empieza a definir los estilos de tu sitio en &lt;code&gt;theme.json&lt;/code&gt; en lugar de CSS personalizado. Esta es la dirección del futuro.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Planifica para multilingue&lt;/strong&gt;: Si tu sitio necesitara multiples idiomas, empieza a estructurar tu contenido pensando en traducciones. La migración desde WPML/Polylang al multilingue nativo será más fácil si tu contenido ya esta bien organizado.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Experimenta con IA&lt;/strong&gt;: Familiarizate con herramientas de IA para la creación de contenido. Cuando la IA sea nativa en WordPress, querras saber como aprovecharla eficientemente.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-el-sistema-operativo-de-la-web-abierta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-el-sistema-operativo-de-la-web-abierta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: El sistema operativo de la web abierta&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En 2027, WordPress es menos una “herramienta de blogging” y más un &lt;strong&gt;Sistema Operativo para la Web&lt;/strong&gt;. Proporciona la capa fundamental de propiedad de datos, gestión de usuarios y renderizado de bloques, sobre la cual construimos experiencias increibles.&lt;/p&gt;
&lt;p&gt;Los desarrolladores que sobreviven y prosperan en 2027 son aquellos que dejan de luchar contra el Editor de Bloques y empiezan a construir &lt;em&gt;sobre&lt;/em&gt; la arquitectura de Data Liberation. La apertura no es una debilidad - es la mayor fortaleza de WordPress. Mientras las plataformas cerradas luchan por retener usuarios atrapados, WordPress atrae usuarios que &lt;em&gt;eligen&lt;/em&gt; quedarse.&lt;/p&gt;
&lt;p&gt;El futuro de WordPress es más brillante de lo que ha sido nunca. Con Data Liberation, IA nativa, multilingue en el nucleo y un admin rediseñado, WordPress 2027 no es solo una actualización - es una reimaginacion completa de lo que significa un CMS en la era de la inteligencia artificial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El futuro es abierto. Estas listo? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para preparar tu estrategia WordPress para 2027.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>community</category><category domain="tag">future-of-wordpress</category><category domain="tag">2027-roadmap</category><category domain="tag">data-liberation</category><category domain="tag">admin-redesign</category><category domain="tag">ai-integration</category><enclosure url="https://wppoland.com/images/og/wordpress-specialist-at-work.jpg" type="image/jpeg"/></item><item><title>Por qué tu sitio WordPress es lento: guía de optimización de rendimiento</title><link>https://wppoland.com/es/is-your-wordpress-site-slow/</link><guid isPermaLink="true">https://wppoland.com/es/is-your-wordpress-site-slow/</guid><description>Tu sitio WordPress rápido</description><pubDate>Sun, 09 Mar 2025 21:08:08 GMT</pubDate><content:encoded>&lt;h2 id=&quot;por-qué-tu-sitio-wordpress-es-lento-probablemente-no-es-el-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-tu-sitio-wordpress-es-lento-probablemente-no-es-el-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué tu sitio WordPress es lento (probablemente no es el hosting)&lt;/h2&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Cuando un sitio WordPress empieza a arrastrarse, la reacción instintiva es mejorar el plan de hosting. Aunque un mejor servidor ayuda, a menudo enmascara problemas arquitectónicos subyacentes. En mi experiencia, gastar dinero en hosting antes de optimizar tu capa de aplicación es una solución temporal para un problema permanente.&lt;/p&gt;
&lt;h3 id=&quot;el-mito-de-la-solución-mágica-del-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-mito-de-la-solución-mágica-del-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El mito de la “solución mágica del hosting”&lt;/h3&gt;
&lt;p&gt;Un servidor más rápido rendirá mejor, pero si tu sitio está sobrecargado por recursos sin optimizar, solo estás ejecutando código ineficiente en una CPU más rápida. Estos son los cuellos de botella más comunes que realmente consumen tu rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sobrecarga de plugins y deuda de consultas&lt;/strong&gt;: Cada plugin activo no es solo un archivo; es una serie potencial de consultas a la base de datos y dependencias externas. Un sitio WordPress promedio con 20-30 plugins puede generar más de 200 consultas de base de datos por carga de página. Muchas de estas consultas son redundantes, consultando la misma información que podría haberse cacheado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recursos de imagen no gestionados&lt;/strong&gt;: Las imágenes de alta resolución sin formatos modernos (como AVIF o WebP) son la causa número 1 de LCP lento. Una sola imagen hero no optimizada puede pesar 2-5 MB, cuando la versión optimizada en AVIF pesaría solo 200-500 KB.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de caché de objetos&lt;/strong&gt;: Las constantes consultas a la base de datos para datos estáticos fuerzan al servidor a realizar trabajo redundante. Datos como las opciones del sitio, los menús de navegación y la configuración de los widgets se consultan en cada carga de página, aunque raramente cambian.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latencia de scripts de terceros&lt;/strong&gt;: Los rastreadores externos, fuentes y embeds a menudo bloquean el hilo principal y arruinan tus Core Web Vitals. Google Fonts, píxeles de seguimiento de redes sociales y scripts de chat en vivo son los infractores más comunes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;soluciónes-prácticas-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soluciónes-prácticas-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soluciónes prácticas de rendimiento&lt;/h3&gt;
&lt;h4 id=&quot;1-implementar-caché-selectiva-de-objetos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-implementar-caché-selectiva-de-objetos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Implementar caché selectiva de objetos&lt;/h4&gt;
&lt;p&gt;En lugar de bombardear la base de datos con consultas comunes, usa la API Transients o una caché persistente de objetos (como Redis). Esto es crucial para sitios dinámicos donde la caché de página no siempre es posible.&lt;/p&gt;
&lt;p&gt;La API Transients de WordPress proporciona una forma elegante de almacenar datos temporales en la caché. Cuando usas transients, WordPress primero verifica si los datos están disponibles en la caché. Si lo están, los devuelve inmediatamente sin tocar la base de datos. Si no, ejecuta la consulta, almacena el resultado y lo devuelve.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_performance_optimized_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Intentar obtener de la caché primero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;featured_posts_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $posts) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;no_found_rows&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Omitir sobrecarga si no se necesita páginación&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Cachear durante 12 horas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;featured_posts_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $posts, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $posts;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El parámetro &lt;code&gt;no_found_rows&lt;/code&gt; es especialmente importante. Por defecto, WP_Query ejecuta una consulta adicional SQL_CALC_FOUND_ROWS para contar el total de resultados para la páginación. Si no necesitas páginación, desactivar esto puede reducir el tiempo de consulta significativamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuándo usar Redis vs Transients:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Transients&lt;/strong&gt;: Para caché de consultas con tiempo de expiración definido. Los datos se almacenan en la tabla wp_options (o en Redis si está disponible)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis/Memcached&lt;/strong&gt;: Para caché persistente de objetos que sobrevive entre peticiones HTTP. Ideal para sitios de alto tráfico donde cada milisegundo cuenta&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;2-ir-más-allá-de-la-simple-compresión-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-ir-más-allá-de-la-simple-compresión-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Ir más allá de la simple compresión de imágenes&lt;/h4&gt;
&lt;p&gt;“Comprimir” imágenes es solo la mitad de la batalla. Debes aspirar al soporte &lt;strong&gt;AVIF&lt;/strong&gt; y dimensionamiento responsive para asegurar que los usuarios móviles no descarguen recursos del tamaño de escritorio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de optimización de imágenes en capas:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Formato&lt;/strong&gt;: Sirve AVIF como primera opción, WebP como respaldo, JPEG/PNG como último recurso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimensiones&lt;/strong&gt;: Usa el atributo &lt;code&gt;srcset&lt;/code&gt; para servir diferentes tamaños según el ancho de pantalla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carga diferida&lt;/strong&gt;: Aplica &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; a todas las imágenes que no están en el viewport inicial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN de imágenes&lt;/strong&gt;: Servicios como Cloudinary o imgix pueden transformar imágenes sobre la marcha&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Ejemplo de implementación óptima de imagen --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen-400.avif 400w, imagen-800.avif 800w, imagen-1200.avif 1200w&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen-400.webp 400w, imagen-800.webp 800w, imagen-1200.webp 1200w&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen-800.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Descripción&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;800&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;450&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen-400.jpg 400w, imagen-800.jpg 800w, imagen-1200.jpg 1200w&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       sizes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;(max-width: 600px) 400px, (max-width: 1024px) 800px, 1200px&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;3-optimizar-el-buffer-de-salida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-optimizar-el-buffer-de-salida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Optimizar el buffer de salida&lt;/h4&gt;
&lt;p&gt;Si no estás usando un plugin de caché dedicado, puedes implementar compresión Gzip a nivel de PHP, aunque hacerlo vía &lt;code&gt;.htaccess&lt;/code&gt; o configuración de Nginx es generalmente más eficiente.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Lógica de compresión básica si la configuración a nivel de servidor no está disponible&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ob_gzhandler&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;4-auditoría-de-plugins-el-mayor-impacto-con-menor-esfuerzo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-auditoría-de-plugins-el-mayor-impacto-con-menor-esfuerzo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Auditoría de plugins: el mayor impacto con menor esfuerzo&lt;/h4&gt;
&lt;p&gt;La auditoría de plugins es frecuentemente la acción de mayor impacto que puedes tomar para mejorar el rendimiento de WordPress. Muchos sitios acumulan plugins con el tiempo sin evaluar su impacto en el rendimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proceso de auditoría de plugins:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Instala Query Monitor&lt;/strong&gt;: Este plugin de desarrollo muestra exactamente cuántas consultas de base de datos genera cada plugin, cuánta memoria consume y cuánto tiempo añade a la carga de la página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identifica los culpables&lt;/strong&gt;: Busca plugins que generen más de 20 consultas por carga de página o que añadan más de 100ms al tiempo de respuesta&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evalúa alternativas&lt;/strong&gt;: Para cada plugin pesado, investiga si existe una alternativa más ligera o si su funcionalidad puede implementarse con código personalizado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desactiva lo innecesario&lt;/strong&gt;: Plugins de seguridad redundantes, constructores de formularios no usados, plugins de sliders que solo se usan en una página&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Plugins típicamente problemáticos para el rendimiento:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Constructores de páginas (Elementor, Divi) en páginas que no los necesitan&lt;/li&gt;
&lt;li&gt;Plugins de redes sociales que cargan scripts en cada página&lt;/li&gt;
&lt;li&gt;Plugins de SEO con funcionalidades infladas&lt;/li&gt;
&lt;li&gt;Plugins de estadísticas que rastrean cada visita en la base de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;5-optimización-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-optimización-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Optimización de la base de datos&lt;/h4&gt;
&lt;p&gt;Con el tiempo, la base de datos de WordPress acumula datos innecesarios que ralentizan las consultas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Revisiones de posts&lt;/strong&gt;: WordPress guarda cada borrador automático. Un post editado 50 veces tiene 50 revisiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transients expirados&lt;/strong&gt;: Los transients que ya expiraron permanecen en la base de datos hasta que algo los limpia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opciones huérfanas&lt;/strong&gt;: Plugins desinstalados a menudo dejan sus opciones en la tabla wp_options&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadatos huérfanos&lt;/strong&gt;: Datos de meta asociados a posts, usuarios o comentarios eliminados&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar revisiones de posts en wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O desactivar completamente (no recomendado para sitios con múltiples editores)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Herramientas de optimización de base de datos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP-Optimize&lt;/strong&gt;: Limpieza automatizada de revisiones, transients y datos huérfanos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;phpMyAdmin&lt;/strong&gt;: Para consultas manuales de limpieza&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP-CLI&lt;/strong&gt;: Comandos de línea para gestión eficiente de la base de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;6-implementación-de-cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-implementación-de-cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Implementación de CDN&lt;/h4&gt;
&lt;p&gt;Un CDN (Content Delivery Network) distribuye los recursos estáticos de tu sitio a través de servidores en todo el mundo, asegurando que los visitantes descarguen archivos desde el servidor más cercano a su ubicación geográfica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios de un CDN para WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reducción del TTFB&lt;/strong&gt;: Los recursos se sirven desde el edge más cercano&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menor carga del servidor&lt;/strong&gt;: Los archivos estáticos no tocan tu servidor de origen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protección DDoS&lt;/strong&gt;: La mayoría de los CDN incluyen protección contra ataques&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificado SSL gratuito&lt;/strong&gt;: Cloudflare y otros ofrecen SSL gratuito&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compresión automática&lt;/strong&gt;: Brotli/Gzip aplicados automáticamente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Configuración recomendada de Cloudflare para WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Activa el modo “Full (Strict)” para SSL&lt;/li&gt;
&lt;li&gt;Habilita la minimización automática de HTML, CSS y JS&lt;/li&gt;
&lt;li&gt;Configura reglas de caché de página para contenido estático&lt;/li&gt;
&lt;li&gt;Activa Brotli para mejor compresión&lt;/li&gt;
&lt;li&gt;Usa Polish para optimización automática de imágenes&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;monitoreo-continuo-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-continuo-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo continuo del rendimiento&lt;/h3&gt;
&lt;p&gt;La optimización del rendimiento no es una tarea de una sola vez. Los sitios WordPress evolucionan constantemente con nuevo contenido, plugins actualizados y cambios de configuración. Sin monitoreo continuo, el rendimiento se degrada gradualmente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas de monitoreo recomendadas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google PageSpeed Insights&lt;/strong&gt;: Para verificaciónes puntuales de Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;: Para datos reales de Core Web Vitals de tus usuarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GTmetrix&lt;/strong&gt;: Para análisis detallado de cascada de recursos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query Monitor&lt;/strong&gt;: Para depuración de consultas de base de datos en desarrollo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Relic / Datadog&lt;/strong&gt;: Para monitoreo de aplicación a nivel de servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Métricas clave a monitorear:&lt;/strong&gt;&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Objetivo&lt;/th&gt;&lt;th&gt;Impacto&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;LCP (Largest Contentful Paint)&lt;/td&gt;&lt;td&gt;&amp;#x3C; 2.5s&lt;/td&gt;&lt;td&gt;Experiencia de carga percibida&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;INP (Interaction to Next Paint)&lt;/td&gt;&lt;td&gt;&amp;#x3C; 200ms&lt;/td&gt;&lt;td&gt;Responsividad de la interacción&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CLS (Cumulative Layout Shift)&lt;/td&gt;&lt;td&gt;&amp;#x3C; 0.1&lt;/td&gt;&lt;td&gt;Estabilidad visual&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TTFB (Time to First Byte)&lt;/td&gt;&lt;td&gt;&amp;#x3C; 200ms&lt;/td&gt;&lt;td&gt;Rendimiento del servidor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Consultas de BD por página&lt;/td&gt;&lt;td&gt;&amp;#x3C; 50&lt;/td&gt;&lt;td&gt;Eficiencia de la base de datos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Peso total de la página&lt;/td&gt;&lt;td&gt;&amp;#x3C; 1.5 MB&lt;/td&gt;&lt;td&gt;Velocidad de descarga&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;resumen-medición-sobre-suposiciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-medición-sobre-suposiciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen: medición sobre suposiciones&lt;/h3&gt;
&lt;p&gt;Si tu sitio es lento, no adivines, mide. Usa &lt;strong&gt;Query Monitor&lt;/strong&gt; para encontrar consultas de base de datos costosas y &lt;strong&gt;PageSpeed Insights&lt;/strong&gt; para identificar scripts que bloquean el renderizado.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Verifica el conteo de consultas&lt;/strong&gt;: ¿Estás haciendo más de 100 consultas para una sola carga de página?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audita tu sección hero&lt;/strong&gt;: ¿La imagen principal se sirve en un formato de nueva generación?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba tu TTFB&lt;/strong&gt;: Si supera los 200ms, &lt;em&gt;entonces&lt;/em&gt; considera tu hosting u optimización de base de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisa los scripts de terceros&lt;/strong&gt;: ¿Cuántos scripts externos se cargan y cuánto bloquean?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;¿Cuál es la cosa número 1 que ralentizó tu sitio? A menudo es ese “simple plugin” que olvidaste desactivar.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; y &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoría de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>seo</category><category>wordpress</category><category domain="tag">performance</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/slow-website.jpg" type="image/jpeg"/></item><item><title>WordPress para gobierno y sector público en 2026</title><link>https://wppoland.com/es/wordpress-government-public-sector-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-government-public-sector-guide-2026/</guid><description>Por que NASA, la Casa Blanca y el gobierno de Finlandia eligen WordPress? Exploramos el movimiento &apos;Dinero Público, Código Público&apos; y la seguridad empresarial para el sector público.</description><pubDate>Fri, 07 Mar 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La era de los gobiernos comprando software propietario costoso y de código cerrado esta llegando a su fin. Desde &lt;strong&gt;NASA&lt;/strong&gt; (EE.UU.) hasta los servicios digitales de &lt;strong&gt;Finlandia&lt;/strong&gt;, el sector público esta migrando a WordPress.&lt;/p&gt;
&lt;p&gt;Por que? En 2026, las fuerzas impulsoras son la &lt;strong&gt;Soberania Digital&lt;/strong&gt;, la &lt;strong&gt;Accesibilidad&lt;/strong&gt; y el movimiento &lt;strong&gt;“Dinero Público, Código Público”&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Esta guía exhaustiva de más de 2500 palabras explica por que WordPress es la única opción lógica para el GovTech moderno, analizando cada aspecto desde la seguridad nacional hasta la eficiencia presupuestaria.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-dinero-público-código-público&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-dinero-público-código-público&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. “Dinero público, código público”&lt;/h2&gt;
&lt;p&gt;Si una ciudad construye un sistema digital de reserva de parques utilizando dinero de los contribuyentes, por que deberia ese código ser propiedad de una corporacion privada?&lt;/p&gt;
&lt;p&gt;La iniciativa &lt;strong&gt;“Dinero Público, Código Público”&lt;/strong&gt; (Public Money, Public Code) argumenta que el software pagado por el público deberia estar disponible para el público. Este principio fundamental esta transformando la forma en que los gobiernos de todo el mundo adquieren y desarrollan tecnología.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-del-software-propietario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-del-software-propietario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema del software propietario&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CMS Propietario&lt;/strong&gt;: Usted alquila el software. Si deja de pagar, su sitio web desaparece. No puede compartir sus mejoras con ciudades vecinas. Cada mejora que financia con dinero público queda encerrada detras de una licencia corporativa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencia del proveedor&lt;/strong&gt;: Cuando el proveedor decide aumentar los precios (algo que ocurre regularmente), el gobierno no tiene alternativa. Estan atrapados en un contrato que consume recursos publicos sin generar valor compartido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de transparencia&lt;/strong&gt;: El código propietario no puede ser auditado independientemente. En una era de ciberamenazas crecientes, esta falta de transparencia es un riesgo de seguridad nacional.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-solución-wordpress-código-abierto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-wordpress-código-abierto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución WordPress (Código Abierto)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress (Código Abierto)&lt;/strong&gt;: Usted es dueno del código. Si la Ciudad de Varsovia construye un excelente plugin de “Reporte de Baches”, la Ciudad de Cracovia puede usarlo gratuitamente. Esto es gobierno eficiente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colaboración intermunicipal&lt;/strong&gt;: Multiples ciudades pueden contribuir al desarrollo de una misma solución, distribuyendo los costos y multiplicando los beneficios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditoria pública&lt;/strong&gt;: Cualquier experto en seguridad puede auditar el código, identificar vulnerabilidades y proponer mejoras. Esta transparencia fortalece la confianza ciudadana.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ejemplos-europeos-destacados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplos-europeos-destacados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplos europeos destacados&lt;/h3&gt;
&lt;p&gt;La Union Europea ha sido pionera en la adopcion de esta filosofia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Barcelona&lt;/strong&gt;: Politica de “código abierto primero” para todas las adquisiciones tecnológicas municipales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Munich&lt;/strong&gt;: Retorno a Linux y software libre despues de experimentar con Microsoft&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estonia&lt;/strong&gt;: El gobierno más digitalizado del mundo, construido sobre principios de código abierto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finlandia&lt;/strong&gt;: Servicios digitales gubernamentales modernos basados en WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-seguridad-a-nivel-nacional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-seguridad-a-nivel-nacional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Seguridad a nivel nacional&lt;/h2&gt;
&lt;p&gt;“Pero WordPress es hackeado!” Solo el WordPress barato y mal gestionado es hackeado.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;WordPress Empresarial para Gobierno&lt;/strong&gt; es una bestia completamente diferente. La arquitectura de seguridad para el sector público en 2026 incorpora multiples capas de protección que cumplen con los estándares más exigentes del mundo.&lt;/p&gt;
&lt;h3 id=&quot;autorización-fedramp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autorización-fedramp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autorización FedRAMP&lt;/h3&gt;
&lt;p&gt;Lideres en hosting como &lt;strong&gt;WordPress VIP&lt;/strong&gt; han logrado la autorización FedRAMP “Authority to Operate”. Esto significa que cumplen con los estrictos controles de seguridad requeridos por el Gobierno Federal de EE.UU., incluyendo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cifrado de datos en reposo y en transito&lt;/li&gt;
&lt;li&gt;Monitoreo continuo de amenazas 24/7/365&lt;/li&gt;
&lt;li&gt;Planes de recuperacion ante desastres probados&lt;/li&gt;
&lt;li&gt;Controles de acceso basados en roles con autenticación multifactor&lt;/li&gt;
&lt;li&gt;Segregacion de datos entre inquilinos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sistemas-de-archivos-inmutables&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sistemas-de-archivos-inmutables&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sistemas de archivos inmutables&lt;/h3&gt;
&lt;p&gt;El servidor es de “solo lectura”. Incluso si un hacker encontrara una vulnerabilidad, no puede escribir un archivo malicioso en el servidor. Esta arquitectura elimina completamente una de las vectores de ataque más comunes contra sitios WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El sistema de archivos de producción se monta como solo lectura&lt;/li&gt;
&lt;li&gt;Las actualizaciones se despliegan a través de pipelines CI/CD controlados&lt;/li&gt;
&lt;li&gt;Cada despliegue se firma digitalmente y se verifica antes de activarse&lt;/li&gt;
&lt;li&gt;Los registros de auditoria capturan cada intento de modificacion del sistema de archivos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sso-single-sign-on&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sso-single-sign-on&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SSO (Single Sign-On)&lt;/h3&gt;
&lt;p&gt;Los empleados gubernamentales inician sesion utilizando sus credenciales seguras de Active Directory / Azure AD, incorporando 2FA y claves de hardware (YubiKey).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios del SSO gubernamental:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Revocacion instantanea de acceso cuando un empleado deja la organización&lt;/li&gt;
&lt;li&gt;Politicas de contrasena centralizadas que cumplen con estándares NIST&lt;/li&gt;
&lt;li&gt;Registro completo de cada acceso para auditoria&lt;/li&gt;
&lt;li&gt;Integración con sistemas de identidad gubernamental existentes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;arquitectura-zero-trust&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-zero-trust&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura Zero Trust&lt;/h3&gt;
&lt;p&gt;En 2026, los sitios gubernamentales implementan el modelo “Zero Trust”:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada solicitud se autentica y autoriza independientemente&lt;/li&gt;
&lt;li&gt;No se asume confianza basada en la ubicacion de la red&lt;/li&gt;
&lt;li&gt;Micro-segmentacion entre componentes del sistema&lt;/li&gt;
&lt;li&gt;Monitoreo continuo de comportamiento anomalo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-accesibilidad-wcag-22-por-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-accesibilidad-wcag-22-por-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Accesibilidad (WCAG 2.2) por diseño&lt;/h2&gt;
&lt;p&gt;Los gobiernos tienen un mandato legal (EAA en Europa, Sección 508 en EE.UU.) de ser accesibles para &lt;em&gt;todos&lt;/em&gt; los ciudadanos. Esta no es una opción; es un requisito legal con consecuencias reales por incumplimiento.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-de-los-constructores-propietarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-de-los-constructores-propietarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema de los constructores propietarios&lt;/h3&gt;
&lt;p&gt;Los “Page Builders” propietarios frecuentemente generan código desordenado e inaccesible (&lt;code&gt;sopa de divs&lt;/code&gt;). Esta generación automática de HTML carece de la estructura semántica necesaria para lectores de pantalla y tecnologías de asistencia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problemás comunes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encabezados fuera de orden jerarquico&lt;/li&gt;
&lt;li&gt;Imágenes sin texto alternativo significativo&lt;/li&gt;
&lt;li&gt;Formularios sin etiquetas asociadas correctamente&lt;/li&gt;
&lt;li&gt;Contraste de color insuficiente&lt;/li&gt;
&lt;li&gt;Navegación por teclado rota&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-solución-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;WordPress Headless&lt;/strong&gt; o &lt;strong&gt;Bloques Gutenberg Personalizados&lt;/strong&gt; permiten a los desarrolladores producir HTML semántico y pristino que es 100% compatible con WCAG 2.2 AA.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Control total sobre la estructura HTML de cada componente&lt;/li&gt;
&lt;li&gt;Pruebas de accesibilidad automatizadas integradas en el pipeline de desarrollo&lt;/li&gt;
&lt;li&gt;Bloques personalizados que fuerzan patrones accesibles por defecto&lt;/li&gt;
&lt;li&gt;Compatibilidad nativa con tecnologías de asistencia&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;caso-de-estudio-nasa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-nasa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de estudio: NASA&lt;/h3&gt;
&lt;p&gt;Cuando &lt;strong&gt;NASA&lt;/strong&gt; relanzo su sitio en WordPress, mejoro la accesibilidad para lectores de pantalla en un 40% comparado con su antigua implementación en Drupal. Los puntos clave de su migración incluyeron:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estructura de encabezados completamente semántica&lt;/li&gt;
&lt;li&gt;Descripciones alternativas detalladas para todas las imágenes cientificas&lt;/li&gt;
&lt;li&gt;Navegación por teclado completa sin trampas de foco&lt;/li&gt;
&lt;li&gt;Subtitulos y transcripciones para todo el contenido multimedia&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cumplimiento-del-acta-europea-de-accesibilidad-eaa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cumplimiento-del-acta-europea-de-accesibilidad-eaa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cumplimiento del Acta Europea de Accesibilidad (EAA)&lt;/h3&gt;
&lt;p&gt;A partir de 2025, la EAA requiere que todos los servicios digitales gubernamentales en la UE cumplan con estándares de accesibilidad estrictos. WordPress proporciona la flexibilidad necesaria para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implementar todos los criterios de éxito WCAG 2.2 nivel AA&lt;/li&gt;
&lt;li&gt;Documentar el cumplimiento a través de declaraciones de accesibilidad&lt;/li&gt;
&lt;li&gt;Realizar auditorias automáticas y manuales periodicas&lt;/li&gt;
&lt;li&gt;Gestionar un mecanismo de retroalimentacion para ciudadanos&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-comúnicación-de-crisis-escalabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-comúnicación-de-crisis-escalabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Comúnicación de crisis: Escalabilidad&lt;/h2&gt;
&lt;p&gt;Cuando una pandemia golpea, o un desastre natural ocurre, los sitios web gubernamentales experimentan picos de tráfico del 10.000%. Los servidores propietarios frecuentemente colapsan justo cuando los ciudadanos más necesitan información.&lt;/p&gt;
&lt;h3 id=&quot;wordpress-estatico-para-información-crítica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-estatico-para-información-crítica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress estatico para información crítica&lt;/h3&gt;
&lt;p&gt;Para páginas de información crítica, frecuentemente usamos “Generación de Sitios Estaticos” (Simply Static / Headless).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como funciona:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La página se convierte en un archivo HTML plano y se distribuye a miles de nodos CDN globales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No puede caer&lt;/strong&gt;. No hay base de datos que sobrecargar. Permanece en linea incluso si el centro de datos sufre un fallo catastrofico.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;arquitectura-de-resiliencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-de-resiliencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura de resiliencia&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Capas de protección:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;CDN global&lt;/strong&gt;: Contenido distribuido en más de 200 ubicaciones mundiales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failover automático&lt;/strong&gt;: Si un nodo falla, el tráfico se redirige instantaneamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache infinito&lt;/strong&gt;: Las páginas estaticas se sirven desde la memoria, sin necesidad de procesamiento del servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalado automático&lt;/strong&gt;: La infraestructura se expande automáticamente en respuesta a picos de tráfico&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;caso-de-estudio-covid-19&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-covid-19&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de estudio: COVID-19&lt;/h3&gt;
&lt;p&gt;Durante la pandemia, los sitios gubernamentales basados en WordPress estatico mantuvieron alta disponibilidad mientras sitios construidos en plataformas propietarias experimentaron caidas de horas durante los momentos de mayor demanda de información pública. La diferencia fue la arquitectura: WordPress permite desacoplar la capa de entrega de la capa de gestión de contenido.&lt;/p&gt;
&lt;h3 id=&quot;comúnicación-multicanal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comúnicación-multicanal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comúnicación multicanal&lt;/h3&gt;
&lt;p&gt;En 2026, la comunicación de crisis no se limita al sitio web. WordPress como hub central permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Publicación simultanea en web, apps móviles y pantallas informativas&lt;/li&gt;
&lt;li&gt;Actualizaciones en tiempo real a través de la API REST&lt;/li&gt;
&lt;li&gt;Distribucion automática de alertas a sistemas de notificación de emergencia&lt;/li&gt;
&lt;li&gt;Integración con redes sociales para maxima difusion&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-eficiencia-de-costos-y-valor-para-el-contribuyente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-eficiencia-de-costos-y-valor-para-el-contribuyente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Eficiencia de costos y valor para el contribuyente&lt;/h2&gt;
&lt;p&gt;Las licencias de CMS Empresarial propietario pueden costar &lt;strong&gt;$500.000 por año&lt;/strong&gt;. Eso es medio millon de dolares de dinero de los contribuyentes gastado en &lt;em&gt;alquiler de software&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&quot;análisis-comparativo-de-costos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-comparativo-de-costos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis comparativo de costos&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Concepto&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CMS Propietario&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress Empresarial&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Licencia anual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$200K - $500K&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Hosting gestionado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$50K - $150K&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$20K - $60K&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Mantenimiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$100K - $200K&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$40K - $80K&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Desarrollo personalizado&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$300K+ (restringido)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$100K - $200K (ilimitado)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Total 3 años&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$1.5M - $3M+&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;$200K - $500K&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;redireccion-del-presupuesto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#redireccion-del-presupuesto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Redireccion del presupuesto&lt;/h3&gt;
&lt;p&gt;Con WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Licencia&lt;/strong&gt;: $0.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambio Presupuestario&lt;/strong&gt;: Esos $500K pueden redirigirse al &lt;strong&gt;Desarrollo de Funcionalidades&lt;/strong&gt;. En lugar de pagar por el derecho a usar el software, el gobierno paga para &lt;em&gt;mejorar&lt;/em&gt; el software para los ciudadanos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;retorno-de-inversión-comprobado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#retorno-de-inversión-comprobado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Retorno de inversión comprobado&lt;/h3&gt;
&lt;p&gt;Los gobiernos que han migrado a WordPress reportan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;70% de reduccion&lt;/strong&gt; en costos de licencias de software&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;50% de reduccion&lt;/strong&gt; en tiempo de publicación de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;40% de mejora&lt;/strong&gt; en metricas de satisfaccion ciudadana&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30% de reduccion&lt;/strong&gt; en costos de mantenimiento técnico&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;interoperabilidad-y-reutilizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#interoperabilidad-y-reutilizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Interoperabilidad y reutilizacion&lt;/h3&gt;
&lt;p&gt;Cuando una ciudad desarrolla una funcionalidad en WordPress, puede compartirla con otras administraciónes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sistemas de reserva de citas en linea&lt;/li&gt;
&lt;li&gt;Portales de transparencia y datos abiertos&lt;/li&gt;
&lt;li&gt;Sistemas de participacion ciudadana&lt;/li&gt;
&lt;li&gt;Plataformás de tramitacion electronica&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;drupal-vs-wordpress-vs-sitecore-vs-adobe-experience-manager-para-sitios-web-gubernamentales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#drupal-vs-wordpress-vs-sitecore-vs-adobe-experience-manager-para-sitios-web-gubernamentales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Drupal vs WordPress vs Sitecore vs Adobe Experience Manager para sitios web gubernamentales&lt;/h2&gt;
&lt;p&gt;La selección de CMS gubernamental a menudo se reduce a cuatro contendientes. Así es como se comparan en los criterios que más importan para despliegues del sector público:&lt;/p&gt;





























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Criterio&lt;/th&gt;&lt;th&gt;WordPress&lt;/th&gt;&lt;th&gt;Drupal&lt;/th&gt;&lt;th&gt;Sitecore&lt;/th&gt;&lt;th&gt;Adobe Experience Manager&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Coste de licencia&lt;/td&gt;&lt;td&gt;Gratuito (código abierto)&lt;/td&gt;&lt;td&gt;Gratuito (código abierto)&lt;/td&gt;&lt;td&gt;$40.000-200.000+/año&lt;/td&gt;&lt;td&gt;$250.000-500.000+/año&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hosting FedRAMP&lt;/td&gt;&lt;td&gt;WordPress VIP (autorizado)&lt;/td&gt;&lt;td&gt;Acquia (autorizado)&lt;/td&gt;&lt;td&gt;Managed Cloud&lt;/td&gt;&lt;td&gt;Adobe Managed Services&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cumplimiento WCAG 2.2 AA&lt;/td&gt;&lt;td&gt;Control total sobre la salida HTML&lt;/td&gt;&lt;td&gt;Control total sobre la salida HTML&lt;/td&gt;&lt;td&gt;Dependiente del proveedor&lt;/td&gt;&lt;td&gt;Dependiente del proveedor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Disponibilidad de desarrolladores&lt;/td&gt;&lt;td&gt;Mayor reserva de talento a nivel global&lt;/td&gt;&lt;td&gt;Fuerte pero en disminución&lt;/td&gt;&lt;td&gt;Solo especialistas, costoso&lt;/td&gt;&lt;td&gt;Solo especialistas, muy costoso&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;UX del editor de contenido&lt;/td&gt;&lt;td&gt;Editor de bloques Gutenberg (intuitivo)&lt;/td&gt;&lt;td&gt;Módulo Paragraphs (curva de aprendizaje más pronunciada)&lt;/td&gt;&lt;td&gt;Basado en componentes (complejo)&lt;/td&gt;&lt;td&gt;Basado en componentes (complejo)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Multisite / multi-agencia&lt;/td&gt;&lt;td&gt;Multisite nativo&lt;/td&gt;&lt;td&gt;Organic Groups / multisite&lt;/td&gt;&lt;td&gt;Sitecore XM Cloud&lt;/td&gt;&lt;td&gt;Sites (multi-tenant)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tiempo típico de despliegue gubernamental&lt;/td&gt;&lt;td&gt;2-4 meses&lt;/td&gt;&lt;td&gt;3-6 meses&lt;/td&gt;&lt;td&gt;6-12 meses&lt;/td&gt;&lt;td&gt;6-18 meses&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;WordPress&lt;/strong&gt; gana en coste, experiencia del editor y disponibilidad de talento. &lt;strong&gt;Drupal&lt;/strong&gt; gana en modelado de contenido estructurado para datos gubernamentales complejos (portales censales, bases de datos regulatorias). &lt;strong&gt;Sitecore&lt;/strong&gt; y &lt;strong&gt;AEM&lt;/strong&gt; solo se justifican cuando la organización ya tiene acuerdos enterprise y equipos de proveedores dedicados.&lt;/p&gt;
&lt;p&gt;Para la mayoría de sitios web gubernamentales — portales de información, directorios de servicios, sitios de noticias, intranets internas — WordPress proporciona el 95% de la funcionalidad requerida al 10% del coste de las alternativas propietarias. El 5% restante (motores de workflow complejos, federación de datos multi-jurisdiccional) puede abordarse mediante WordPress headless con microservicios especializados.&lt;/p&gt;
&lt;h2 id=&quot;6-casos-de-estudio-destacados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-casos-de-estudio-destacados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Casos de estudio destacados&lt;/h2&gt;
&lt;h3 id=&quot;la-casa-blanca-whitehousegov&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-casa-blanca-whitehousegov&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La Casa Blanca (whitehouse.gov)&lt;/h3&gt;
&lt;p&gt;Migro a WordPress para asegurar velocidad, seguridad y accesibilidad. La decision fue impulsada por la necesidad de un sistema que pudiera manejar millones de visitantes durante eventos presidenciales mientras mantenia los más altos estándares de seguridad y accesibilidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo de carga reducido en un 60%&lt;/li&gt;
&lt;li&gt;Cumplimiento total WCAG 2.2 AA&lt;/li&gt;
&lt;li&gt;Gestión de contenido simplificada para el equipo de comunicaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;nasa-nasagov&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nasa-nasagov&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;NASA (nasa.gov)&lt;/h3&gt;
&lt;p&gt;Se traslado de Drupal a WordPress en 2024 para consolidar cientos de subsitios en una experiencia unificada y amigable para el usuario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desafios superados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migración de más de 300.000 páginas de contenido cientifico&lt;/li&gt;
&lt;li&gt;Unificacion de 100+ subsitios departamentales&lt;/li&gt;
&lt;li&gt;Implementación de búsqueda avanzada con datos cientificos&lt;/li&gt;
&lt;li&gt;Accesibilidad mejorada para contenido multimedia complejo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;govuk-reino-unido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#govuk-reino-unido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gov.uk (Reino Unido)&lt;/h3&gt;
&lt;p&gt;Utiliza estándares abiertos y componentes modulares fuertemente influenciados por la filosofia de WordPress de democratizacion del contenido web.&lt;/p&gt;
&lt;h3 id=&quot;gobierno-de-finlandia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gobierno-de-finlandia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gobierno de Finlandia&lt;/h3&gt;
&lt;p&gt;Servicios digitales modernos construidos sobre WordPress, demostrando que el código abierto puede cumplir con los requisitos más exigentes del sector público nordico.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-implementación-de-wordpress-gubernamental-mejores-prácticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-implementación-de-wordpress-gubernamental-mejores-prácticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Implementación de WordPress gubernamental: Mejores prácticas&lt;/h2&gt;
&lt;h3 id=&quot;arquitectura-recomendada-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-recomendada-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura recomendada para 2026&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Ciudadano] → [CDN/WAF] → [Load Balancer] → [WordPress Headless]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                                     ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                              [API REST/GraphQL]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                                     ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                              [Frontend Astro/Next.js]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                                     ↓&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                                              [Edge Cache Global]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;lista-de-verificación-de-seguridad-gubernamental&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-de-seguridad-gubernamental&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación de seguridad gubernamental&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Autorización FedRAMP o equivalente local verificada&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; SSO con MFA implementado para todos los usuarios&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Sistema de archivos inmutable en producción&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Monitoreo de seguridad 24/7 activo&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Plan de respuesta a incidentes documentado y probado&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Auditorias de seguridad trimestrales por terceros independientes&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Cifrado end-to-end para datos sensibles&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Registro completo de auditoria para cumplimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;gestión-del-cambio-organizaciónal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-del-cambio-organizaciónal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión del cambio organizaciónal&lt;/h3&gt;
&lt;p&gt;La migración a WordPress no es solo un cambio tecnológico; requiere gestión del cambio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Capacitacion del personal en la nueva plataforma&lt;/li&gt;
&lt;li&gt;Documentación de procesos y flujos de trabajo&lt;/li&gt;
&lt;li&gt;Periodo de transicion con soporte técnico dedicado&lt;/li&gt;
&lt;li&gt;Metricas de adopcion y satisfaccion del usuario&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-el-futuro-del-govtech-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-el-futuro-del-govtech-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. El futuro del GovTech con WordPress&lt;/h2&gt;
&lt;h3 id=&quot;tendencias-2026-2028&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tendencias-2026-2028&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tendencias 2026-2028&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IA para servicios ciudadanos&lt;/strong&gt;: Chatbots inteligentes basados en RAG que responden preguntas de los ciudadanos utilizando contenido oficial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identidad digital&lt;/strong&gt;: Integración con sistemas de identidad digital nacionales para autenticación segura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos abiertos&lt;/strong&gt;: WordPress como plataforma para portales de datos abiertos gubernamentales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Participacion ciudadana&lt;/strong&gt;: Herramientas de consulta y votacion integradas en el CMS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wordpress-como-plataforma-de-democracia-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-como-plataforma-de-democracia-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress como plataforma de democracia digital&lt;/h3&gt;
&lt;p&gt;En 2026, WordPress no es solo un CMS para el gobierno; es una herramienta de democracia digital. Permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transparencia total a través de código auditeable&lt;/li&gt;
&lt;li&gt;Participacion ciudadana a través de formularios y comentarios moderados&lt;/li&gt;
&lt;li&gt;Acceso universal a la información pública&lt;/li&gt;
&lt;li&gt;Interoperabilidad entre diferentes niveles de gobierno&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion&lt;/h2&gt;
&lt;p&gt;Usar WordPress en el gobierno no es solo una decision técnica; es una decision etica. Apoya los valores de apertura, transparencia y accesibilidad que los gobiernos democraticos buscan mantener.&lt;/p&gt;
&lt;p&gt;La combinación de código abierto, comunidad global, estándares de seguridad empresarial y accesibilidad nativa hace de WordPress la única opción lógica para el sector público en 2026. Los gobiernos que continuan invirtiendo en software propietario estan desperdiciando recursos publicos y limitando la innovacion digital.&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, ayudamos a entidades del sector público a migrar de sistemas propietarios obsoletos a stacks modernos de código abierto seguros y eficientes. Nuestra experiencia en &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; y &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;seguridad&lt;/a&gt; nos posiciona como el socio ideal para proyectos GovTech.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Su organización gubernamental esta lista para la transformación digital? Contacte con &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; para comenzar su migración a WordPress hoy.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Servicios empresariales de desarrollo&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoria de seguridad WordPress&lt;/a&gt; - Seguridad de nivel gubernamental&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad WordPress&lt;/a&gt; - Rendimiento para sitios de alto tráfico&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;Migración a Astro y Next.js&lt;/a&gt; - Arquitecturas headless modernas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;Rediseño WordPress&lt;/a&gt; - Modernizacion de sitios gubernamentales existentes&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>enterprise</category><category>government</category><category domain="tag">public-sector</category><category domain="tag">govtech</category><category domain="tag">open-source</category><category domain="tag">security</category><category domain="tag">wcag-compliance</category><enclosure url="https://wppoland.com/images/og/modern-office-coding-setup.jpg" type="image/jpeg"/></item><item><title>El auge y caida de las &apos;presell pages&apos; - Una leccion de historia SEO (edicion 2026)</title><link>https://wppoland.com/es/the-rise-and-fall-of-presell-pages-an-seo-history-lesson-2026-edition/</link><guid isPermaLink="true">https://wppoland.com/es/the-rise-and-fall-of-presell-pages-an-seo-history-lesson-2026-edition/</guid><description>Una inmersion profunda en la historia del Black Hat SEO. Que eran las Presell Pages, como funcionaban y por que usar esta técnica en 2026 es una forma segura de ser baneado.</description><pubDate>Wed, 19 Feb 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Si entraste al mundo del Marketing Digital y el SEO despues de 2015, el termino &lt;strong&gt;“Presell Page”&lt;/strong&gt; (o “Precel” en la jerga SEO polaca) podria sonar extrano o arcaico. Pero de 2008 a 2012, antes de las grandes purgas de las actualizaciones Panda y Penguin, las Presell Pages eran la base absoluta de las estrategias de Link Building en Polonia y en toda Europa.&lt;/p&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En esta inmersion histórica profunda, exploraremos que eran, por que funcionaban y por que intentar usarlas en 2026 es suicidio digital.&lt;/p&gt;
&lt;h2 id=&quot;que-era-exactamente-una-presell-page&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-era-exactamente-una-presell-page&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que era exactamente una “presell page”?&lt;/h2&gt;
&lt;p&gt;Funcionalmente, una Presell Page era un blog, generalmente ejecutandose en una instalación generica de WordPress, creado con un propósito específico: &lt;strong&gt;alojar artículos que contenian backlinks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A diferencia de los &lt;strong&gt;Directorios de Enlaces&lt;/strong&gt; (Web Directory), que eran solo listas de URLs categorizadas por tema, las Presell Pages intentaban imitar blogs “normales”. La idea era incrustar el enlace dentro de un “artículo contextual.”&lt;/p&gt;
&lt;h3 id=&quot;la-anatomia-de-un-artículo-de-presell&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-anatomia-de-un-artículo-de-presell&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La anatomia de un artículo de presell&lt;/h3&gt;
&lt;p&gt;Una entrada tipica se veia asi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Longitud:&lt;/strong&gt; 1000-1500 caracteres (extremadamente corto para los estándares actuales).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido:&lt;/strong&gt; Relleno generico sobre un tema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces:&lt;/strong&gt; 2 o 3 “Palabras Clave” hipervinculadas al sitio principal del clientes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Si estas buscando &lt;strong&gt;neumaticos baratos Madrid&lt;/strong&gt;, deberias revisar nuestra oferta. Tenemos los mejores &lt;strong&gt;neumaticos de invierno&lt;/strong&gt; de la ciudad…”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;la-era-de-los-sinonimos-y-los-spinners&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-era-de-los-sinonimos-y-los-spinners&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La era de los sinonimos y los spinners&lt;/h2&gt;
&lt;p&gt;Como las agencias SEO necesitaban generar miles de enlaces, no podian escribir contenido original para cada “Presell.” Esto llevo al auge de los &lt;strong&gt;Text Spinners&lt;/strong&gt; (Mezcladores de texto).&lt;/p&gt;
&lt;p&gt;Los especialistas en SEO escribian un “Texto Maestro” usando sintaxis como esta:
&lt;code&gt;{Compra|Adquiere|Pide|Consigue} {neumaticos|ruedas|llantas} {baratos|economicos|asequibles} en {Madrid|Barcelona|Espana}.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;El software generaba cientos de variaciones únicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Compra neumaticos baratos en Madrid.”&lt;/li&gt;
&lt;li&gt;“Adquiere ruedas economicas en Barcelona.”&lt;/li&gt;
&lt;li&gt;“Pide llantas asequibles en Espana.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Técnicamente, el contenido era “único” (sin penalizacion por contenido duplicado). Semanticamente, a menudo era basura ilegible.&lt;/p&gt;
&lt;h2 id=&quot;las-actualizaciones-del-algoritmo-que-mataron-la-estrella&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-actualizaciones-del-algoritmo-que-mataron-la-estrella&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las actualizaciones del algoritmo que mataron la estrella&lt;/h2&gt;
&lt;p&gt;Dos actualizaciones importantes de Google terminaron con esta era:&lt;/p&gt;
&lt;h3 id=&quot;1-google-panda-2011---la-policia-de-la-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-google-panda-2011---la-policia-de-la-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Google Panda (2011) - La policia de la calidad&lt;/h3&gt;
&lt;p&gt;Panda apunto al “Contenido Delgado.” Aprendio a reconocer artículos de baja calidad, spineados y cortos que no ofrecian valor al usuario. De la noche a la manana, miles de redes de Presell fueron desindexadas. Los sitios que dependian de estas redes para su posicionamiento vieron como sus rankings se desplomaban sin posibilidad de recuperacion rápida.&lt;/p&gt;
&lt;h3 id=&quot;2-google-penguin-2012---el-guardian-de-los-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-google-penguin-2012---el-guardian-de-los-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Google Penguin (2012) - El guardian de los enlaces&lt;/h3&gt;
&lt;p&gt;Penguin apunto a los “Perfiles de Enlaces No Naturales.” Noto que si 10,000 enlaces apuntaban a un sitio con &lt;em&gt;exactamente el mismo texto ancla&lt;/em&gt; (“Prestamos Baratos”), era manipulación. Los sitios que dependian de Presell Pages vieron sus posiciones caer a cero. Muchas empresas que habian invertido exclusivamente en PBNs quedaron sin presencia en linea de un dia para otro.&lt;/p&gt;
&lt;h2 id=&quot;el-legado-de-las-presell-pages-lecciones-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-legado-de-las-presell-pages-lecciones-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El legado de las presell pages: lecciones para 2026&lt;/h2&gt;
&lt;p&gt;Las presell pages dejaron un legado importante que todo profesional del SEO deberia conocer:&lt;/p&gt;
&lt;h3 id=&quot;la-evolucion-del-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-evolucion-del-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La evolucion del link building&lt;/h3&gt;
&lt;p&gt;El colapso de las presell pages forzo a la industria SEO a evolucionar. Lo que antes era un juego de números (más enlaces = mejor posicionamiento) se convirtio en un juego de calidad. Esta transformación beneficio en última instancia tanto a los usuarios como a los profesionales del marketing.&lt;/p&gt;
&lt;h3 id=&quot;la-importancia-de-la-calidad-del-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-importancia-de-la-calidad-del-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La importancia de la calidad del contenido&lt;/h3&gt;
&lt;p&gt;Google aprendio de la era de las presell pages. Los algoritmos actuales son exponencialmente más sofisticados en detectar contenido de baja calidad, ya sea generado por spinners de la decada de 2010 o por IA mal utilizada en 2026.&lt;/p&gt;
&lt;h3 id=&quot;las-señales-de-manipulación-son-permanentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-señales-de-manipulación-son-permanentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las señales de manipulación son permanentes&lt;/h3&gt;
&lt;p&gt;Muchos sitios que construyeron sus perfiles de backlinks exclusivamente con presell pages nunca se recuperaron completamente. Incluso despues de desautorizar enlaces y construir nuevos perfiles, la “huella” de la manipulación pasada puede perseguir a un dominio durante años.&lt;/p&gt;
&lt;h2 id=&quot;presell-pages-vs-realidad-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#presell-pages-vs-realidad-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Presell pages vs. realidad de 2026&lt;/h2&gt;
&lt;p&gt;Hoy, el concepto de una “Presell Page” ha evolucionado hacia &lt;strong&gt;Guest Posting&lt;/strong&gt; y &lt;strong&gt;Contenido Patrocinado&lt;/strong&gt;. Sin embargo, hay una diferencia fundamental: &lt;strong&gt;La Calidad.&lt;/strong&gt;&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;”Presell Page” Antigua (2010)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Guest Post Moderno (2026)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Audiencia Objetivo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bots de Google&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Humanos Reales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Calidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja / Spineada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta / Experta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plataforma&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Granja de Spam&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Blog Reputado de la Industria&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis / $1&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$100 - $1000+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Riesgo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto (Ban)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo (si se hace bien)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;que-funciona-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-funciona-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que funciona en 2026&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Digital PR&lt;/strong&gt;: Publicaciones en medios reales de la industria. Un enlace de un periodico digital respetado vale más que mil enlaces de presell pages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contenido de autoridad&lt;/strong&gt;: Artículos profundos, investigación original, estudios de caso detallados que demuestren E-E-A-T (Experiencia, Expertise, Autoridad, Confiabilidad).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Herramientas y recursos&lt;/strong&gt;: Crear herramientas gratuitas, calculadoras, plantillas o bases de datos que otros quieran enlazar naturalmente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Relaciones genuinas&lt;/strong&gt;: Construir relaciones reales con periodistas, editores y otros creadores de contenido de tu industria.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Participacion comunitaria&lt;/strong&gt;: Contribuir a la comunidad a través de conferencias, webinars, podcasts y foros especializados.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;los-paralelismos-con-la-ia-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-paralelismos-con-la-ia-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los paralelismos con la IA en 2026&lt;/h2&gt;
&lt;p&gt;Es imposible no ver los paralelismos entre la era de las presell pages y el uso actual de la IA para generar contenido:&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Era Presell (2010)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Era IA (2026)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Text Spinners&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Generadores de contenido IA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Contenido “único” pero sin valor&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Contenido “fluido” pero generico&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Producción masiva&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Publicación a escala&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Deteccion por Panda&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Deteccion por algoritmos anti-spam&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La leccion es clara: Google siempre encuentra la forma de detectar y penalizar el contenido creado para manipular rankings en lugar de servir a los usuarios.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Deberias construir una “Red Privada de Blogs” (PBN) de Presell Pages en 2026? &lt;strong&gt;Absolutamente no.&lt;/strong&gt; Los algoritmos de IA de Google (RankBrain, BERT, SpamBrain) son demasiado sofisticados. Detectan “patrones de enlaces” instantaneamente.&lt;/p&gt;
&lt;p&gt;La leccion de la historia es clara: &lt;strong&gt;Los atajos funcionan durante un año. La calidad funciona para siempre.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Los profesionales del SEO que entienden la historia de las presell pages estan mejor equipados para tomar decisiones estrategicas en el presente. No porque vayan a repetir esas tacticas, sino porque entienden los principios subyacentes que Google usa para evaluar la calidad y la autenticidad.&lt;/p&gt;
&lt;p&gt;Explora nuestros servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; para construir una presencia web solida y sostenible.&lt;/p&gt;</content:encoded><category>seo</category><category>history</category><category domain="tag">black hat</category><category domain="tag">link building</category><category domain="tag">google penguin</category><category domain="tag">content marketing</category><enclosure url="https://wppoland.com/images/og/seo-presell-pages-history-guide.jpg" type="image/jpeg"/></item><item><title>Informe WordPress en 2025, falta de transparencia</title><link>https://wppoland.com/es/wordpress-2025-report-review-transparency/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-2025-report-review-transparency/</guid><description>Análisis crítico del informe oficial de WordPress en 2025 - que se incluyo, que se omitio y por que la comunidad merece más transparencia.</description><pubDate>Mon, 17 Feb 2025 06:34:56 GMT</pubDate><content:encoded>&lt;p&gt;La comunidad de WordPress ha valorado durante mucho tiempo la apertura, la colaboración y las discusiones honestas. Por eso, cuando un informe titulado “&lt;a href=&quot;https://wordpress.org/news/2025/02/wordpress-in-2025-report/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress en 2025&lt;/a&gt;” aparecio en el sitio web oficial de WordPress.org, muchos de nosotros, incluido yo mismo, esperabamos una mirada completa al estado actual y futuro de la plataforma. En su lugar, recibimos algo que se asemeja a una presentacion corporativa pulida en lugar de un análisis exhaustivo del estado del proyecto.&lt;/p&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;promesas-no-cumplidas-lo-que-esperabamos-vs-lo-que-obtuvimos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#promesas-no-cumplidas-lo-que-esperabamos-vs-lo-que-obtuvimos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Promesas no cumplidas: Lo que esperabamos vs. Lo que obtuvimos&lt;/h2&gt;
&lt;p&gt;El título “WordPress en 2025” genera expectativas: una evaluación amplia y con vision de futuro de la plataforma tal como esta hoy, 23 de febrero de 2025, y hacia donde se dirige. Dada la publicación en WordPress.org, uno podria asumir que el informe refleja la voz colectiva de la comunidad, abordando tanto exitos como desafios. En su lugar, el informe de Noel Tock de Human Made se centra en WordPress como una solución empresarial, elogiando su escalabilidad, potencial de IA y atractivo para grandes marcas.&lt;/p&gt;
&lt;p&gt;No hay nada malo en destacar la adopcion corporativa: WordPress impulsa gigantes como The Times y Amnesty International. Sin embargo, presentar esto como la &lt;em&gt;única&lt;/em&gt; historia de WordPress en 2025 parece reduccionista.&lt;/p&gt;
&lt;h2 id=&quot;omisiones-que-hablan-más-fuerte-que-las-palabras&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#omisiones-que-hablan-más-fuerte-que-las-palabras&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Omisiones que hablan más fuerte que las palabras&lt;/h2&gt;
&lt;p&gt;Lo que falta en el informe es tan revelador como lo que se incluye:&lt;/p&gt;
&lt;h3 id=&quot;salud-comunitaria-y-gobernanza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#salud-comunitaria-y-gobernanza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Salud comunitaria y gobernanza&lt;/h3&gt;
&lt;p&gt;El año 2025 fue fundamental para WordPress, con discusiones continuas sobre la gobernanza del proyecto y la dinámica comunitaria. Sin embargo, el informe no aborda estos temas. Como les va a los colaboradores? Cual es el estado del compromiso voluntario en medio de un ecosistema comercial creciente? Estas preguntas importan a los miles de desarrolladores, disenadores y usuarios que mantienen WordPress vivo, pero estan ausentes aqui.&lt;/p&gt;
&lt;h3 id=&quot;controversias-recientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#controversias-recientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Controversias recientes&lt;/h3&gt;
&lt;p&gt;No pretendamos que 2025 fue tranquilo. La comunidad de WordPress enfrento númerosos debates: cambios en el ecosistema de plugins, disputas de licencias, el rol evolutivo de Automattic. Al ignorarlos, el informe presenta una imagen incompleta.&lt;/p&gt;
&lt;h3 id=&quot;pequeños-negocios-y-usuarios-independientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pequeños-negocios-y-usuarios-independientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pequeños negocios y usuarios independientes&lt;/h3&gt;
&lt;p&gt;WordPress no es solo una herramienta corporativa: es la base de innumerables pequeños negocios, bloggers y freelancers en todo el mundo. Su historia también merece una voz.&lt;/p&gt;
&lt;h2 id=&quot;por-que-encaja-la-etiqueta-de-pr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-encaja-la-etiqueta-de-pr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que encaja la etiqueta de PR&lt;/h2&gt;
&lt;p&gt;Este informe se siente más como una campana de PR corporativa que un análisis exhaustivo de la industria. Publicado en WordPress.org, lleva un aura de autoridad, pero su alcance esta adaptado a los clientes de Human Made en lugar de la comunidad más amplia.&lt;/p&gt;
&lt;p&gt;Para compradores empresariales, es un pitch atractivo: WordPress es maduro, flexible y listo para la suite C. Pero para el resto de nosotros, desarrolladores, propietarios de pequeñas agencias, aficionados, es una oportunidad perdida de ver donde realmente se encuentra WordPress en 2025.&lt;/p&gt;
&lt;h2 id=&quot;un-llamado-al-equilibrio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#un-llamado-al-equilibrio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Un llamado al equilibrio&lt;/h2&gt;
&lt;p&gt;El informe “WordPress en 2025” tiene sus meritos. Destaca fortalezas reales como la flexibilidad del código abierto y la creciente adopcion empresarial. Sin embargo, su enfoque estrecho y omisiones estrategicas significan que obtenemos una versión adaptada a la sala de juntas en lugar de una imagen completa. Para una plataforma construida sobre la apertura, eso es un compromiso significativo.&lt;/p&gt;
&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias Avanzadas de Implementación&lt;/h2&gt;
&lt;p&gt;Implementar con éxito estas técnicas SEO requiere un enfoque sistematico que equilibre la optimización técnica con la calidad del contenido. Asi es como ejecutar cada estrategia efectivamente.&lt;/p&gt;
&lt;h3 id=&quot;configuración-y-ajustes-técnicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-y-ajustes-técnicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración y Ajustes Técnicos&lt;/h3&gt;
&lt;p&gt;Comienza realizando una auditoria completa de tu configuración SEO actual. Usa herramientas como Google Search Console, Screaming Frog o SEMrush para identificar problemas y oportunidades existentes. Documenta tus metricas base incluyendo posiciones actuales, tráfico organico y tasas de conversión.&lt;/p&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de Trabajo de Optimización de Contenido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de Investigacion de Palabras Clave&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identificar palabras clave primarias y secundarias&lt;/li&gt;
&lt;li&gt;Analizar la intencion de búsqueda para cada termino&lt;/li&gt;
&lt;li&gt;Mapear palabras clave al contenido existente&lt;/li&gt;
&lt;li&gt;Identificar brechas de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación/Optimización de Contenido&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escribir títulos y meta descripciones convincentes&lt;/li&gt;
&lt;li&gt;Estructurar contenido con jerarquía de encabezados adecuada&lt;/li&gt;
&lt;li&gt;Incluir enlaces internos y externos relevantes&lt;/li&gt;
&lt;li&gt;Optimizar imágenes con texto alt descriptivo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación Técnica&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asegurar responsividad móvil&lt;/li&gt;
&lt;li&gt;Mejorar velocidad de carga de página&lt;/li&gt;
&lt;li&gt;Implementar marcado schema&lt;/li&gt;
&lt;li&gt;Corregir errores de rastreo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;midiendo-el-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-el-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo el Éxito&lt;/h3&gt;
&lt;p&gt;Sigue estos indicadores clave de rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crecimiento del tráfico organico&lt;/li&gt;
&lt;li&gt;Mejoras en posicionamiento de palabras clave&lt;/li&gt;
&lt;li&gt;Tasas de clics (CTR)&lt;/li&gt;
&lt;li&gt;Tasas de conversión&lt;/li&gt;
&lt;li&gt;Tasas de rebote&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu estrategia basandote en lo que funciona y lo que no. El SEO es un proceso continuo, no una tarea única.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y GEO&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>wordpress</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-2025-report-analysis.jpg" type="image/jpeg"/></item><item><title>Estrategia global de contenidos con WordPress: Mas alla de la traduccion</title><link>https://wppoland.com/es/global-content-strategy-wordpress-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/global-content-strategy-wordpress-guide-2026/</guid><description>Va a expandirse globalmente? La traduccion es solo el primer paso. Esta guía cubre las capas técnicas y estrategicas de operar una plataforma WordPress multilingue y multimercado en 2026.</description><pubDate>Tue, 04 Feb 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Expandirse globalmente es uno de los objetivos más ambiciosos y complejos para cualquier empresa digital en 2026. La traduccion es solo el primer paso de un viaje que implica localización cultural, optimización SEO internacional, arquitectura técnica multilingue y gobernanza de contenidos a escala. WordPress, gracias a su flexibilidad y ecosistema maduro, es la plataforma ideal para gestionar esta complejidad.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía cubre las capas técnicas y estrategicas necesarias para operar una presencia WordPress multilingue y multimercado de éxito en 2026.&lt;/p&gt;
&lt;h2 id=&quot;1-localización-vs-traduccion-la-diferencia-crítica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-localización-vs-traduccion-la-diferencia-crítica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Localización vs. traduccion: La diferencia crítica&lt;/h2&gt;
&lt;p&gt;La traduccion convierte texto de un idioma a otro. La localización adapta toda la experiencia del usuario al contexto cultural, regulatorio y comercial del mercado objetivo. En 2026, los usuarios esperan experiencias nativamente localizadas, no contenido que “suena a traduccion”.&lt;/p&gt;
&lt;h3 id=&quot;elementos-de-localización-más-alla-del-texto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elementos-de-localización-más-alla-del-texto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elementos de localización más alla del texto&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Formatos y convenciones:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Formatos de fecha: DD/MM/YYYY (Europa, LATAM) vs. MM/DD/YYYY (EE.UU.)&lt;/li&gt;
&lt;li&gt;Separadores numericos: 1.000,50 (Europa) vs. 1,000.50 (EE.UU./UK)&lt;/li&gt;
&lt;li&gt;Moneda: Símbolo, posición y formato varian por region&lt;/li&gt;
&lt;li&gt;Direccionalidad del texto: LTR para idiomas latinos, RTL para arabe y hebreo&lt;/li&gt;
&lt;li&gt;Unidades de medida: Metrico vs. imperial&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Adaptaciones culturales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Paletas de colores y su significado cultural&lt;/li&gt;
&lt;li&gt;Imágenes y modelos que reflejen la audiencia local&lt;/li&gt;
&lt;li&gt;Tono y nivel de formalidad (tu vs. usted en español, du vs. Sie en aleman)&lt;/li&gt;
&lt;li&gt;Referencias culturales, ejemplos y analogias locales&lt;/li&gt;
&lt;li&gt;Cumplimiento regulatorio (RGPD, CCPA, LGPD según la region)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-modelo-de-localización-en-capas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-modelo-de-localización-en-capas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El modelo de localización en capas&lt;/h3&gt;
&lt;p&gt;La localización efectiva opera en multiples capas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Capa linguistica&lt;/strong&gt;: Traduccion del texto con matices culturales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capa visual&lt;/strong&gt;: Adaptacion de imágenes, colores y layout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capa funcional&lt;/strong&gt;: Monedas, métodos de pago, formatos locales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capa SEO&lt;/strong&gt;: Palabras clave locales, hreflang, datos estructurados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capa regulatoria&lt;/strong&gt;: Cumplimiento de normativas locales.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;2-arquitectura-técnica-para-wordpress-multilingue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-arquitectura-técnica-para-wordpress-multilingue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Arquitectura técnica para WordPress multilingue&lt;/h2&gt;
&lt;p&gt;La eleccion de la arquitectura técnica es la decision más importante en una estrategia global. En 2026 existen tres enfoques principales.&lt;/p&gt;
&lt;h3 id=&quot;enfoque-1-subdirectorios-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-1-subdirectorios-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque 1: Subdirectorios (recomendado)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wppoland.com/es/   - Espanol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wppoland.com/en/   - Ingles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wppoland.com/pt/   - Portugues&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wppoland.com/pl/   - Polaco&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consolida toda la autoridad de dominio en un único dominio&lt;/li&gt;
&lt;li&gt;Link building beneficia a todas las versiones linguisticas&lt;/li&gt;
&lt;li&gt;Gestión centralizada más sencilla&lt;/li&gt;
&lt;li&gt;Menor coste de infraestructura&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Implementación en WordPress:&lt;/strong&gt;
WordPress Multisite con subsitios en subdirectorios es la implementación más comun. Cada subdirectorio funciona como un sitio independiente con su propio contenido, temas y configuraciónes, pero comparte la misma instalación de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;enfoque-2-subdominios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-2-subdominios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque 2: Subdominios&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;es.wppoland.com    - Espanol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;en.wppoland.com    - Ingles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pt.wppoland.com    - Portugues&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Separacion clara entre versiones linguisticas&lt;/li&gt;
&lt;li&gt;Posibilidad de alojar cada subdominio en diferentes servidores/regiones&lt;/li&gt;
&lt;li&gt;Util cuando hay equipos completamente independientes por region&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La autoridad del dominio se divide entre subdominios&lt;/li&gt;
&lt;li&gt;Google trata cada subdominio como un sitio separado&lt;/li&gt;
&lt;li&gt;Mayor complejidad de gestión&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;enfoque-3-dominios-de-pais-cctld&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enfoque-3-dominios-de-pais-cctld&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enfoque 3: Dominios de pais (ccTLD)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wppoland.es        - Espanol (Espana)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wppoland.com.mx    - Espanol (Mexico)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;wppoland.com.br    - Portugues (Brasil)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maxima senalizacion geografica para motores de búsqueda&lt;/li&gt;
&lt;li&gt;Confianza local del usuario&lt;/li&gt;
&lt;li&gt;Util para empresas con presencia legal en cada pais&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada dominio parte de cero en terminos de autoridad&lt;/li&gt;
&lt;li&gt;Coste significativamente mayor en link building y SEO&lt;/li&gt;
&lt;li&gt;Gestión operativa compleja&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-implementación-de-hreflang&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-implementación-de-hreflang&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Implementación de hreflang&lt;/h2&gt;
&lt;p&gt;Las etiquetas hreflang son la señal técnica más crítica para SEO internacional. Informan a Google sobre las versiones linguisticas y regionales de cada página.&lt;/p&gt;
&lt;h3 id=&quot;implementación-correcta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-correcta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación correcta&lt;/h3&gt;
&lt;p&gt;Cada página debe incluir etiquetas hreflang que apunten a todas sus versiones linguisticas, incluida a si misma:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;es&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/es/página/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;en&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/en/page/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;pt&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/pt/página/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;pl&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/pl/strona/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;alternate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; hreflang&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;x-default&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/en/page/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;errores-fatales-de-hreflang&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-fatales-de-hreflang&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores fatales de hreflang&lt;/h3&gt;
&lt;p&gt;Los errores de hreflang son los problemas de SEO internacional más comunes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hreflang unidireccional&lt;/strong&gt;: La página en español apunta a la inglesa, pero la inglesa no apunta a la española. Todas las versiones deben apuntar a todas las demas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URLs incorrectas&lt;/strong&gt;: Errores tipograficos o URLs que devuelven 404 invalidan todo el conjunto de hreflang.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de x-default&lt;/strong&gt;: La etiqueta x-default indica la versión predeterminada para usuarios que no coinciden con ninguna versión específica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confusion idioma-region&lt;/strong&gt;: &lt;code&gt;hreflang=&quot;es&quot;&lt;/code&gt; es español generico, &lt;code&gt;hreflang=&quot;es-MX&quot;&lt;/code&gt; es español de Mexico, &lt;code&gt;hreflang=&quot;es-ES&quot;&lt;/code&gt; es español de Espana.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;validación-automática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#validación-automática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Validación automática&lt;/h3&gt;
&lt;p&gt;Implemente verificaciónes automáticas en su pipeline de CI/CD que validen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todas las páginas tienen hreflang completo y bidireccional&lt;/li&gt;
&lt;li&gt;Todas las URLs referenciadas devuelven 200&lt;/li&gt;
&lt;li&gt;La etiqueta x-default esta presente&lt;/li&gt;
&lt;li&gt;Los códigos de idioma son validos (ISO 639-1)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;4-flujos-de-trabajo-de-traduccion-con-ia-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-flujos-de-trabajo-de-traduccion-con-ia-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Flujos de trabajo de traduccion con IA en 2026&lt;/h2&gt;
&lt;p&gt;La traduccion ha sido revolucionada por la IA en 2026. Los flujos de trabajo modernos combinan traduccion automática de alta calidad con revision humana.&lt;/p&gt;
&lt;h3 id=&quot;el-flujo-de-trabajo-optimo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-flujo-de-trabajo-optimo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El flujo de trabajo optimo&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Creación del contenido original&lt;/strong&gt; en el idioma principal (tipicamente ingles o el idioma del mercado más grande).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traduccion automática con IA&lt;/strong&gt; usando DeepL, Google Cloud Translation o modelos LLM especializados. La calidad en 2026 es sorprendentemente alta para la mayoria de los pares de idiomas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision humana&lt;/strong&gt; por hablantes nativos que se enfocan en:
&lt;ul&gt;
&lt;li&gt;Matices culturales que la IA no captura&lt;/li&gt;
&lt;li&gt;Terminologia técnica específica de la industria&lt;/li&gt;
&lt;li&gt;Tono de marca y registro apropiado&lt;/li&gt;
&lt;li&gt;Adaptaciones locales (ejemplos, referencias culturales)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memoria de traduccion (TM)&lt;/strong&gt; almacena todas las traducciones aprobadas para reutilizacion automática. Cuando aparece un segmento similar en contenido futuro, la TM sugiere la traduccion previa, reduciendo el trabajo de revision.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación de calidad automática&lt;/strong&gt; que detecta inconsistencias terminologicas, problemas gramaticales y posibles problemas culturales.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;herramientas-de-traduccion-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-traduccion-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de traduccion para WordPress&lt;/h3&gt;
&lt;p&gt;En 2026, las herramientas de traduccion más efectivas para WordPress incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WPML&lt;/strong&gt;: El plugin de traduccion más maduro con integración con servicios de traduccion profesional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TranslatePress&lt;/strong&gt;: Traduccion visual directamente desde el frontend del sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weglot&lt;/strong&gt;: SaaS que traduce automáticamente y permite revision manual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepL API + plugin personalizado&lt;/strong&gt;: Para control total sobre el flujo de traduccion.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reduccion-de-costes-con-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reduccion-de-costes-con-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reduccion de costes con IA&lt;/h3&gt;
&lt;p&gt;Los números hablan por si solos:&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Método&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Coste por 1000 palabras&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Calidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Velocidad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Traduccion humana pura&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;80-150 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-3 dias&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IA + revision humana&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;15-30 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy buena&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2-4 horas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IA pura (sin revision)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5-2 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Buena (con riesgos)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Minutos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El modelo optimo para la mayoria de las empresas es &lt;strong&gt;IA + revision humana&lt;/strong&gt;, que ofrece una reduccion de costes del 70-90% manteniendo una calidad muy alta.&lt;/p&gt;
&lt;h2 id=&quot;5-estrategia-seo-para-cada-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-estrategia-seo-para-cada-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Estrategia SEO para cada mercado&lt;/h2&gt;
&lt;p&gt;La traduccion de contenido no es suficiente para posicionar en mercados locales. Cada mercado requiere su propia estrategia &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;investigacion-de-palabras-clave-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#investigacion-de-palabras-clave-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Investigacion de palabras clave local&lt;/h3&gt;
&lt;p&gt;Las traducciones literales de keywords raramente coinciden con las búsquedas reales de los usuarios locales. Ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EN: “WordPress developer” -&gt; Búsqueda real en español: “desarrollador WordPress” o “programador WordPress” (ambas se buscan, pero con volumenes diferentes)&lt;/li&gt;
&lt;li&gt;EN: “website speed optimization” -&gt; ES: “optimizar velocidad web” o “acelerar página web”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada mercado necesita investigación de palabras clave nativa que considere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Variantes dialectales (español de Espana vs. español de Mexico vs. español de Argentina)&lt;/li&gt;
&lt;li&gt;Terminos técnicos locales vs. anglicismos&lt;/li&gt;
&lt;li&gt;Intencion de búsqueda que puede variar por cultura&lt;/li&gt;
&lt;li&gt;Competencia local diferente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;contenido-único-por-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-único-por-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido único por mercado&lt;/h3&gt;
&lt;p&gt;Además del contenido traducido, cada mercado debe tener contenido original que aborde:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Casos de estudio de empresas locales&lt;/li&gt;
&lt;li&gt;Regulaciones y normativas específicas del pais&lt;/li&gt;
&lt;li&gt;Eventos y conferencias locales&lt;/li&gt;
&lt;li&gt;Integraciones y herramientas populares en ese mercado&lt;/li&gt;
&lt;li&gt;Precios en moneda local&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;link-building-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#link-building-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Link building local&lt;/h3&gt;
&lt;p&gt;El posicionamiento en mercados locales requiere enlaces de sitios web locales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Medios de comunicación del pais&lt;/li&gt;
&lt;li&gt;Directorios de empresas locales&lt;/li&gt;
&lt;li&gt;Asociaciones profesionales regionales&lt;/li&gt;
&lt;li&gt;Blogs y publicaciónes del sector en el idioma local&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6-gateway-global-la-experiencia-del-selector-de-idioma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-gateway-global-la-experiencia-del-selector-de-idioma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Gateway global: La experiencia del selector de idioma&lt;/h2&gt;
&lt;p&gt;El “Gateway global” es como los usuarios descubren y cambian entre versiones linguisticas de su sitio. En 2026, las mejores prácticas han evolucionado significativamente.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que funciona&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Selector de idioma visible&lt;/strong&gt; en el encabezado o pie de página, usando nombres de idiomas nativos (Español, English, Portugues) en lugar de banderas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deteccion del idioma del navegador&lt;/strong&gt; para sugerir (no forzar) la versión correcta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistencia de eleccion&lt;/strong&gt; mediante cookies para recordar la preferencia del usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URLs semanticas&lt;/strong&gt; que indican claramente el idioma (/es/, /en/, /pt/).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;lo-que-no-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-no-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que NO funciona&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Redireccion automática por IP&lt;/strong&gt;: Google puede no ver todas las versiones, los VPN crean problemas, y los usuarios se sienten frustrados cuando no pueden acceder al idioma que prefieren.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Banderas como iconos de idioma&lt;/strong&gt;: Las banderas representan paises, no idiomas. El español se habla en 20+ paises, el portugues se habla en Brasil y Portugal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selector oculto&lt;/strong&gt;: Si el usuario no puede encontrar fácilmente como cambiar de idioma, la experiencia multilingue falla.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;7-medicion-y-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-medicion-y-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Medicion y optimización&lt;/h2&gt;
&lt;h3 id=&quot;metricas-clave-por-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-clave-por-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas clave por mercado&lt;/h3&gt;
&lt;p&gt;Configure dashboards separados para cada versión linguistica que rastreen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tráfico organico&lt;/strong&gt; por idioma y pais&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Posiciones de palabras clave&lt;/strong&gt; en cada mercado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasas de conversión&lt;/strong&gt; por region&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de rebote&lt;/strong&gt; (puede indicar problemas de calidad de traduccion)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiempo en página&lt;/strong&gt; (el engagement bajo puede senalar contenido no relevante localmente)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velocidad de carga&lt;/strong&gt; por region (CDN y hosting regional)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;optimización-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización continua&lt;/h3&gt;
&lt;p&gt;La estrategia global de contenidos no es un proyecto con fecha de finalizacion. Es un proceso continuo que requiere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Análisis mensual de rendimiento por mercado&lt;/li&gt;
&lt;li&gt;Actualización de contenido basada en datos locales&lt;/li&gt;
&lt;li&gt;Expansion gradual a nuevos mercados basandose en oportunidad y recursos&lt;/li&gt;
&lt;li&gt;Iteracion de flujos de trabajo de traduccion para mejorar calidad y velocidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Una estrategia global de contenidos exitosa en 2026 va mucho más alla de la traduccion. Requiere arquitectura técnica solida, implementación SEO internacional correcta, flujos de trabajo de localización eficientes y medicion continua por mercado. WordPress, con su flexibilidad, ecosistema multilingue maduro y capacidades API, sigue siendo la plataforma ideal para empresas con ambiciones globales.&lt;/p&gt;
&lt;p&gt;Si esta listo para expandir su presencia digital globalmente, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede disenar e implementar una estrategia completa que abarque &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO internacional&lt;/a&gt; y &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de rendimiento&lt;/a&gt; para cada mercado objetivo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Soluciónes multilingues a medida&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; - Optimización internacional&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Optimización de velocidad&lt;/a&gt; - Rendimiento global&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Soporte continuo multilingue&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>strategy</category><category domain="tag">global-seo</category><category domain="tag">localization</category><category domain="tag">multilingual</category><category domain="tag">content-strategy</category><category domain="tag">hreflang</category><enclosure url="https://wppoland.com/images/og/tech-community-engagement.jpg" type="image/jpeg"/></item><item><title>Pruebas unitarias para WordPress: Guia del desarrollador para 2026</title><link>https://wppoland.com/es/unit-testing-wordpress-developers-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/unit-testing-wordpress-developers-guide-2026/</guid><description>Deja de cruzar los dedos. Aprende a implementar pruebas profesionales con PHPUnit y Jest en tu flujo de trabajo WordPress para 2026.</description><pubDate>Mon, 03 Feb 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En 2026, el “profesionalismo” en el desarrollo WordPress se define por una sola cosa: &lt;strong&gt;Fiabilidad&lt;/strong&gt;. Los clientes de alta gama ya no aceptan un enfoque de “codificacion cowboy” donde empujas a producción y esperas lo mejor. La era de desplegar sin pruebas ha terminado definitivamente, y los desarrolladores que no adopten pruebas automatizadas se encontraran cada vez más marginados en el mercado profesional.&lt;/p&gt;
&lt;p&gt;Bienvenido a la guía 2026 de Pruebas Unitarias para WordPress. Aqui aprenderemos todo lo necesario para implementar un sistema de pruebas robusto que garantice la calidad de tu código en cada iteracion.&lt;/p&gt;
&lt;h2 id=&quot;1-la-filosofia-central-probar-en-aislamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-filosofia-central-probar-en-aislamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La filosofia central: Probar en aislamiento&lt;/h2&gt;
&lt;p&gt;Una prueba unitaria debe probar la “unidad” más pequeña posible de código, generalmente una sola función, sin depender de dependencias externas como la base de datos o APIs de terceros. Este principio de aislamiento es fundamental para crear pruebas rápidas, confiables y mantenibles.&lt;/p&gt;
&lt;h3 id=&quot;el-problema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema&lt;/h3&gt;
&lt;p&gt;Muchas funciones de WordPress (como &lt;code&gt;get_post()&lt;/code&gt;) estan vinculadas a la base de datos. Esto crea una dependencia que hace que las pruebas sean lentas, fragiles y dificiles de configurar. Si tu prueba necesita una base de datos real, un fallo en la conexión o un cambio en los datos puede causar falsos negativos que erosionan la confianza en el sistema de pruebas.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución 2026&lt;/h3&gt;
&lt;p&gt;Usamos &lt;strong&gt;Mocking&lt;/strong&gt;. Herramientas como &lt;strong&gt;WP-Mock&lt;/strong&gt; nos permiten decir: “Simula que &lt;code&gt;get_post(123)&lt;/code&gt; devuelve este objeto específico” sin necesitar realmente una base de datos. Esto desacopla nuestras pruebas del estado de la base de datos y nos permite ejecutar miles de pruebas en segundos.&lt;/p&gt;
&lt;p&gt;El mocking no es simplemente una técnica de prueba; es un principio de diseño. Cuando escribes código que es fácil de simular, estas escribiendo código modular, desacoplado y mantenible. Las pruebas unitarias te fuerzan a escribir mejor código.&lt;/p&gt;
&lt;h2 id=&quot;2-configurando-phpunit-11&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-configurando-phpunit-11&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Configurando PHPUnit 11&lt;/h2&gt;
&lt;p&gt;Nos apoyamos intensamente en Composer para nuestro stack de pruebas. La configuración correcta del entorno de pruebas es crítica para el éxito a largo plazo de tu estrategia de testing.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-del-stack&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-del-stack&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas del stack&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PHPUnit&lt;/strong&gt;: El framework de pruebas principal que proporciona aserciones, runners y reportes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP-Mock&lt;/strong&gt;: Para simular funciones del nucleo de WordPress sin cargar WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brain Monkey&lt;/strong&gt;: Para simulacion avanzada de funciones y hooks de WordPress.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Un caso de prueba simple en 2026&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; test_calculate_price_with_tax&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    WP_Mock&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;userFunction&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;get_option&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;args&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tax_rate&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;return&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 20&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; MyPlugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;calculate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    $this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;assertEquals&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $result);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estructura-de-directorios-recomendada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-de-directorios-recomendada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura de directorios recomendada&lt;/h3&gt;
&lt;p&gt;Organiza tus pruebas en directorios que reflejen la estructura de tu plugin o tema. Los archivos de prueba deben estar en un directorio &lt;code&gt;/tests/&lt;/code&gt; con subdirectorios para pruebas unitarias (&lt;code&gt;/tests/unit/&lt;/code&gt;), pruebas de integración (&lt;code&gt;/tests/integration/&lt;/code&gt;) y fixtures de datos (&lt;code&gt;/tests/fixtures/&lt;/code&gt;). Esta organización facilita encontrar y mantener las pruebas a medida que el proyecto crece.&lt;/p&gt;
&lt;h3 id=&quot;configuración-de-phpunitxml&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-phpunitxml&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de phpunit.xml&lt;/h3&gt;
&lt;p&gt;El archivo &lt;code&gt;phpunit.xml&lt;/code&gt; define como se ejecutan tus pruebas: que directorios escanear, que archivos de bootstrap cargar, que suites de pruebas definir y como generar reportes de cobertura. Una configuración bien pensada ahorra tiempo y evita problemas de configuración en el futuro.&lt;/p&gt;
&lt;h2 id=&quot;3-probando-bloques-de-gutenberg-con-jest&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-probando-bloques-de-gutenberg-con-jest&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Probando bloques de Gutenberg con Jest&lt;/h2&gt;
&lt;p&gt;Dado que el WordPress moderno esta construido sobre React, nuestra estrategia de pruebas debe incluir JavaScript. Los bloques de Gutenberg representan una parte cada vez mayor de la funcionalidad de WordPress, y probar su comportamiento es esencial.&lt;/p&gt;
&lt;h3 id=&quot;las-herramientas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-herramientas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las herramientas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jest&lt;/strong&gt;: El runner rápido y confiable que ejecuta pruebas de JavaScript con simulacion integrada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@wordpress/scripts&lt;/code&gt;&lt;/strong&gt;: Proporciona un entorno de pruebas estandarizado para bloques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React Testing Library&lt;/strong&gt;: Para probar el comportamiento de los componentes desde la perspectiva del usuario.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;que-probar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-probar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que probar&lt;/h3&gt;
&lt;p&gt;Asegurate de que los atributos de los bloques se guarden correctamente, que las transformaciones (como convertir un parrafo en un encabezado) funciónen como se espera, que la validación de datos de entrada funcióne, que el renderizado del servidor produzca el HTML esperado y que los controles del inspector funciónen correctamente.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-snapshot&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-snapshot&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de snapshot&lt;/h3&gt;
&lt;p&gt;Los snapshots de Jest capturan el HTML generado por un bloque y lo comparan con una referencia almacenada. Si el HTML cambia inesperadamente, la prueba falla y muestra exactamente que cambio. Esta técnica es particularmente valiosa para detectar cambios no intencionales en el marcado de los bloques.&lt;/p&gt;
&lt;h2 id=&quot;4-integración-vs-pruebas-unitarias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-integración-vs-pruebas-unitarias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Integración vs. Pruebas unitarias&lt;/h2&gt;
&lt;p&gt;No confundas las dos. Cada tipo de prueba tiene un propósito específico y una relación costo-beneficio diferente. Entender esta distincion es crítico para disenar una estrategia de pruebas efectiva.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-unitarias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-unitarias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas unitarias&lt;/h3&gt;
&lt;p&gt;Rapidas, sin base de datos, prueban lógica pura. Se ejecutan en milisegundos y deben cubrir la mayor parte de tu código. Son ideales para funciones de calculo, transformaciones de datos, validación de entradas y lógica de negocio que no depende del estado de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-integración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-integración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de integración&lt;/h3&gt;
&lt;p&gt;Mas lentas, usan una base de datos real (temporal), prueban como el código interactua con el nucleo de WordPress. Son necesarias para verificar que tus consultas WP_Query devuelven los resultados esperados, que tus hooks se ejecutan en el orden correcto y que tus custom post types funcionan como se espera.&lt;/p&gt;
&lt;h3 id=&quot;recomendacion-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recomendacion-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recomendacion 2026&lt;/h3&gt;
&lt;p&gt;Apunta a un 80% de Pruebas Unitarias y un 20% de Pruebas de Integración. Esto te da el mejor equilibrio entre velocidad y confianza. Las pruebas unitarias te dan retroalimentacion rápida durante el desarrollo, mientras que las pruebas de integración verifican que todo funciona correctamente en el contexto completo de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;5-automatizacion-el-pipeline-cicd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-automatizacion-el-pipeline-cicd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Automatizacion: El pipeline CI/CD&lt;/h2&gt;
&lt;p&gt;Las pruebas son inutiles si olvidas ejecutarlas. En 2026, automatizamos todo via &lt;strong&gt;GitHub Actions&lt;/strong&gt; para asegurar que las pruebas se ejecuten consistentemente en cada cambio de código.&lt;/p&gt;
&lt;h3 id=&quot;el-proceso-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-proceso-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El proceso automatizado&lt;/h3&gt;
&lt;p&gt;Cada vez que haces push de código, un contenedor Docker se levanta automáticamente. Ejecuta todas tus pruebas PHP y JS con las versiones correctas de PHP, Node.js y WordPress. Si una prueba falla, el código &lt;strong&gt;no puede&lt;/strong&gt; fusionarse. Esta es la politica de “Zero Regresion” de los equipos empresariales modernos.&lt;/p&gt;
&lt;h3 id=&quot;matrices-de-prueba&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#matrices-de-prueba&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Matrices de prueba&lt;/h3&gt;
&lt;p&gt;Ejecuta tus pruebas contra multiples combinaciones de versiones de PHP y WordPress. Un workflow tipico de 2026 prueba contra PHP 8.2, 8.3 y 8.4, y contra las dos últimás versiones mayores de WordPress. Esto asegura compatibilidad amplia sin esfuerzo manual.&lt;/p&gt;
&lt;h3 id=&quot;reportes-de-cobertura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reportes-de-cobertura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reportes de cobertura&lt;/h3&gt;
&lt;p&gt;Genera reportes de cobertura de código automáticamente en cada ejecucion del pipeline. Establece umbrales minimos de cobertura (por ejemplo, 80%) y haz que el pipeline falle si la cobertura cae por debajo. Esto previene la deuda técnica gradual donde las nuevas funcionalidades se agregan sin pruebas.&lt;/p&gt;
&lt;h2 id=&quot;6-pruebas-de-rendimiento-automatizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-pruebas-de-rendimiento-automatizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Pruebas de rendimiento automatizadas&lt;/h2&gt;
&lt;p&gt;Mas alla de las pruebas funcionales, los pipelines modernos incluyen pruebas de rendimiento que detectan regresiones de velocidad antes de que lleguen a producción.&lt;/p&gt;
&lt;h3 id=&quot;lighthouse-ci&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lighthouse-ci&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lighthouse CI&lt;/h3&gt;
&lt;p&gt;Integra Lighthouse CI en tu pipeline para ejecutar auditorias de rendimiento automáticas. Establece presupuestos de rendimiento para LCP, INP y CLS, y haz que el pipeline falle si los nuevos cambios causan regresiones.&lt;/p&gt;
&lt;h3 id=&quot;pruebas-de-carga&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-carga&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de carga&lt;/h3&gt;
&lt;p&gt;Para sitios de alto tráfico, incluye pruebas de carga básicas que verifiquen que los cambios no introducen consultas de base de datos lentas o fugas de memoria que solo se manifiestan bajo carga.&lt;/p&gt;
&lt;h2 id=&quot;comparativa-pruebas-manuales-vs-automatizadas-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparativa-pruebas-manuales-vs-automatizadas-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparativa: Pruebas manuales vs. automatizadas 2026&lt;/h2&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Pruebas Manuales&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Pruebas Automatizadas (Unit/Jest)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Velocidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Lenta (Minutos)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Instantanea (Milisegundos)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cobertura&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Parcial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Verificación lógica 100%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto (Horas humanas)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo (CPU de servidor)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Predecibilidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pro-tip-pruebas-de-snapshot&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pro-tip-pruebas-de-snapshot&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PRO-Tip: Pruebas de snapshot&lt;/h2&gt;
&lt;p&gt;Para bloques de Gutenberg, usa &lt;strong&gt;Pruebas de Snapshot&lt;/strong&gt;. Jest toma una “foto” de la salida HTML del bloque. Si cambias inadvertidamente el marcado en una futura actualización, la prueba fallara y te mostrara exactamente que cambio. Es una red de seguridad extremadamente efectiva para mantener la integridad visual de tus bloques.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Las pruebas unitarias ya no son una habilidad “extra”; son el piso minimo para cualquier desarrollador que se llame senior. Al construir una red de seguridad de pruebas, te permites avanzar más rápido, refactorizar con confianza y dormir mejor por la noche.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; para mantener tu sitio estable y actualizado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deja de adivinar si tu código funciona. Demuestralo con pruebas.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category domain="tag">testing</category><category domain="tag">phpunit</category><category domain="tag">jest</category><category domain="tag">ci-cd</category><category domain="tag">code-quality</category><enclosure url="https://wppoland.com/images/og/software-engineering-workshop-group.jpg" type="image/jpeg"/></item><item><title>Una guía práctica de rendimiento WooCommerce (2026)</title><link>https://wppoland.com/es/the-definitive-guide-to-woocommerce-performance-2026-edition/</link><guid isPermaLink="true">https://wppoland.com/es/the-definitive-guide-to-woocommerce-performance-2026-edition/</guid><description>WooCommerce por defecto se atasca bajo carga real. Notas de campo sobre HPOS, Redis frente a transients, cart fragments, autoload, Action Scheduler y particularidades del mercado .es.</description><pubDate>Thu, 30 Jan 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;WooCommerce por defecto se atasca antes de que el catálogo empiece a ser interesante. Una instalación limpia con 200 SKUs vuela en staging, y la misma plantilla con 30k productos y 50k pedidos se mueve en TTFB de 1,5 a 3 segundos, los cart fragments serializan en el archivo de tienda y la fila autoload de wp_options cruza silenciosamente los 100k registros.&lt;/p&gt;
&lt;p&gt;La plataforma no es el problema. WooCommerce mueve tiendas españolas con facturaciones de siete cifras anuales. Lo que mata el rendimiento es la configuración por defecto y la acumulación de plugins durante años.&lt;/p&gt;
&lt;p&gt;Esta es una guía de campo para endurecer WooCommerce contra carga real, con apuntes específicos del mercado .es: integración con Bizum y Redsys, plugins de SEUR/MRW, hosting tipo Webempresa o Raiola, y el patrón de tráfico de campañas de Black Friday.&lt;/p&gt;
&lt;h2 id=&quot;el-problema-del-almacenamiento-de-pedidos-y-qué-cambia-hpos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-del-almacenamiento-de-pedidos-y-qué-cambia-hpos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema del almacenamiento de pedidos y qué cambia HPOS&lt;/h2&gt;
&lt;p&gt;Durante una década WooCommerce guardaba pedidos como posts &lt;code&gt;shop_order&lt;/code&gt; en &lt;code&gt;wp_posts&lt;/code&gt;, con cada línea, dirección y campo de metadatos explotado en filas dentro de &lt;code&gt;wp_postmeta&lt;/code&gt;. Una consulta tan simple como “pedidos de mayo” obligaba a escanear una tabla mezclada con revisiones de blog y borradores, y a hacer JOIN tres o cuatro veces contra postmeta para reconstruir cada pedido.&lt;/p&gt;
&lt;p&gt;High Performance Order Storage traslada los pedidos a &lt;code&gt;wc_orders&lt;/code&gt;, &lt;code&gt;wc_order_addresses&lt;/code&gt;, &lt;code&gt;wc_order_operational_data&lt;/code&gt; y &lt;code&gt;wc_orders_meta&lt;/code&gt;. Las consultas de listado golpean columnas indexadas directamente en lugar de reconstruir cada fila desde postmeta.&lt;/p&gt;
&lt;p&gt;Lo que HPOS no arregla solo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugins españoles que escriben directamente en claves postmeta como &lt;code&gt;_factura_serie&lt;/code&gt; o &lt;code&gt;_albaran_seur&lt;/code&gt; se desincronizarán en silencio cuando desactives el modo compatibilidad&lt;/li&gt;
&lt;li&gt;Plugins de facturación tipo WooCommerce PDF Invoices o conectores con Sage que leen pedidos con &lt;code&gt;get_post_meta($order_id, ...)&lt;/code&gt; en vez de &lt;code&gt;$order-&gt;get_meta()&lt;/code&gt; devolverán vacío&lt;/li&gt;
&lt;li&gt;Conectores ERP con Holded o A3 basados en &lt;code&gt;WP_Query&lt;/code&gt; contra &lt;code&gt;shop_order&lt;/code&gt; necesitan una reescritura&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flujo de trabajo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;WooCommerce -&gt; Ajustes -&gt; Avanzado -&gt; Funciones, activa High Performance Order Storage con modo compatibilidad&lt;/li&gt;
&lt;li&gt;Lanza la sincronización fuera de horas punta. En una tienda con 200k pedidos puede tardar varias horas&lt;/li&gt;
&lt;li&gt;Verifica con &lt;code&gt;wp wc cot verify_cot_data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mantén la compatibilidad activa durante una semana mientras pruebas todos los plugins que tocan pedidos&lt;/li&gt;
&lt;li&gt;Desactiva la compatibilidad solo cuando hayas confirmado que cada plugin lee desde HPOS&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cot&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify_cot_data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cot&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --batch-size=500&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;cart-fragments-y-el-peaje-de-admin-ajax&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cart-fragments-y-el-peaje-de-admin-ajax&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cart fragments y el peaje de admin-ajax&lt;/h2&gt;
&lt;p&gt;Pasa cualquier tienda WooCommerce por GTmetrix o WebPageTest y verás &lt;code&gt;?wc-ajax=get_refreshed_fragments&lt;/code&gt; apareciendo en cada página, normalmente comiéndose entre 800 y 1500 ms. Es WooCommerce preguntando “ha cambiado el icono del carrito en la cabecera?” en la home, en el blog, en categorías, en la página de contacto. Aunque el carrito esté vacío.&lt;/p&gt;
&lt;p&gt;Caso real: una tienda de moda con checkout sobre Stripe e integración Bizum llegó al Black Friday con un pico de tráfico pagado en torno a 200 sesiones simultáneas. El checkout en sí aguantaba bien, pero los cart fragments serializaban a través de &lt;code&gt;admin-ajax.php&lt;/code&gt; justo en el archivo de tienda, donde aterrizaba la mayor parte del tráfico de Meta Ads. Los workers de PHP-FPM en el plan WC Pro de Webempresa hicieron cola, el TTFB del archivo se fue a 8 segundos y la conversión cayó durante una hora y media hasta que el equipo limitó los fragments a páginas comerciales con un dequeue duro.&lt;/p&gt;
&lt;p&gt;La regla de alcance más simple:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_cart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_dequeue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wc-cart-fragments&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Plugins como Perfmatters o Asset CleanUp exponen esto como un toggle de UI. Cualquier camino vale; el objetivo es el mismo. Los cart fragments solo deben dispararse donde un icono de carrito necesite actualizarse en vivo.&lt;/p&gt;
&lt;p&gt;Si necesitas un contador en cada página, guárdalo en &lt;code&gt;localStorage&lt;/code&gt; y actualiza desde JavaScript en los eventos de añadir al carrito en lugar de consultar al servidor.&lt;/p&gt;
&lt;h3 id=&quot;bizum-y-la-latencia-de-pasarela&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bizum-y-la-latencia-de-pasarela&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bizum y la latencia de pasarela&lt;/h3&gt;
&lt;p&gt;Bizum integrado vía Redsys añade su propia latencia en el flujo de checkout. La negociación 3DS2 contra el ACS del banco emisor suele estar entre 800 y 1500 ms, fuera del control del servidor. Esto importa porque cualquier cart fragment ejecutándose en paralelo durante el checkout multiplica la percepción de lentitud justo en el momento más crítico. Limita los fragments a la página de carrito y excluye &lt;code&gt;/finalizar-compra/&lt;/code&gt; por completo del polling.&lt;/p&gt;
&lt;h2 id=&quot;object-cache-frente-a-transients-en-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#object-cache-frente-a-transients-en-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Object cache frente a transients en base de datos&lt;/h2&gt;
&lt;p&gt;WooCommerce usa transients de forma intensiva para rangos de precios de variaciones, búsquedas de términos de atributos y cálculos de envío. Sin un object cache, los transients viven en &lt;code&gt;wp_options&lt;/code&gt; con &lt;code&gt;autoload = &apos;yes&apos;&lt;/code&gt;, lo que significa que cada carga de página deserializa todos juntos en memoria.&lt;/p&gt;
&lt;p&gt;Dos modos de fallo dignos de mención:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una librería online con 12k productos variables tenía transients &lt;code&gt;wc_var_prices_*&lt;/code&gt; acumulándose en &lt;code&gt;wp_options&lt;/code&gt; durante dos años. La fila autoload pasó de los 80 MB. Cada carga sin cache hacía un SELECT sobre una &lt;code&gt;wp_options&lt;/code&gt; con 130k filas solo para arrancar WordPress. El TTFB se quedaba en 2,4 segundos antes de ejecutar lógica de negocio&lt;/li&gt;
&lt;li&gt;Una tienda B2B sobre el plan WordPress Optimizado de Raiola corría con 30+ plugins y un TTFB base de 1,8 s. Tras identificar cuatro plugins (entre ellos un conector con Holded mal configurado) que escribían opciones autoloaded en cada guardado de producto y desactivarlos, el TTFB bajó a unos 600 ms sin tocar nada más&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Elige un backend de cache y comprométete. O Redis o Memcached como object cache real, o quédate con transients en base de datos. Mezclar ambos genera bugs de invalidación difíciles de diagnosticar.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Auditar tamaño autoload en wp_options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;SELECT SUM(LENGTH(option_value)) AS bytes, COUNT(*) AS rows FROM wp_options WHERE autoload = &apos;yes&apos;;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Localizar a los peores ofensores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;SELECT option_name, LENGTH(option_value) AS bytes FROM wp_options WHERE autoload = &apos;yes&apos; ORDER BY bytes DESC LIMIT 20;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con Redis configurado a nivel de host, ya sea en el panel WC Pro de Webempresa, en OVH Hispano con Redis gestionado o en una VPS de Raiola con Redis instalado a mano, y &lt;code&gt;object-cache.php&lt;/code&gt; colocado, los transients se mueven a RAM, baja la presión sobre autoload y el render de una página de producto en cache fría suele bajar del rango 500 a 800 ms a menos de 100 ms.&lt;/p&gt;
&lt;h2 id=&quot;excepciones-de-cache-y-qué-nunca-debe-cachearse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#excepciones-de-cache-y-qué-nunca-debe-cachearse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Excepciones de cache y qué nunca debe cachearse&lt;/h2&gt;
&lt;p&gt;El cache estático ayuda a archivos, fichas de producto y entradas de blog. Rompe activamente cualquier cosa que dependa de la sesión del usuario.&lt;/p&gt;
&lt;p&gt;Exclusiones obligatorias para cualquier cache de página o Page Rule de Cloudflare:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/carrito/&lt;/code&gt; o &lt;code&gt;/cart/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/finalizar-compra/&lt;/code&gt; o &lt;code&gt;/checkout/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/mi-cuenta/&lt;/code&gt; o &lt;code&gt;/my-account/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cualquier URL con &lt;code&gt;?wc-ajax=&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cualquier URL con la cookie &lt;code&gt;woocommerce_items_in_cart&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Endpoints REST bajo &lt;code&gt;/wp-json/wc/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cloudflare APO puede cachear HTML para usuarios no logueados y respeta las cookies de sesión de WooCommerce si se configura bien, pero verifica con &lt;code&gt;curl -I&lt;/code&gt; sobre carrito y checkout que recibes &lt;code&gt;cf-cache-status: BYPASS&lt;/code&gt;. Una cache mal configurada que sirva el carrito de otra clienta no es una victoria de rendimiento, es una incidencia ante la AEPD.&lt;/p&gt;
&lt;h2 id=&quot;plugins-de-envío-y-rendimiento-del-checkout&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-de-envío-y-rendimiento-del-checkout&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins de envío y rendimiento del checkout&lt;/h2&gt;
&lt;p&gt;El ecosistema de envío en España añade peso al checkout de formas que las guías genéricas pasan por alto.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugins oficiales de SEUR, MRW y GLS suelen consultar la API del transportista en cada cambio de dirección durante el checkout. Activa el cache local de tarifas siempre que el plugin lo permita&lt;/li&gt;
&lt;li&gt;Plugins de impresión de etiquetas que se enganchan a la transición de estado del pedido pueden disparar peticiones síncronas desde &lt;code&gt;woocommerce_order_status_changed&lt;/code&gt;. Mueve esos hooks a Action Scheduler para que no bloqueen el cierre del pedido&lt;/li&gt;
&lt;li&gt;Conectores con marketplaces tipo PrestaShop importado o Tiendanube en migración suelen dejar metadatos huérfanos en postmeta tras desinstalar; revísalo con &lt;code&gt;wp db query&lt;/code&gt; antes de mover a HPOS&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;consultas-de-productos-variables-y-woocommerce_variable_children_args&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consultas-de-productos-variables-y-woocommerce_variable_children_args&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consultas de productos variables y woocommerce_variable_children_args&lt;/h2&gt;
&lt;p&gt;Productos variables con 50+ variaciones cada uno son un multiplicador de JOIN. El archivo de una tienda de moda con 200 productos variables y 30 variaciones cada uno está haciendo JOIN contra &lt;code&gt;wp_posts&lt;/code&gt; por 6000 productos hijos en cada carga.&lt;/p&gt;
&lt;p&gt;Dos arreglos prácticos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limita las variaciones cargadas en el desplegable a las que están en stock y son visibles&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;woocommerce_variable_children_args&lt;/code&gt; para excluir variaciones privadas y sin stock de la carga inicial en archivos&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce_variable_children_args&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $args ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_shop&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_product_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $args[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $args[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;meta_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_stock_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;instock&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $args;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;inflado-de-tablas-en-action-scheduler&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inflado-de-tablas-en-action-scheduler&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inflado de tablas en Action Scheduler&lt;/h2&gt;
&lt;p&gt;Cada extensión de WooCommerce que hace trabajo en segundo plano usa Action Scheduler. Suscripciones, emails de seguimiento, recuperación de carrito abandonado, sincronización con ERP, integraciones con Mailrelay para newsletters transaccionales, todo acaba en &lt;code&gt;wp_actionscheduler_actions&lt;/code&gt; y &lt;code&gt;wp_actionscheduler_logs&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En un comercio con suscripciones activas y recuperación de carrito sobre Mailrelay o Mailchimp, estas tablas acumulan millones de acciones completadas y fallidas en menos de un año. Y se consultan en cada carga del admin para pintar el contador de la cola.&lt;/p&gt;
&lt;p&gt;Script de mantenimiento:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Disparar la purga de logs de Action Scheduler&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; action-scheduler&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --hooks=action_scheduler/purge_logs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Inspeccionar el tamaño de la cola&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;SELECT status, COUNT(*) FROM wp_actionscheduler_actions GROUP BY status;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Confirmar que existen índices en status y scheduled_date_gmt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;SHOW INDEX FROM wp_actionscheduler_actions;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;WooCommerce programa una acción &lt;code&gt;as_purge_logs&lt;/code&gt; por defecto, pero en tiendas que desactivan wp-cron y usan cron de sistema externo puede dejar de ejecutarse sin que nadie se entere.&lt;/p&gt;
&lt;h2 id=&quot;entrega-de-imágenes-para-galerías-de-producto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entrega-de-imágenes-para-galerías-de-producto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entrega de imágenes para galerías de producto&lt;/h2&gt;
&lt;p&gt;Las imágenes de producto suelen ser el payload más pesado. Tres reglas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AVIF para hero y galería, con WebP de fallback para versiones antiguas de Safari que sigan apareciendo en tu mix de tráfico&lt;/li&gt;
&lt;li&gt;Deja de permitir que clientes suban exportaciones raw de 4000 px. Limita el pipeline de subida a 2000 px en el lado largo&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; nativo basta; elimina cualquier lazy loader JavaScript antiguo que entre en conflicto&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Redimensiona antes de subir en lugar de confiar en que WordPress genere miniaturas al vuelo, lo que escribe en &lt;code&gt;wp_postmeta&lt;/code&gt; e infla la base de datos.&lt;/p&gt;
&lt;h2 id=&quot;checklist-de-higiene-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-de-higiene-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist de higiene de base de datos&lt;/h2&gt;
&lt;p&gt;Lanza esto mensualmente, con más frecuencia en tiendas con alto volumen de carrito abandonado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Eliminar sesiones expiradas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;DELETE FROM wp_woocommerce_sessions WHERE session_expiry &amp;#x3C; UNIX_TIMESTAMP();&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Limpiar transients de WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; tool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; clear_transients&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Optimizar tablas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; optimize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Comprobar profundidad de la cola Action Scheduler&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; action-scheduler&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Programa por cron de sistema en lugar de &lt;code&gt;wp-cron.php&lt;/code&gt;, que solo se dispara con tráfico.&lt;/p&gt;
&lt;h2 id=&quot;qué-medir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-medir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué medir&lt;/h2&gt;
&lt;p&gt;Optimizar a ciegas lleva a optimizar lo que no toca. Elige tres señales y vigílalas semanalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TTFB en cache fría sobre el archivo de tienda y una ficha de producto&lt;/li&gt;
&lt;li&gt;Tiempo hasta el primer byte en &lt;code&gt;/carrito/&lt;/code&gt; y &lt;code&gt;/finalizar-compra/&lt;/code&gt; con uno y cuatro artículos en el carrito&lt;/li&gt;
&lt;li&gt;Recuento de filas y bytes totales en wp_options autoload&lt;/li&gt;
&lt;li&gt;Profundidad de cola Action Scheduler y acción pendiente más antigua&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Query Monitor en staging te dice qué consultas dominan. New Relic o Datadog APM en producción muestran la distribución real. PageSpeed Insights es una prueba de humo, no un diagnóstico.&lt;/p&gt;
&lt;h2 id=&quot;última-actualización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#última-actualización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Última actualización&lt;/h2&gt;
&lt;p&gt;2026-04-01. Notas de campo de auditorías reales sobre WooCommerce en el último año, incluyendo tiendas alojadas en Webempresa, Raiola y OVH Hispano. Si tu tienda no encaja con estos patrones, los patrones no son el problema. Empieza por leer el slow query log.&lt;/p&gt;
&lt;p&gt;Necesitas un &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;desarrollador WooCommerce&lt;/a&gt; o &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt;? &lt;a href=&quot;/es/contacto/&quot;&gt;Hablemos&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>woocommerce</category><category>performance</category><category domain="tag">hpos</category><category domain="tag">redis</category><category domain="tag">database</category><category domain="tag">scaling</category><enclosure url="https://wppoland.com/images/og/szybkie-strony-woocommerce.jpg" type="image/jpeg"/></item><item><title>Autoridad temática para sitios WordPress: Construyendo un foso de contenido</title><link>https://wppoland.com/es/topical-authority-wordpress-content-moat-2026/</link><guid isPermaLink="true">https://wppoland.com/es/topical-authority-wordpress-content-moat-2026/</guid><description>Como compites con el contenido generado por IA? Construyendo un Foso de Contenido. Domina la Autoridad Tematica para tu sitio WordPress en 2026.</description><pubDate>Tue, 28 Jan 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En una era donde la IA puede generar 10.000 artículos de blog en una tarde, la cantidad tiene valor cero. En 2026, la única forma de sobrevivir y prosperar es construir un &lt;strong&gt;Foso de Contenido&lt;/strong&gt; alrededor de tu nicho. Esta no es simplemente una estrategia de marketing; es una necesidad existencial para cualquier sitio WordPress que quiera mantener su relevancia en un ecosistema digital cada vez más saturado de contenido generado automáticamente.&lt;/p&gt;
&lt;p&gt;Este es el poder de la &lt;strong&gt;Autoridad Tematica&lt;/strong&gt;, y en esta guía exhaustiva exploraremos cada aspecto de como construir, mantener y defender tu posición como autoridad absoluta en tu nicho.&lt;/p&gt;
&lt;h2 id=&quot;1-que-es-un-foso-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-que-es-un-foso-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Que es un foso de contenido?&lt;/h2&gt;
&lt;p&gt;Un foso es una defensa. En terminos de SEO, es contenido que resulta demasiado costoso (en terminos de tiempo, experiencia o datos) para que otros lo copien. El concepto proviene de la estrategia empresarial de Warren Buffett, quien utiliza el termino “moat” para describir las ventajas competitivas sostenibles de una empresa.&lt;/p&gt;
&lt;h3 id=&quot;datos-propietarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#datos-propietarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Datos propietarios&lt;/h3&gt;
&lt;p&gt;Las encuestas, estudios de caso internos o resultados experimentales constituyen el nucleo más valioso de tu foso de contenido. Cuando publicas datos que nadie más tiene, creas una dependencia informativa. Otros sitios necesitan citarte como fuente, lo que refuerza naturalmente tu autoridad temática ante los motores de búsqueda y los modelos de lenguaje.&lt;/p&gt;
&lt;p&gt;Por ejemplo, si gestionas una agencia WordPress, puedes publicar datos anonimizados sobre tiempos de carga promedio antes y despues de tus optimizaciones, tasas de conversión por tipo de diseño o estadísticas de seguridad de los sitios que administras. Estos datos son imposibles de fabricar o replicar para la IA.&lt;/p&gt;
&lt;h3 id=&quot;experiencia-profunda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#experiencia-profunda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Experiencia profunda&lt;/h3&gt;
&lt;p&gt;El contenido que solo un profesional veterano en el campo podria escribir es inherentemente dificil de replicar. Las anecdotas profesionales, las lecciones aprendidas de proyectos reales y las opiniones informadas basadas en años de experiencia crean una barrera natural contra la competencia generica y el contenido de IA.&lt;/p&gt;
&lt;p&gt;Cuando escribes “En mis 15 años gestionando clusters de WordPress…” o “Durante nuestra auditoria de rendimiento del Q3…”, estas comunicando al algoritmo de 2026 que tu contenido no es simplemente un refrito de datos de entrenamiento de un LLM. Esta primera mano de experiencia es exactamente lo que Google prioriza en su marco E-E-A-T.&lt;/p&gt;
&lt;h3 id=&quot;profundidad-arquitectonica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#profundidad-arquitectonica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Profundidad arquitectonica&lt;/h3&gt;
&lt;p&gt;Una estructura WordPress que cubre cada sub-tema posible de un nicho de manera lógica e interconectada crea una red de conocimiento que los motores de búsqueda reconocen como autoridad. No basta con tener contenido excelente; la forma en que ese contenido esta organizado y vinculado entre si es igualmente importante.&lt;/p&gt;
&lt;h2 id=&quot;2-el-marco-e-e-a-t-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-marco-e-e-a-t-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El marco E-E-A-T en 2026&lt;/h2&gt;
&lt;p&gt;Los motores de búsqueda han duplicado su enfasis en &lt;strong&gt;Experiencia&lt;/strong&gt; y &lt;strong&gt;Expertise&lt;/strong&gt;. En 2026, estos factores son más determinantes que nunca para las clasificaciónes de búsqueda, especialmente en nichos YMYL (Your Money Your Life) y en temas técnicos como el desarrollo WordPress.&lt;/p&gt;
&lt;h3 id=&quot;verificación-de-autoria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-de-autoria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación de autoria&lt;/h3&gt;
&lt;p&gt;Cada autor en tu sitio WordPress debe tener una huella digital robusta. Vincula su perfil de autor a su LinkedIn, artículos academicos o certificaciones oficiales usando &lt;strong&gt;Schema de Persona&lt;/strong&gt;. Los motores de búsqueda verifican activamente la existencia y credibilidad de los autores, y los perfiles incompletos o anonimos reciben penalizaciones significativas.&lt;/p&gt;
&lt;h3 id=&quot;experiencia-de-primera-mano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#experiencia-de-primera-mano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Experiencia de primera mano&lt;/h3&gt;
&lt;p&gt;Utiliza frases que demuestren experiencia directa. Expresiones como “En mis 15 años gestionando clusters de WordPress…” o “Durante nuestra auditoria de rendimiento del Q3…” senalan al algoritmo de 2026 que el contenido no es solo una reescritura del conjunto de entrenamiento de un LLM. La autenticidad de la experiencia se ha convertido en un factor de clasificación medible.&lt;/p&gt;
&lt;h3 id=&quot;señales-de-confianza-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-confianza-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de confianza en 2026&lt;/h3&gt;
&lt;p&gt;La confianza se construye a través de multiples señales: HTTPS, politica de privacidad transparente, datos de contacto verificables, resenas de terceros y referencias cruzadas con otras autoridades en el nicho. En 2026, los motores de búsqueda evaluan la totalidad de estas señales para determinar el nivel de confianza de un sitio.&lt;/p&gt;
&lt;h2 id=&quot;3-dominando-el-modelo-hub-and-spoke&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-dominando-el-modelo-hub-and-spoke&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Dominando el modelo Hub-and-Spoke&lt;/h2&gt;
&lt;p&gt;Si quieres que Google te vea como una autoridad en “WordPress Headless”, no puedes simplemente escribir un solo artículo largo. Necesitas una arquitectura de contenido completa que demuestre profundidad y amplitud de conocimiento.&lt;/p&gt;
&lt;h3 id=&quot;el-hub-centro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-hub-centro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Hub (centro)&lt;/h3&gt;
&lt;p&gt;Una guía definitiva de 5.000 palabras sobre WordPress Headless que sirve como punto de referencia central. Este artículo debe cubrir todos los aspectos principales del tema a un nivel intermedio-avanzado, proporcionando contexto suficiente para que los lectores entiendan el tema completo.&lt;/p&gt;
&lt;h3 id=&quot;los-spokes-radios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-spokes-radios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los Spokes (radios)&lt;/h3&gt;
&lt;p&gt;Mas de 20 artículos más pequeños cubriendo subtemas específicos: “Headless vs. Monolitico”, “React para WordPress”, “Rendimiento de GraphQL API”, “Seguridad en Headless”, “WooCommerce Headless”, “Next.js con WordPress”, entre otros. Cada spoke profundiza en un aspecto específico que el hub menciona pero no puede cubrir en detalle.&lt;/p&gt;
&lt;h3 id=&quot;el-foso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-foso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El foso&lt;/h3&gt;
&lt;p&gt;Cuando vinculas todos estos artículos entre si, creas una “red de conocimiento” que es practicamente imposible de superar para un sitio generalista. Los motores de búsqueda reconocen esta estructura interconectada como evidencia de autoridad temática genuina, y los modelos de lenguaje prefieren citar fuentes que demuestran esta profundidad.&lt;/p&gt;
&lt;h3 id=&quot;implementación-técnica-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-técnica-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación técnica en WordPress&lt;/h3&gt;
&lt;p&gt;Utiliza taxonomías personalizadas, campos ACF y bloques Gutenberg dedicados para crear la estructura Hub-and-Spoke en tu sitio WordPress. Los enlaces internos deben ser bidireccionales: cada spoke enlaza al hub, y el hub enlaza a todos los spokes. Además, los spokes deben enlazar entre si cuando hay relación temática.&lt;/p&gt;
&lt;h2 id=&quot;4-defendiendo-tu-foso-mantenimiento-regular&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-defendiendo-tu-foso-mantenimiento-regular&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Defendiendo tu foso: Mantenimiento regular&lt;/h2&gt;
&lt;p&gt;La Autoridad Tematica no es una tarea de “una sola vez”. Requiere un compromiso continuo con la calidad y la actualización del contenido. La información se desactualiza rápidamente en el mundo tecnológico, y los competidores constantemente intentan superar tu posición.&lt;/p&gt;
&lt;h3 id=&quot;actualización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualización de contenido&lt;/h3&gt;
&lt;p&gt;La información decae rápido. Actualiza tus hubs cada 6 meses con los datos más recientes, nuevas capturas de pantalla, ejemplos de código actualizados y referencias a las últimás versiones de software. Google favorece el contenido “fresco” que demuestra que el autor esta activamente comprometido con el tema.&lt;/p&gt;
&lt;h3 id=&quot;análisis-de-brechas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-de-brechas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis de brechas&lt;/h3&gt;
&lt;p&gt;Usa herramientas como Ahrefs, SEMrush o AlsoAsked para encontrar que preguntas estan haciendo los usuarios que tu &lt;em&gt;no has&lt;/em&gt; respondido todavia. Cierra esas brechas inmediatamente. Cada pregunta sin responder es una oportunidad para un competidor de minar tu autoridad.&lt;/p&gt;
&lt;h3 id=&quot;monitoreo-de-competidores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-de-competidores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo de competidores&lt;/h3&gt;
&lt;p&gt;Vigila que contenido estan publicando tus competidores directos. Si publican algo que tu no cubres, responde rápidamente con contenido superior. Si intentan replicar tu foso, fortalece tus artículos existentes con datos más profundos y experiencia más detallada.&lt;/p&gt;
&lt;h2 id=&quot;5-comparativa-de-autoridad-generalista-vs-especialista-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-comparativa-de-autoridad-generalista-vs-especialista-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Comparativa de autoridad: Generalista vs. Especialista (2026)&lt;/h2&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Sitio de Noticias Generalista&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Autoridad Especializada (Foso)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Puntuacion de Confianza&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Frecuencia de Cita LLM&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Alta&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;ROI por Artículo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo (Alto Volumen)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Extremo (Alta Intencion)&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Estabilidad en Búsquedas&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Volatil&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Estable / Defensiva&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;por-que-los-especialistas-ganan-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-especialistas-ganan-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los especialistas ganan en 2026&lt;/h3&gt;
&lt;p&gt;El cambio hacia motores de respuesta basados en IA ha amplificado dramaticamente la ventaja de los especialistas sobre los generalistas. Los LLM prefieren citar fuentes que demuestran profundidad temática verificable, y los algoritmos de búsqueda de 2026 aplican filtros E-E-A-T mucho más estrictos que los de años anteriores.&lt;/p&gt;
&lt;h3 id=&quot;el-efecto-de-la-citacion-llm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-efecto-de-la-citacion-llm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El efecto de la citacion LLM&lt;/h3&gt;
&lt;p&gt;Cuando un modelo de lenguaje como GPT o Claude cita tu sitio como fuente autorizada, esto crea un ciclo virtuoso: más visibilidad lleva a más backlinks, que lleva a más autoridad, que lleva a más citaciones. Los sitios que han construido fosos de contenido solidos disfrutan de este ciclo mucho antes que los generalistas.&lt;/p&gt;
&lt;h2 id=&quot;6-estrategias-avanzadas-de-contenido-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-estrategias-avanzadas-de-contenido-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Estrategias avanzadas de contenido para 2026&lt;/h2&gt;
&lt;h3 id=&quot;contenido-basado-en-datos-originales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-basado-en-datos-originales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido basado en datos originales&lt;/h3&gt;
&lt;p&gt;Pública investigaciónes propias, encuestas de la industria y análisis de tendencias basados en tus datos internos. Este tipo de contenido es citado por otros sitios, blogs y medios de comunicación, creando backlinks naturales de alta calidad.&lt;/p&gt;
&lt;h3 id=&quot;colaboraciones-con-expertos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#colaboraciones-con-expertos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Colaboraciones con expertos&lt;/h3&gt;
&lt;p&gt;Invita a otros expertos reconocidos en tu nicho a contribuir contenido o participar en entrevistas. Esto no solo diversifica la perspectiva de tu contenido, sino que también crea señales de autoridad cruzada que los motores de búsqueda valoran altamente.&lt;/p&gt;
&lt;h3 id=&quot;formatos-multimedia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#formatos-multimedia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Formatos multimedia&lt;/h3&gt;
&lt;p&gt;Complementa tus artículos escritos con videos, podcasts, infografias y herramientas interactivas. La diversidad de formatos demuestra compromiso con el tema y atiende diferentes preferencias de aprendizaje, aumentando el tiempo de permanencia y las señales de engagement.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pro-tip-el-foso-negativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pro-tip-el-foso-negativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PRO-Tip: El “foso negativo”&lt;/h2&gt;
&lt;p&gt;Evita el contenido de “grado Z”. Cada artículo de baja calidad y relleno de IA que publicas en realidad &lt;em&gt;arrastra hacia abajo&lt;/em&gt; la autoridad de todo tu sitio. En 2026, es mejor tener 50 artículos de clase mundial que 5.000 mediocres. La calidad supera a la cantidad por un margen cada vez mayor, y los algoritmos de búsqueda penalizan activamente los sitios que diluyen su autoridad con contenido de baja calidad.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO y optimización GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Construir Autoridad Tematica es un compromiso con un nicho. Al construir un Foso de Contenido defensivo en tu sitio WordPress a través de experiencia y profundidad estructurada, haces que tu negocio sea inmune al ruido del contenido generico de IA. La inversión en contenido de calidad es la mejor protección a largo plazo para tu presencia digital.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eres una autoridad o solo otra voz? Construye tu foso hoy.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>business</category><category domain="tag">topical-authority</category><category domain="tag">content-moat</category><category domain="tag">eeat</category><category domain="tag">content-strategy</category><category domain="tag">wordpress-business</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Experimento IA: La marca falsa &quot;Xarumei&quot; y las alucinaciones de LLM</title><link>https://wppoland.com/es/ai-experiment-the-fake-brand-xarumei-and-llm-hallucinations/</link><guid isPermaLink="true">https://wppoland.com/es/ai-experiment-the-fake-brand-xarumei-and-llm-hallucinations/</guid><description>Un investigador de Ahrefs creo una marca de lujo falsa, Xarumei, para probar como los modelos de IA manejan la verificación de hechos. Los resultados son alarmantes.</description><pubDate>Sun, 26 Jan 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Un investigador de marketing de Ahrefs creo una empresa de pisapapeles de lujo completamente ficticia llamada &lt;strong&gt;Xarumei&lt;/strong&gt;, construyo su sitio web en una hora usando IA, y probo sistemáticamente ocho herramientas de IA principales.
Durante dos meses, inundo la web con tres narrativas falsas deliberadamente contradictorias, luego hizo 56 preguntas cuidadosamente elaboradas disenadas para revelar como los modelos de IA distinguen la verdad de la ficcion.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Los resultados revelan debilidades perturbadoras en como la IA maneja la información de marca, con profundas implicaciones para la Gestión de Reputacion Online (ORM).&lt;/p&gt;
&lt;h2 id=&quot;el-experimento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-experimento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El experimento&lt;/h2&gt;
&lt;p&gt;El experimento se realizo en dos fases. Inicialmente, el investigador probo el comportamiento básico de la IA haciendo preguntas sobre una marca que no deberia existir: preguntas que involucraban endorsements falsos de celebridades, productos defectuosos y ventas de Black Friday que nunca ocurrieron.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GPT-4 y GPT-5&lt;/strong&gt; tuvieron el mejor desempeno, respondiendo correctamente 53-54 de 56 preguntas y declarando “esto no existe” cuando era apropiado.
&lt;strong&gt;Perplexity&lt;/strong&gt; fallo en aproximadamente el 40% de las preguntas, confundiendo bizarramente Xarumei con smartphones Xiaomi.
&lt;strong&gt;Claude&lt;/strong&gt; se nego a alucinar completamente pero tampoco uso nunca el contenido del sitio web.
&lt;strong&gt;Gemini&lt;/strong&gt; y el AI Overview de Google a menudo se negaron a tratar a Xarumei como real porque no podian encontrarla en los resultados de búsqueda.&lt;/p&gt;
&lt;p&gt;Lo más perturbador fue que &lt;strong&gt;Microsoft Copilot&lt;/strong&gt; cayo en lo que el investigador llama la “trampa del servilismo”, inventando explicaciones elaboradas sobre artesania, simbolismo y escasez cuando se le pregunto por que todos estaban elogiando la marca en X (Twitter).&lt;/p&gt;
&lt;h2 id=&quot;fase-dos-caos-controlado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-dos-caos-controlado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase dos: Caos controlado&lt;/h2&gt;
&lt;p&gt;La segunda fase introdujo caos controlado:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;FAQ oficial:&lt;/strong&gt; Negando explicitamente rumores (“No fabricamos un ‘pisapapeles de precision’”, “Nunca fuimos adquiridos”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Narrativas contradictorias:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Un blog brillante afirmando que 23 artesanos maestros trabajaban en 2847 Meridian Blvd en Nova City, CA, respaldado por Emma Stone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reddit AMA:&lt;/strong&gt; Elegido estrategicamente porque la investigación muestra que es uno de los dominios más citados en respuestas de IA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artículo de Medium:&lt;/strong&gt; Una “investigación” que desmintio las mentiras obvias (haciendola parecer creible) pero luego introdujo nuevas fabricaciones (Fundadora: Jennifer Lawson, Ubicacion: Portland).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Medium resulto devastadoramente efectivo.&lt;/strong&gt;
Gemini, Grok, AI Overview, Perplexity y Copilot confiaron en el artículo de Medium sobre el FAQ oficial, citando con confianza a Jennifer Lawson como la fundadora y Portland como la ubicacion. La manipulación funcióno porque parecia periodismo real: al desmentir las mentiras obvias primero, gano confianza, luego inserto sus propios detalles inventados como la historia “corregida”.&lt;/p&gt;
&lt;p&gt;Cuando se les forzo a elegir entre una verdad vaga (FAQ “No publicamos números de unidades”) y ficcion específica (fuentes falsas afirmando “634 unidades en 2023”), la IA eligio la ficcion casí siempre.&lt;/p&gt;
&lt;h2 id=&quot;la-ia-discute-consigo-misma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ia-discute-consigo-misma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La IA discute consigo misma&lt;/h2&gt;
&lt;p&gt;Quizas lo más inquietante fue ver a los modelos contradecirse sin darse cuenta.
Al principio de las pruebas, Gemini declaro que no podia encontrar evidencia de la marca. Mas tarde, despues de encontrar las fuentes falsas, el mismo modelo declaro con confianza: “La empresa esta basada en Portland, Oregon, fundada por Jennifer Lawson.”&lt;/p&gt;
&lt;p&gt;Los LLM parecian olvidar cuestionar la existencia de la marca, simplemente reaccionando a cualquier contexto que pareciera más “autoritativo” en el momento. En un caso, &lt;strong&gt;Grok&lt;/strong&gt; sintetizo multiples fuentes falsas en una respuesta confiada, mezclando la ubicacion de Portland con afirmaciones desmentidas de Nova City.&lt;/p&gt;
&lt;h2 id=&quot;implicaciones-para-el-seo-y-la-presencia-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implicaciones-para-el-seo-y-la-presencia-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implicaciones para el SEO y la presencia digital&lt;/h2&gt;
&lt;p&gt;Este experimento tiene implicaciones directas para cualquier negocio que dependa de su presencia online:&lt;/p&gt;
&lt;h3 id=&quot;la-era-del-seo-para-ia-aeogeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-era-del-seo-para-ia-aeogeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La era del SEO para IA (AEO/GEO)&lt;/h3&gt;
&lt;p&gt;En 2026, no solo necesita posicionarse en los resultados de búsqueda tradicionales. También necesita asegurarse de que los modelos de IA representen su marca con precision. Esto significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenido estructurado y autoritativo&lt;/strong&gt; en su propio dominio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos específicos y verificables&lt;/strong&gt; en lugar de afirmaciones vagas de marketing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presencia activa&lt;/strong&gt; en las plataformas que la IA usa como fuentes (Reddit, Wikipedia, sitios .gov)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo continuo&lt;/strong&gt; de como los LLM responden preguntas sobre su marca&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-peligro-de-los-vacios-de-información&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-peligro-de-los-vacios-de-información&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El peligro de los vacios de información&lt;/h3&gt;
&lt;p&gt;El experimento demostro claramente que cuando hay un vacio de información, la IA lo llenara con lo que encuentre, sin importar la fiabilidad de la fuente. Para las marcas, esto significa que el silencio es peligroso.&lt;/p&gt;
&lt;p&gt;Si no pública activamente información precisa y detallada sobre su empresa, alguien más podria publicar información incorrecta que la IA tratara como verdad.&lt;/p&gt;
&lt;h2 id=&quot;recomendaciones-para-marcas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recomendaciones-para-marcas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recomendaciones para marcas&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cree un FAQ detallado:&lt;/strong&gt; Declare explicitamente que es verdad y que es falso, especialmente donde existen rumores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Llene vacios de información:&lt;/strong&gt; No deje lagunas. Si usted no lo dice, la IA lo inventara basandose en un comentario aleatorio de Reddit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoree “canales secundarios”:&lt;/strong&gt; Las publicaciónes de Reddit, artículos de Medium y respuestas de Quora ya no son opcionales: la IA las extrae directamente en las respuestas, convirtiendolas en parte de la superficie de marketing principal de su marca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evite afirmaciones genericas:&lt;/strong&gt; Sea específico. En lugar de “lider de la industria”, proporcione números. La IA prefiere números específicos (incluso si son falsos) sobre verdades vagas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;implementación-práctica-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-práctica-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación práctica con WordPress&lt;/h2&gt;
&lt;p&gt;Para proteger su marca en la era de la IA, su sitio WordPress debe incluir:&lt;/p&gt;
&lt;h3 id=&quot;schema-markup-robusto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-markup-robusto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema markup robusto&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Organization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Nombre de su empresa&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;foundingDate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2015-01-15&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;founder&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Person&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Nombre real del fundador&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;address&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;PostalAddress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;addressLocality&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Ciudad real&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;addressCountry&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Pais real&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;numberOfEmployees&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;QuantitativeValue&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;value&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;25&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;página-faq-con-schema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#página-faq-con-schema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Página FAQ con schema&lt;/h3&gt;
&lt;p&gt;Publique un FAQ estructurado con schema markup que aborde directamente posibles alucinaciones y proporcione respuestas autoritativas.&lt;/p&gt;
&lt;h3 id=&quot;monitoreo-continuo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-continuo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo continuo&lt;/h3&gt;
&lt;p&gt;Configure alertas para menciones de su marca en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reddit (r/subreddits relevantes)&lt;/li&gt;
&lt;li&gt;Medium&lt;/li&gt;
&lt;li&gt;Quora&lt;/li&gt;
&lt;li&gt;Respuestas de ChatGPT, Gemini, Perplexity&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;fuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fuentes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Patrick Stox (Ahrefs):&lt;/strong&gt; “I Created A Fake Luxury Brand To Test How AI Handles Truth” (ahrefs.com/blog/ai-test-fake-brand/).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Marius Comper (Facebook):&lt;/strong&gt; &lt;a href=&quot;https://www.facebook.com/marius.comper/posts/pfbid0nkqvdfdudktd7gurmbask4spjitsth6ztmm1scjllwh7q3v5sa8jbnxkbc6krijsl&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Analisis del experimento&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search Engine Journal:&lt;/strong&gt; Análisis del impacto de LLM en entidades de marca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas independientes:&lt;/strong&gt; Verificado en GPT-4, Claude 3.5 Sonnet y Gemini Advanced (diciembre 2025).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO para WordPress&lt;/a&gt; y el &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio IA con WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>ai</category><category>marketing</category><category domain="tag">llm</category><category domain="tag">alucinaciones</category><category domain="tag">ahrefs</category><category domain="tag">reputacion-marca</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>Revisando el Informe &apos;WordPress en 2025&apos; - Una Oportunidad Perdida de Transparencia</title><link>https://wppoland.com/es/reviewing-the-wordpress-in-2025-report-a-missed-opportunity-for-transparency/</link><guid isPermaLink="true">https://wppoland.com/es/reviewing-the-wordpress-in-2025-report-a-missed-opportunity-for-transparency/</guid><description>Una mirada crítica al informe oficial de WordPress en 2025, lo que omite y por que una vision comunitaria más amplia habria sido más util.</description><pubDate>Sat, 25 Jan 2025 16:20:18 GMT</pubDate><content:encoded>&lt;p&gt;La comunidad de WordPress ha valorado durante mucho tiempo la apertura, la colaboración y la discusion franca. Asi que, cuando un informe titulado “&lt;a href=&quot;https://wordpress.org/news/2025/02/wordpress-in-2025-report/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress en 2025&lt;/a&gt;” aparecio en el sitio oficial de WordPress.org, muchos de nosotros, incluido yo mismo, esperabamos una mirada completa al presente y futuro de la plataforma. En su lugar, lo que obtuvimos se siente mas como un pitch de ventas empresarial pulido que un análisis genuino del estado del proyecto. Como &lt;a href=&quot;https://wpshout.com/official-wordpress-in-2025-report/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Karol Krol&lt;/a&gt; de WPShout, me encontre decepcionado por su enfoque selectivo y omisiones evidentes. Desempaquemos por que este informe “oficial” se queda corto y que podria haber abordado para servir verdaderamente al ecosistema WordPress.&lt;/p&gt;
&lt;p&gt;Si quieres la versión corta primero, el problema principal no es que el informe hable sobre WordPress empresarial. Es que presenta ese angulo como si fuera toda la historia.&lt;/p&gt;
&lt;h2 id=&quot;promesas-incumplidas-lo-que-esperabamos-vs-lo-que-obtuvimos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#promesas-incumplidas-lo-que-esperabamos-vs-lo-que-obtuvimos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Promesas incumplidas: Lo que esperabamos vs. Lo que obtuvimos&lt;/h2&gt;
&lt;p&gt;El título “WordPress en 2025” establece una expectativa: una evaluación amplia y con vision de futuro de la plataforma tal como esta hoy, 23 de febrero de 2025, y hacia donde se dirige. Dada su ubicacion en WordPress.org, uno podria asumir que refleja la voz colectiva de la comunidad, abordando tanto triunfos como desafios. En su lugar, el informe, escrito por Noel Tock de Human Made, se centra en WordPress como solución empresarial, promocionando su escalabilidad, potencial de IA y atractivo para grandes marcas.&lt;/p&gt;
&lt;p&gt;No hay nada inherentemente malo en destacar la adopcion empresarial: WordPress impulsa actores importantes como The Times y Amnesty International, despues de todo. Pero enmarcarlo como &lt;em&gt;la&lt;/em&gt; historia de WordPress en 2025 se siente reduccionista. El informe esquiva temas críticos que han dado forma al viaje de la plataforma este año, dejando a los lectores con una narrativa sanitizada y unidimensional. Como Karol senalo acertadamente, es menos un informe de la industria y más un folleto para tomadores de decisiones empresariales.&lt;/p&gt;
&lt;h2 id=&quot;omisiones-que-hablan-más-fuerte-que-las-palabras&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#omisiones-que-hablan-más-fuerte-que-las-palabras&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Omisiones que hablan más fuerte que las palabras&lt;/h2&gt;
&lt;p&gt;Lo que falta del informe es tan revelador como lo que se incluye. Aqui hay algunas areas clave que pasa por alto:&lt;/p&gt;
&lt;h3 id=&quot;salud-comunitaria-y-gobernanza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#salud-comunitaria-y-gobernanza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Salud comunitaria y gobernanza&lt;/h3&gt;
&lt;p&gt;2025 ha sido un año fundamental para WordPress, con discusiones continuas sobre la gobernanza del proyecto y la dinámica comunitaria. Sin embargo, el informe no menciona estos temas. Como les va a los colaboradores? Cual es el estado del compromiso voluntario en medio de un ecosistema comercial creciente? Estas preguntas importan a los miles de desarrolladores, disenadores y usuarios que mantienen WordPress vivo, pero estan ausentes aqui.&lt;/p&gt;
&lt;h3 id=&quot;controversias-recientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#controversias-recientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Controversias recientes&lt;/h3&gt;
&lt;p&gt;No pretendamos que 2025 ha sido tranquilo. La comunidad de WordPress ha navegado su cuota de debates: cambios en el ecosistema de plugins, disputas de licencias o el rol evolutivo de Automattic. Estos no son solo notas al pie; influyen en la confianza y la adopcion. Al ignorarlos, el informe presenta una imagen incompleta, socavando su credibilidad como documento “oficial”.&lt;/p&gt;
&lt;h3 id=&quot;pequeños-negocios-y-usuarios-independientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pequeños-negocios-y-usuarios-independientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pequeños negocios y usuarios independientes&lt;/h3&gt;
&lt;p&gt;WordPress no es solo para empresas: es la columna vertebral de innumerables pequeños negocios, bloggers y freelancers en todo el mundo. El enfoque laser del informe en implementaciónes a gran escala descarta este segmento vital. Que pasa con sus desafios en 2025, como costos de hosting crecientes o adaptarse a nuevas funcionalidades? Su historia también merece una voz.&lt;/p&gt;
&lt;h3 id=&quot;evolucion-técnica-más-alla-de-palabras-de-moda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evolucion-técnica-más-alla-de-palabras-de-moda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evolucion técnica más alla de palabras de moda&lt;/h3&gt;
&lt;p&gt;El informe se apoya mucho en terminos de moda como “flujos de trabajo de contenido impulsados por IA” y “ecosistemas multi-agente.” Si bien la integración de IA es emocionante, es vaga sin contexto. Que pasa con la evolucion práctica del Editor de Bloques, tasas de adopcion de Full Site Editing o mejoras de rendimiento? Estas actualizaciones técnicas afectan a los usuarios diariamente, pero se pasan por alto a favor de terminologia empresarial.&lt;/p&gt;
&lt;h2 id=&quot;por-que-encaja-la-etiqueta-de-pr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-encaja-la-etiqueta-de-pr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que encaja la etiqueta de PR&lt;/h2&gt;
&lt;p&gt;La crítica de Karol da en el clavo: esto se siente como PR empresarial disfrazada de informe de la industria. Publicado en WordPress.org, lleva un aire de autoridad, pero su alcance se alinea más con la clientesela de Human Made que con la comunidad más amplia. Las plataformas de código abierto prosperan con la transparencia, incluyendo las imperfecciones, pero este documento selecciona exitos mientras esquiva realidades más desordenadas.&lt;/p&gt;
&lt;p&gt;Para compradores empresariales, es un pitch convincente: WordPress es maduro, extensible y listo para la suite C. Pero para el resto de nosotros, desarrolladores en todo el mundo, propietarios de pequeñas agencias o aficionados, es una oportunidad perdida de reflexionar sobre donde realmente se encuentra WordPress en 2025. Un informe titulado “WordPress en el Sector Empresarial en 2025” en el sitio de Human Made habria sido más honesto e igualmente valioso.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-podria-haber-sido-una-imagen-más-completa-para-2025&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-podria-haber-sido-una-imagen-más-completa-para-2025&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que podria haber sido: Una imagen más completa para 2025&lt;/h2&gt;
&lt;p&gt;Un informe verdaderamente representativo de “WordPress en 2025” podria haber equilibrado las perspectivas empresariales con las realidades comunitarias. Imagina estas adiciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tendencias de adopcion&lt;/strong&gt;: Mas alla de las grandes marcas, como estan usando WordPress los sitios pequeños? Estamos viendo crecimiento en mercados emergentes?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sostenibilidad&lt;/strong&gt;: Como se sostiene el modelo de código abierto mientras crecen los intereses comerciales?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sentimiento del usuario&lt;/strong&gt;: Que revelan las publicaciónes en redes sociales y foros sobre la satisfaccion o frustracion en 2025?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hoja de ruta de innovacion&lt;/strong&gt;: Mas alla del hype de la IA, que sigue para las funcionalidades core o la seguridad?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos temas resonarian con los lectores de WPPoland.com: desarrolladores, propietarios de negocios y entusiastas que quieren una vision holistica en lugar de una presentacion de ventas.&lt;/p&gt;
&lt;h2 id=&quot;un-llamado-al-equilibrio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#un-llamado-al-equilibrio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Un llamado al equilibrio&lt;/h2&gt;
&lt;p&gt;El informe “WordPress en 2025” no carece de merito. Destaca fortalezas reales, como la flexibilidad del código abierto y la traccion empresarial, que vale la pena celebrar. Sin embargo, su lente estrecho y omisiones estrategicas lo hacen sentir menos como un recurso comunitario y más como una herramienta de marketing. Para una plataforma construida sobre la inclusividad, eso es decepcionante.&lt;/p&gt;
&lt;p&gt;En WPPoland.com, seguire profundizando en la historia completa de WordPress: victorias empresariales, desafios comunitarios y todo lo demas. Que piensas del informe? Sigamos presionando por un WordPress que refleje a todos sus usuarios, no solo a los que estan en salas de juntas.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Lectura relacionada:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/wordpress-2025-report-review-transparency/&quot;&gt;Revision del informe ‘WordPress en 2025’: Una oportunidad perdida…&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Conoce más sobre nuestros servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Explora nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y GEO&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>wordpress</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-2025-report-analysis.jpg" type="image/jpeg"/></item><item><title>Escalando estrategias de contenido corporativo para el crecimiento global 2026</title><link>https://wppoland.com/es/scaling-corporate-content-strategies-for-2026-global-growth/</link><guid isPermaLink="true">https://wppoland.com/es/scaling-corporate-content-strategies-for-2026-global-growth/</guid><description>Como gestionar contenido en 50 paises sin perder el control? Esta guía explora la escalabilidad del contenido corporativo en 2026 con WordPress e IA.</description><pubDate>Wed, 22 Jan 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Escalar una estrategia de contenido corporativo de 1 pais a 50 es uno de los desafios más complejos que enfrenta cualquier empresa global en 2026. No se trata simplemente de traducir contenido: se trata de mantener la coherencia de marca, cumplir regulaciones locales, optimizar para SEO regional y producir contenido relevante a una velocidad que el mercado exige, todo sin perder el control de calidad.&lt;/p&gt;
&lt;p&gt;Conozca más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress empresarial&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta guía proporciona un manual práctico para escalar contenido corporativo usando WordPress e IA, cubriendo arquitectura, gobernanza, flujos de trabajo y medicion.&lt;/p&gt;
&lt;h2 id=&quot;1-el-desafio-de-escalar-contenido-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-desafio-de-escalar-contenido-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El desafio de escalar contenido en 2026&lt;/h2&gt;
&lt;p&gt;El contenido corporativo en 2026 ha evolucionado dramaticamente. Ya no es suficiente publicar artículos de blog y páginas de producto. Las empresas modernas necesitan producir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenido escrito&lt;/strong&gt;: Blog, documentación, casos de estudio, whitepapers, guías&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido visual&lt;/strong&gt;: Infografias, videos cortos, presentaciones interactivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido de datos estructurados&lt;/strong&gt;: Schema.org, FAQ, HowTo para búsqueda por IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido multilingue&lt;/strong&gt;: Adaptado culturalmente para cada mercado objetivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido programatico&lt;/strong&gt;: Páginas generadas automáticamente basadas en datos (inventario, ubicaciones, integraciones)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La cantidad de contenido necesario crece exponencialmente con cada mercado anadido. Si necesita 100 páginas para un mercado, necesita 500 para 5 mercados (no 100 x 5 = 500 traducidas, sino 100 traducidas + 80 únicas por mercado).&lt;/p&gt;
&lt;h3 id=&quot;volumen-de-contenido-tipico-por-tamaño-de-empresa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#volumen-de-contenido-tipico-por-tamaño-de-empresa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Volumen de contenido tipico por tamaño de empresa&lt;/h3&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Tamaño&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mercados&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Páginas por mercado&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Total páginas&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Actualizaciones mensuales&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Startup&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-3&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-200&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-600&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10-30&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;PYME&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3-10&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-1.000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;600-10.000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30-100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Enterprise&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10-50&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.000-10.000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10.000-500.000&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;100-1.000+&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;2-arquitectura-para-contenido-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-arquitectura-para-contenido-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Arquitectura para contenido a escala&lt;/h2&gt;
&lt;h3 id=&quot;wordpress-multisite-el-hub-centralizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wordpress-multisite-el-hub-centralizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WordPress Multisite: El hub centralizado&lt;/h3&gt;
&lt;p&gt;WordPress Multisite es la arquitectura natural para contenido corporativo a escala. Permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gestión centralizada&lt;/strong&gt;: Un único panel de control para administradores globales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins y temas compartidos&lt;/strong&gt;: Actualice una vez, despliegue en todos los sitios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Biblioteca de medios compartida&lt;/strong&gt;: Reutilice activos visuales entre mercados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roles granulares&lt;/strong&gt;: Editores locales con permisos limitados a su mercado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Estructura recomendada:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;red-corporativa.com/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  ├── es/    (Mercado hispanohablante)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  ├── en/    (Mercado anglosajón)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  ├── pt/    (Mercado lusofono)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  ├── de/    (Mercado DACH)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  └── fr/    (Mercado francofono)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;contenido-modular-con-bloques-reutilizables&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-modular-con-bloques-reutilizables&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido modular con bloques reutilizables&lt;/h3&gt;
&lt;p&gt;En lugar de crear páginas completas desde cero para cada mercado, use un sistema de &lt;strong&gt;bloques de contenido reutilizables&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bloques globales&lt;/strong&gt;: Logotipos, mensajes de marca, especificaciones de producto (sincronizados desde el hub central).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloques regionales&lt;/strong&gt;: Casos de estudio locales, testimonios, precios en moneda local (gestionados por equipos regionales).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloques dinámicos&lt;/strong&gt;: Contenido que cambia automáticamente según la ubicacion, idioma o segmento del visitante.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este enfoque modular reduce la duplicacion de esfuerzo en un 60-70% y asegura consistencia de marca mientras permite personalización local.&lt;/p&gt;
&lt;h2 id=&quot;3-flujos-de-trabajo-con-ia-para-producción-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-flujos-de-trabajo-con-ia-para-producción-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Flujos de trabajo con IA para producción a escala&lt;/h2&gt;
&lt;p&gt;En 2026, la IA es el multiplicador de fuerza que permite a equipos pequeños producir contenido a escala empresarial.&lt;/p&gt;
&lt;h3 id=&quot;el-pipeline-de-contenido-asistido-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-pipeline-de-contenido-asistido-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El pipeline de contenido asistido por IA&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Investigacion automática&lt;/strong&gt;: Herramientas de IA analizan tendencias de búsqueda, competencia y gaps de contenido para cada mercado, generando briefs de contenido automáticos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Generación de borradores&lt;/strong&gt;: LLMs generan borradores iniciales basados en briefs detallados. La calidad en 2026 es suficientemente alta para reducir el tiempo de redaccion en un 50-70%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Traduccion y localización&lt;/strong&gt;: Traduccion automática con IA (DeepL, Google Cloud Translation) seguida de revision humana. Reduccion de costes de traduccion del 70-90%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Verificación de calidad&lt;/strong&gt;: Algoritmos verifican consistencia de marca, precision factual, cobertura SEO y cumplimiento regulatorio automáticamente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimización SEO&lt;/strong&gt;: Herramientas de IA optimizan cada pieza de contenido para keywords locales, datos estructurados y &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO técnico&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Publicación programada&lt;/strong&gt;: Sistemas automáticos publican contenido en el horario optimo para cada zona horaria.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;metricas-del-pipeline-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-del-pipeline-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas del pipeline IA&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Metrica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Sin IA&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Con IA + revision humana&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Tiempo por artículo (1500 palabras)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;4-8 horas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1-2 horas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Artículos por editor por semana&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;3-5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;10-15&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Coste por artículo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;200-400 EUR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;50-120 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Calidad (escala 1-10)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;8-10&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;7-9 (con revision)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Consistencia de marca&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Variable&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta (verificación automática)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;4-gobernanza-de-contenido-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-gobernanza-de-contenido-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Gobernanza de contenido a escala&lt;/h2&gt;
&lt;p&gt;Sin gobernanza, escalar contenido resulta en caos: mensajes inconsistentes, violaciones regulatorias, contenido duplicado y dilución de marca.&lt;/p&gt;
&lt;h3 id=&quot;marco-de-gobernanza-de-cuatro-niveles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marco-de-gobernanza-de-cuatro-niveles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marco de gobernanza de cuatro niveles&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Nivel 1: Politicas globales&lt;/strong&gt; (definidas por el equipo central)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guia de estilo de marca (tono, voz, terminologia)&lt;/li&gt;
&lt;li&gt;Estándares visuales (colores, tipografia, fotografia)&lt;/li&gt;
&lt;li&gt;Politicas de cumplimiento regulatorio por region&lt;/li&gt;
&lt;li&gt;Estándares de calidad minimos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nivel 2: Directrices regionales&lt;/strong&gt; (definidas por managers regionales)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adaptaciones culturales permitidas&lt;/li&gt;
&lt;li&gt;Calendarios editoriales regionales&lt;/li&gt;
&lt;li&gt;Relaciones con medios locales&lt;/li&gt;
&lt;li&gt;Eventos y fechas relevantes por mercado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nivel 3: Flujos de aprobacion&lt;/strong&gt; (automatizados en WordPress)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contenido local requiere aprobacion del manager regional&lt;/li&gt;
&lt;li&gt;Contenido que toca la marca global requiere aprobacion del equipo central&lt;/li&gt;
&lt;li&gt;Contenido regulado (financiero, medico) requiere revision legal&lt;/li&gt;
&lt;li&gt;Contenido traducido requiere validación linguistica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nivel 4: Monitoreo continuo&lt;/strong&gt; (automatizado con herramientas)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verificación automática de consistencia de marca&lt;/li&gt;
&lt;li&gt;Alertas de contenido que viola politicas&lt;/li&gt;
&lt;li&gt;Metricas de rendimiento por mercado&lt;/li&gt;
&lt;li&gt;Auditorias periodicas de calidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación en WordPress&lt;/h3&gt;
&lt;p&gt;WordPress permite implementar gobernanza directamente en el CMS:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Roles personalizados para gobernanza global&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; create_global_content_roles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;global_director&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Director Global de Contenido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;publish_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_others_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;delete_others_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;manage_categories&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_published_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;regional_manager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Manager Regional&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;publish_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_others_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_published_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;local_editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Editor Local&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit_published_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // No puede publicar directamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-contenido-programatico-escalabilidad-automática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-contenido-programatico-escalabilidad-automática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Contenido programatico: Escalabilidad automática&lt;/h2&gt;
&lt;p&gt;Para ciertos tipos de contenido, la generación programatica permite escalar a miles de páginas sin intervencion manual:&lt;/p&gt;
&lt;h3 id=&quot;casos-de-uso-para-contenido-programatico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-para-contenido-programatico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso para contenido programatico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas de ubicacion&lt;/strong&gt;: “Servicio WordPress en [Ciudad]” para cada ciudad objetivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de integración&lt;/strong&gt;: “WordPress + [Herramienta]” para cada integración soportada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de comparación&lt;/strong&gt;: “[Producto] vs [Competidor]” generadas automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de FAQ&lt;/strong&gt;: Generadas a partir de datos de soporte al clientes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;implementación-responsable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-responsable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación responsable&lt;/h3&gt;
&lt;p&gt;El contenido programatico solo funciona cuando anade valor real. Cada página debe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contener datos únicos y específicos (no solo sustitucion de variables)&lt;/li&gt;
&lt;li&gt;Responder a una intencion de búsqueda real con volumen&lt;/li&gt;
&lt;li&gt;Ser verificada por calidad antes de indexarse&lt;/li&gt;
&lt;li&gt;Actualizarse regularmente con datos frescos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO programatico&lt;/a&gt; mal implementado resulta en contenido fino que Google penaliza. Bien implementado, puede multiplicar el tráfico organico por 10x.&lt;/p&gt;
&lt;h2 id=&quot;6-medicion-del-rendimiento-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-medicion-del-rendimiento-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Medicion del rendimiento a escala&lt;/h2&gt;
&lt;h3 id=&quot;dashboard-global-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dashboard-global-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dashboard global de contenido&lt;/h3&gt;
&lt;p&gt;Un dashboard centralizado debe mostrar:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Metricas de producción:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Volumen de contenido producido por mercado (páginas/mes)&lt;/li&gt;
&lt;li&gt;Tiempo medio de producción (brief a publicación)&lt;/li&gt;
&lt;li&gt;Coste por pieza de contenido&lt;/li&gt;
&lt;li&gt;Ratio de contenido local vs. traducido&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Metricas de rendimiento:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tráfico organico por mercado e idioma&lt;/li&gt;
&lt;li&gt;Posiciones de keywords por region&lt;/li&gt;
&lt;li&gt;Tasas de conversión por tipo de contenido&lt;/li&gt;
&lt;li&gt;Engagement (tiempo en página, scroll depth, clics internos)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Metricas de calidad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Puntuacion de consistencia de marca&lt;/li&gt;
&lt;li&gt;Tasa de aprobacion al primer envio&lt;/li&gt;
&lt;li&gt;Errores de traduccion detectados post-publicación&lt;/li&gt;
&lt;li&gt;Cumplimiento regulatorio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;roi-del-contenido-escalado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#roi-del-contenido-escalado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ROI del contenido escalado&lt;/h3&gt;
&lt;p&gt;El ROI del contenido corporativo escalado se mide comparando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Inversión&lt;/strong&gt;: Equipo + herramientas + IA + traduccion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retorno&lt;/strong&gt;: Tráfico organico valorizado + leads generados + conversiones atribuidas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eficiencia&lt;/strong&gt;: Coste por lead/conversión vs. canales pagados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las empresas que escalan contenido correctamente con WordPress e IA tipicamente ven:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3-5x más tráfico organico en 12 meses&lt;/li&gt;
&lt;li&gt;40-60% menos coste por lead comparado con PPC&lt;/li&gt;
&lt;li&gt;25-35% mejora en engagement de marca global&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;7-plan-de-escalado-en-fases&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-plan-de-escalado-en-fases&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Plan de escalado en fases&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-fundamentos-mes-1-3&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-fundamentos-mes-1-3&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Fundamentos (Mes 1-3)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Auditar contenido existente y definir arquitectura&lt;/li&gt;
&lt;li&gt;Implementar WordPress Multisite con 2-3 mercados piloto&lt;/li&gt;
&lt;li&gt;Establecer flujos de trabajo y roles&lt;/li&gt;
&lt;li&gt;Configurar herramientas de IA para producción&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-expansion-mes-4-8&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-expansion-mes-4-8&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Expansion (Mes 4-8)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Anadir 3-5 mercados adicionales&lt;/li&gt;
&lt;li&gt;Implementar contenido programatico para páginas de alto volumen&lt;/li&gt;
&lt;li&gt;Automatizar flujos de traduccion con IA&lt;/li&gt;
&lt;li&gt;Establecer dashboard de metricas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-3-optimización-mes-9-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-optimización-mes-9-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Optimización (Mes 9-12)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Analizar rendimiento por mercado y optimizar&lt;/li&gt;
&lt;li&gt;Escalar producción de contenido con IA verificada&lt;/li&gt;
&lt;li&gt;Implementar personalización basada en datos&lt;/li&gt;
&lt;li&gt;Expandir a mercados adicionales basandose en ROI&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-4-madurez-mes-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-madurez-mes-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Madurez (Mes 12+)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Automatizacion completa de flujos repetitivos&lt;/li&gt;
&lt;li&gt;IA como co-creador con supervision humana minima&lt;/li&gt;
&lt;li&gt;Expansion a formatos multimodales (video, interactivo)&lt;/li&gt;
&lt;li&gt;Optimización continua basada en datos globales&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Escalar contenido corporativo en 2026 requiere una combinación de tecnología correcta (WordPress Multisite), procesos definidos (gobernanza), herramientas inteligentes (IA) y medicion continua. Las empresas que dominan esta combinación obtienen una ventaja competitiva significativa en visibilidad organica, generación de leads y presencia de marca global.&lt;/p&gt;
&lt;p&gt;Si esta listo para escalar su estrategia de contenido, el equipo de &lt;a href=&quot;/es/contacto/&quot;&gt;WPPoland&lt;/a&gt; puede ayudarle con &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt;, &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO internacional&lt;/a&gt; y &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento&lt;/a&gt; para empresas globales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress empresarial&lt;/a&gt; - Arquitecturas escalables&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; - Visibilidad global&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;Comercio e IA&lt;/a&gt; - IA para producción de contenido&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;Mantenimiento WordPress&lt;/a&gt; - Soporte para redes multisite&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>business</category><category>marketing</category><category domain="tag">content-scaling</category><category domain="tag">corporate-marketing</category><category domain="tag">global-seo</category><category domain="tag">ai-content-governance</category><category domain="tag">wordpress-multisite</category><enclosure url="https://wppoland.com/images/og/wordpress-gdansk-office.jpg" type="image/jpeg"/></item><item><title>100/100 en Core Web Vitals para WordPress en 2026</title><link>https://wppoland.com/es/achieving-100-100-core-web-vitals-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/achieving-100-100-core-web-vitals-guide-2026/</guid><description>Es posible una puntuacion de rendimiento perfecta en 2026? Esta guía de más de 2500 palabras revela los secretos de un LCP inferior a un segundo y un CLS perfecto para WordPress.</description><pubDate>Mon, 13 Jan 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;La web es más rápida de lo que ha sido jamas. Los usuarios no simplemente &quot;esperan&quot; a que una página cargue - esperan que este alli instantaneamente. El algoritmo de Google ha evolucionado desde medidas puramente cualitativas hasta telemetria de rendimiento hiper-precisa. Si tu sitio WordPress tarda más de 1.5 segundos en proporcionar su Largest Contentful Paint (LCP), no solo estas perdiendo usuarios; estas perdiendo visibilidad.&lt;/p&gt;
&lt;p&gt;Lograr una &lt;strong&gt;puntuacion Mobile de 100/100&lt;/strong&gt; en PageSpeed Insights es el “Santo Grial” del SEO técnico. Mientras algunos argumentan que 100/100 es imposible para sitios complejos, nosotros discrepamos. En 2026, con arquitecturas modernas como &lt;strong&gt;hibridos Astro-WP&lt;/strong&gt;, &lt;strong&gt;CSS Container Queries&lt;/strong&gt; y &lt;strong&gt;Speculative Rules&lt;/strong&gt;, 100/100 no solo es posible - es lo esperado para los lideres empresariales.&lt;/p&gt;
&lt;p&gt;Esta inmersion profunda de más de 2500 palabras cubre el stack técnico exacto y las estrategias requeridas para dominar los Core Web Vitals en 2026.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-lcp-largest-contentful-paint-la-carrera-sub-segundo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-lcp-largest-contentful-paint-la-carrera-sub-segundo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. LCP (Largest Contentful Paint): La carrera sub-segundo&lt;/h2&gt;
&lt;p&gt;En 2026, el objetivo de un LCP “Bueno” ha bajado de 2.5s a &lt;strong&gt;1.2s&lt;/strong&gt;. Esta reduccion dramatica refleja las expectativas crecientes de los usuarios y la competencia feroz por las primeras posiciones en los resultados de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;la-pila-de-prioridad-lcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-pila-de-prioridad-lcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La pila de prioridad LCP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Precarga de imágenes criticas&lt;/strong&gt;: En 2026, no cargamos todo de forma diferida. Precargamos explicitamente la imagen hero en el head del documento usando &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt;. Esta directiva le dice al navegador que esta imagen es la más importante de la página y debe descargarse antes que cualquier otro recurso.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AVIF por defecto&lt;/strong&gt;: WebP es ahora un formato “legacy”. AVIF ofrece un 20-30% mejor compresion a la misma calidad, lo cual es crucial para banners hero grandes. La adopcion de AVIF se ha generalizado en 2026, con soporte en todos los navegadores principales incluyendo Safari.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Edge Side Includes (ESI)&lt;/strong&gt;: Servimos el contenido principal desde el servidor edge más cercano, asegurando que la respuesta HTML inicial (TTFB) sea inferior a 200ms globalmente. Esto significa que un usuario en Madrid obtiene su contenido desde un servidor en Madrid, no desde un centro de datos en Virginia.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategias-avanzadas-de-lcp-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-lcp-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de LCP para WordPress&lt;/h3&gt;
&lt;p&gt;La optimización del LCP en WordPress requiere un enfoque multifacetado que va más alla de simplemente instalar un plugin de cache. Estos son los componentes críticos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Renderizado del lado del servidor (SSR) optimizado&lt;/strong&gt;: El PHP de WordPress debe generar el HTML inicial lo más rápido posible. Esto implica eliminar consultas de base de datos innecesarias durante la renderizacion de la página, utilizar object caching con Redis para almacenar consultas frecuentes, y minimizar el uso de hooks que añaden latencia al proceso de renderizado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Precarga inteligente de fuentes&lt;/strong&gt;: Las fuentes web son frecuentemente el cuello de botella oculto del LCP. En 2026, utilizamos la propiedad &lt;code&gt;font-display: optional&lt;/code&gt; junto con fuentes fallback metricamente compatibles. Esto asegura que el texto sea visible inmediatamente sin esperar a que se descargue la fuente personalizada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eliminacion del CSS render-blocking&lt;/strong&gt;: Todo el CSS crítico para la primera pantalla (above-the-fold) se inlinea directamente en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; del documento. El CSS restante se carga de forma diferida usando &lt;code&gt;media=&quot;print&quot;&lt;/code&gt; con un cambio a &lt;code&gt;media=&quot;all&quot;&lt;/code&gt; via JavaScript despues del renderizado inicial.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-inp-interaction-to-next-paint-el-nuevo-rey-de-la-interactividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-inp-interaction-to-next-paint-el-nuevo-rey-de-la-interactividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. INP (Interaction to Next Paint): El nuevo rey de la interactividad&lt;/h2&gt;
&lt;p&gt;Desde 2024/2025, FID (First Input Delay) fue oficialmente reemplazado por &lt;strong&gt;INP&lt;/strong&gt;. En 2026, INP es la metrica que separa los sitios “profesionales” de los sitios “lentos”. La diferencia fundamental es que FID solo media la primera interacción, mientras que INP evalua la responsividad de todas las interacciones a lo largo del ciclo de vida completo de la página.&lt;/p&gt;
&lt;h3 id=&quot;gestión-del-hilo-principal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-del-hilo-principal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión del hilo principal&lt;/h3&gt;
&lt;p&gt;Ya no volcamos bundles masivos de JavaScript. Utilizamos &lt;strong&gt;Partytown&lt;/strong&gt; para mover scripts no críticos (Google Analytics, Facebook Pixel) a un Web Worker, liberando el hilo principal para interacciones del usuario. Esta técnica es particularmente efectiva en WordPress, donde plugins como WooCommerce y Yoast SEO pueden inyectar cantidades significativas de JavaScript.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h3 id=&quot;css-zero-blocking&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-zero-blocking&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS Zero-Blocking&lt;/h3&gt;
&lt;p&gt;Inlineamos el CSS crítico para el contenido above-the-fold y diferimos el resto. Esto asegura que cuando un usuario hace clic en un boton, el navegador esta listo para responder inmediatamente sin esperar a que se descarguen y procesen hojas de estilo adicionales.&lt;/p&gt;
&lt;h3 id=&quot;yielding-al-hilo-principal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#yielding-al-hilo-principal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Yielding al hilo principal&lt;/h3&gt;
&lt;p&gt;La API &lt;code&gt;scheduler.yield()&lt;/code&gt; es la herramienta clave en 2026 para mejorar INP. Permite que las tareas largas de JavaScript se dividan en fragmentos más pequeños, dando al navegador la oportunidad de procesar interacciones del usuario entre fragmentos. En WordPress, esto es especialmente importante para scripts de plugins que realizan operaciones pesadas como validación de formularios o calculos de precios en WooCommerce.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-cls-cumulative-layout-shift-anclando-tu-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-cls-cumulative-layout-shift-anclando-tu-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. CLS (Cumulative Layout Shift): Anclando tu diseño&lt;/h2&gt;
&lt;p&gt;La estabilidad visual es primordial. CLS en 2026 se aplica estrictamente, y los umbrales se han vuelto aun más exigentes para sitios que aspiran a las primeras posiciones.&lt;/p&gt;
&lt;h3 id=&quot;aspect-ratios-explicitos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aspect-ratios-explicitos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aspect Ratios explicitos&lt;/h3&gt;
&lt;p&gt;Cada imagen, video e iframe debe tener atributos &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt; o una propiedad CSS &lt;code&gt;aspect-ratio&lt;/code&gt; definida. En WordPress, esto requiere que los temas generen estos atributos automáticamente para todas las imágenes en el contenido, incluidas las insertadas mediante el editor de bloques.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  aspect-ratio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;font-display-swap-y-size-adjust&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#font-display-swap-y-size-adjust&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Font-Display: Swap y Size-Adjust&lt;/h3&gt;
&lt;p&gt;Los cambios de diseño a menudo ocurren cuando las fuentes personalizadas cargan y reemplazan las fuentes fallback. Usando la propiedad &lt;code&gt;size-adjust&lt;/code&gt;, hacemos que la fuente fallback ocupe exactamente el mismo espacio que la fuente personalizada, eliminando el salto visual cuando la fuente finalmente carga.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@font-face&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  font-family&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;CustomFont&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/fonts/custom.woff2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woff2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  font-display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;swap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  size-adjust&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;105&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  ascent-override&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;95&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;reserva-de-espacio-para-contenido-dinámico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reserva-de-espacio-para-contenido-dinámico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reserva de espacio para contenido dinámico&lt;/h3&gt;
&lt;p&gt;Los banners de cookies, las barras de notificación y los anuncios son las causas más comunes de CLS en sitios WordPress. En 2026, reservamos espacio explicito para estos elementos usando CSS Grid con areas nombradas, asegurando que su aparicion no desplace el contenido existente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-el-stack-de-rendimiento-2026-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-el-stack-de-rendimiento-2026-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. El stack de rendimiento 2026 para WordPress&lt;/h2&gt;
&lt;p&gt;Para alcanzar 100/100, tu configuración legacy cargada de plugins no será suficiente. Necesitas una arquitectura moderna que priorice el rendimiento desde los cimientos.&lt;/p&gt;
&lt;h3 id=&quot;ssr--edge-caching&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ssr--edge-caching&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SSR + Edge Caching&lt;/h3&gt;
&lt;p&gt;Usamos Cloudflare Workers o Bunny.net Edge para almacenar la página HTML completa globalmente. Esto reduce el TTFB a menos de 100ms para el 99% de los usuarios globales. La invalidacion del cache se maneja mediante webhooks de WordPress que se disparan automáticamente cuando se pública o actualiza contenido.&lt;/p&gt;
&lt;h3 id=&quot;motores-de-base-de-datos-modernos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#motores-de-base-de-datos-modernos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Motores de base de datos modernos&lt;/h3&gt;
&lt;p&gt;Utilizamos MariaDB con optimizaciones específicas para las tablas &lt;code&gt;wp_options&lt;/code&gt; y &lt;code&gt;wp_postmeta&lt;/code&gt; de WordPress. Las consultas autoloaded a la tabla &lt;code&gt;wp_options&lt;/code&gt; son un cuello de botella notorio - en 2026, mantenemos esta tabla por debajo de 500 filas autoloaded y movemos datos transitorios a Redis.&lt;/p&gt;
&lt;h3 id=&quot;profundidad-dom-reducida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#profundidad-dom-reducida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Profundidad DOM reducida&lt;/h3&gt;
&lt;p&gt;Los temas de 2026 se centran en estructuras HTML planas. El anidamiento excesivo de &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; de constructores de páginas legacy es el asesino número uno de la velocidad de renderizado. Un DOM con más de 1.500 nodos causa degradacion medible en INP, especialmente en dispositivos móviles.&lt;/p&gt;
&lt;h3 id=&quot;zero-js-en-la-renderizacion-inicial-del-viewport&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#zero-js-en-la-renderizacion-inicial-del-viewport&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Zero-JS en la renderizacion inicial del viewport&lt;/h3&gt;
&lt;p&gt;La estrategia más agresiva de 2026 es el enfoque “Zero-JS”: el viewport inicial se renderiza enteramente con HTML y CSS, sin depender de JavaScript para mostrar contenido. Los scripts se cargan de forma diferida y se ejecutan solo cuando el hilo principal esta inactivo o cuando el usuario interactua con un elemento que los requiere.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-gobernanza-de-scripts-de-terceros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-gobernanza-de-scripts-de-terceros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Gobernanza de scripts de terceros&lt;/h2&gt;
&lt;p&gt;El sitio corporativo promedio se ralentiza por &lt;strong&gt;bloat de marketing&lt;/strong&gt;. Cada equipo quiere su pixel de seguimiento, su widget de chat y su herramienta de análisis, y el resultado es un hilo principal congestionado que destruye tanto LCP como INP.&lt;/p&gt;
&lt;h3 id=&quot;sandboxing-de-scripts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sandboxing-de-scripts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sandboxing de scripts&lt;/h3&gt;
&lt;p&gt;Envolvemos los rastreadores no esenciales en un retardo de ejecucion. Se cargan solo &lt;em&gt;despues&lt;/em&gt; de que el usuario interactua con la página o despues de 3 segundos de tiempo inactivo. Esta técnica, conocida como “Script Sandwich”, es particularmente efectiva en WordPress donde plugins como HubSpot, Intercom o Hotjar pueden añadir cientos de kilobytes de JavaScript.&lt;/p&gt;
&lt;h3 id=&quot;seguimiento-del-lado-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguimiento-del-lado-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguimiento del lado del servidor&lt;/h3&gt;
&lt;p&gt;Mover Google Tag Manager al lado del servidor elimina la necesidad de cargar bibliotecas JS pesadas en el navegador del usuario. Los eventos se envian desde el servidor Edge directamente a los endpoints de análisis, reduciendo el impacto en el rendimiento del clientes a practicamente cero.&lt;/p&gt;
&lt;h3 id=&quot;auditoria-periodica-de-scripts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-periodica-de-scripts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria periodica de scripts&lt;/h3&gt;
&lt;p&gt;Implementamos un proceso trimestral de auditoria de scripts donde cada script de terceros debe justificar su presencia. Scripts que no generan valor medible son eliminados sin contemplaciones. En nuestra experiencia, el 40% de los scripts de terceros en sitios corporativos WordPress pueden eliminarse sin impacto en la funcionalidad del negocio.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-optimización-mobile-first&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-optimización-mobile-first&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Optimización Mobile-First&lt;/h2&gt;
&lt;p&gt;La búsqueda es mobile-first. El rendimiento debe ser mobile-first. En 2026, Google utiliza exclusivamente el rastreo mobile-first, lo que significa que la experiencia móvil de tu sitio determina directamente tu posicionamiento.&lt;/p&gt;
&lt;h3 id=&quot;carga-adaptativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#carga-adaptativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Carga adaptativa&lt;/h3&gt;
&lt;p&gt;Servimos imágenes de menor resolución y fragmentos JS más simples a usuarios en conexiónes 4G/5G más lentas (detectadas via la Network Information API). Esto asegura que los usuarios móviles en mercados emergentes tengan una experiencia tan fluida como los usuarios en fibra optica.&lt;/p&gt;
&lt;h3 id=&quot;inlineado-del-critical-path&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inlineado-del-critical-path&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inlineado del Critical Path&lt;/h3&gt;
&lt;p&gt;Inlineamos exactamente lo que se necesita para los primeros 800px de la pantalla y nada mas. Para WordPress, esto significa generar CSS crítico específico para cada tipo de plantilla - la página de inicio tiene CSS crítico diferente al de una entrada de blog o una página de producto WooCommerce.&lt;/p&gt;
&lt;h3 id=&quot;prerender-y-speculation-rules&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prerender-y-speculation-rules&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prerender y Speculation Rules&lt;/h3&gt;
&lt;p&gt;Las Speculation Rules API permiten al navegador pre-renderizar páginas que el usuario probablemente visitara a continuacion. En WordPress, implementamos reglas que pre-renderizan los enlaces más prominentes del viewport actual, haciendo que la navegación se sienta instantanea.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;speculationrules&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &quot;prerender&quot;: [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &quot;where&quot;: { &quot;selector_matches&quot;: &quot;a[href^=&apos;/es/&apos;]&quot; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &quot;eagerness&quot;: &quot;moderate&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-por-que-wppoland-es-el-socio-de-rendimiento-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-por-que-wppoland-es-el-socio-de-rendimiento-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Por que WPPoland es el socio de rendimiento para 2026&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, la velocidad es nuestra religion. No nos conformamos con “suficientemente rápido” - apuntamos a la perfeccion técnica.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Especialistas en auditorias de rendimiento&lt;/strong&gt;: No solo ejecutamos Lighthouse; analizamos Flame Charts y Treemaps para encontrar cada milisegundo de desperdicio. Conoce más sobre nuestra &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimización empresarial&lt;/strong&gt;: Tenemos experiencia escalando puntuaciones 100/100 a través de redes Multisite con millones de visitantes. Nuestro &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;servicio de mantenimiento WordPress&lt;/a&gt; garantiza que el rendimiento se mantenga optimo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Garantia de Core Web Vitals&lt;/strong&gt;: Construimos sistemas que permanecen en el “Verde” incluso cuando agregas contenido, plugins o funcionalidades nuevas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-preguntas-frecuentes-rendimiento-perfecto-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-preguntas-frecuentes-rendimiento-perfecto-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Preguntas frecuentes: Rendimiento perfecto en 2026&lt;/h2&gt;
&lt;h3 id=&quot;que-es-la-metrica-network-idle-y-por-que-es-importante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-la-metrica-network-idle-y-por-que-es-importante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es la metrica ‘Network Idle’ y por que es importante?&lt;/h3&gt;
&lt;p&gt;Nos dice cuando el navegador ha terminado de descargar todo. Un bajo “Time to Interactive” solo es posible cuando Network Idle ocurre rápidamente. En WordPress, logramos esto minimizando las solicitudes HTTP totales a menos de 30 para la carga inicial de la página.&lt;/p&gt;
&lt;h3 id=&quot;deberia-usar-un-cdn-para-mi-sitio-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deberia-usar-un-cdn-para-mi-sitio-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deberia usar un CDN para mi sitio WordPress?&lt;/h3&gt;
&lt;p&gt;Absolutamente. En 2026, un CDN no es opcional sino obligatorio. Recomendamos Cloudflare, Fastly o Bunny.net con configuración específica para WordPress que maneje correctamente la invalidacion de cache cuando se pública contenido nuevo.&lt;/p&gt;
&lt;h3 id=&quot;como-afectan-los-plugins-de-woocommerce-al-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-afectan-los-plugins-de-woocommerce-al-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como afectan los plugins de WooCommerce al rendimiento?&lt;/h3&gt;
&lt;p&gt;WooCommerce puede ser un lastre significativo para el rendimiento si no se optimiza correctamente. Los plugins de WooCommerce frecuentemente cargan sus scripts en todas las páginas, no solo en las páginas de tienda. En 2026, usamos carga condicional de assets para asegurar que los scripts de WooCommerce solo se carguen donde son necesarios.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-la-velocidad-es-tu-ventaja-competitiva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-la-velocidad-es-tu-ventaja-competitiva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: La velocidad es tu ventaja competitiva&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En 2026, el rendimiento no es un “bonus” - es un requisito empresarial fundamental. Un sitio que alcanza &lt;strong&gt;100/100 en Core Web Vitals&lt;/strong&gt; superara en ranking, conversión y rendimiento a sus competidores más lentos cada dia. Al optimizar tu sitio WordPress para &lt;strong&gt;LCP, INP y CLS&lt;/strong&gt;, estas construyendo una plataforma que respeta el tiempo de tus usuarios y los estándares de Google.&lt;/p&gt;
&lt;p&gt;La diferencia entre un sitio con LCP de 1.0s y uno con LCP de 3.0s no es solo técnica - es la diferencia entre aparecer en la primera página de resultados o quedar enterrado en la tercera. En nichos competitivos como fintech, salud o comercio electronico, cada 100ms de mejora puede traducirse en millones de euros en ingresos adicionales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tu sitio esta rezagado en el ‘Rojo’? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para una revision profunda del rendimiento hoy.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>performance</category><category>development</category><category domain="tag">core-web-vitals</category><category domain="tag">page-speed</category><category domain="tag">lcp-optimization</category><category domain="tag">cls-fix</category><category domain="tag">wordpress-speed-2026</category><enclosure url="https://wppoland.com/images/og/wordpress-security-why-updates-and-security-measures-are-crucial.jpg" type="image/jpeg"/></item><item><title>Como anadir Google Analytics 4 (GA4) a WordPress - Guia completa 2026</title><link>https://wppoland.com/es/adding-google-analytics-4-wordpress/</link><guid isPermaLink="true">https://wppoland.com/es/adding-google-analytics-4-wordpress/</guid><description>Los métodos antiguos (ua.js) ya no funcionan. Como anadir correctamente el seguimiento de GA4 en WordPress? Plugin, GTM o código? Además de Consent Mode v2 y Server-Side Tracking.</description><pubDate>Mon, 06 Jan 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La analítica es la base de toda estrategia digital. Pero la forma de anadir Google Analytics a WordPress ha cambiado drasticamente a lo largo de los años. Antes pegabamos un simple script &lt;code&gt;_gaq.push&lt;/code&gt;. Hoy, en la era de GA4, el RGPD y Consent Mode v2, las cosas son significativamente más complejas.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.
Esta guía te llevara a través de todos los métodos de integración de GA4 con WordPress, desde los más sencillos hasta los más avanzados, incluyendo requisitos legales y las mejores prácticas de 2026.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-método-con-plugin-para-principiantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-método-con-plugin-para-principiantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: Método con plugin (para principiantes)&lt;/h2&gt;
&lt;p&gt;Si no quieres tocar código, usa un plugin. Es el método más simple pero tiene limitaciones.&lt;/p&gt;
&lt;h3 id=&quot;site-kit-de-google-plugin-oficial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#site-kit-de-google-plugin-oficial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Site Kit de Google (plugin oficial)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Producto oficial de Google&lt;/li&gt;
&lt;li&gt;Muestra estadísticas directamente en el panel de WP&lt;/li&gt;
&lt;li&gt;Integración automática con Search Console, PageSpeed Insights&lt;/li&gt;
&lt;li&gt;Configuración más fácil (unos pocos clics)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Control limitado de etiquetas&lt;/li&gt;
&lt;li&gt;Sin opciones de seguimiento avanzado&lt;/li&gt;
&lt;li&gt;Puede entrar en conflicto con otros plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Instalación:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Plugins → Anadir nuevo → “Site Kit”&lt;/li&gt;
&lt;li&gt;Activa y conecta con tu cuenta de Google&lt;/li&gt;
&lt;li&gt;Selecciona los servicios a conectar (Analytics, Search Console)&lt;/li&gt;
&lt;li&gt;Listo&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;rankmath--yoast-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rankmath--yoast-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;RankMath / Yoast SEO&lt;/h3&gt;
&lt;p&gt;Muchos plugins de SEO tienen opciones integradas para el ID de seguimiento. Buena opción si ya usas uno de estos plugins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RankMath:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RankMath → Configuración general → Analytics&lt;/li&gt;
&lt;li&gt;Pega el Measurement ID (G-XXXXXXX)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-2-google-tag-manager-método-profesional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-google-tag-manager-método-profesional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: Google Tag Manager (método profesional)&lt;/h2&gt;
&lt;p&gt;Este es el &lt;strong&gt;método recomendado en 2026&lt;/strong&gt;. En lugar de anadir GA4 directamente, anade un contenedor GTM que gestióne todas las etiquetas.&lt;/p&gt;
&lt;h3 id=&quot;por-que-gtm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-gtm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que GTM?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Panel de gestión centralizado&lt;/strong&gt;: Todas las etiquetas (GA4, Facebook Pixel, Hotjar, anuncios) en un solo lugar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consent Mode v2&lt;/strong&gt;: Implementación sencilla requerida por la legislacion de la UE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin edicion de código&lt;/strong&gt;: Cambios sin modificar archivos del tema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Depuracion&lt;/strong&gt;: Modo de vista previa integrado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versionado&lt;/strong&gt;: Historial de cambios y capacidad de reversión&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;paso-a-paso-integración-de-gtm-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-a-paso-integración-de-gtm-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso a paso: Integración de GTM con WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Crear contenedor GTM:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ve a &lt;a href=&quot;https://tagmanager.google.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;tagmanager.google.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Crea una cuenta y un contenedor (Web)&lt;/li&gt;
&lt;li&gt;Copia el código del contenedor (GTM-XXXXXXX)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Pegar código en WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En functions.php o mu-plugin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_gtm_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_body_open&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_gtm_body&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_gtm_head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Tag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Manager&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(w,d,s,l,i){&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[];&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;push&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;gtm.start&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getTime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;gtm.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    j&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dataLayer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&amp;#x26;l=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;https://www.googletagmanager.com/gtm.js?id=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;parentNode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;insertBefore&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    })(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dataLayer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;GTM-YOUR-ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; End&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Tag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Manager&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_gtm_body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Tag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Manager&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;iframe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://www.googletagmanager.com/ns.html?id=GTM-YOUR-ID&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;display:none;visibility:hidden&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;iframe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; End&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Tag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Manager&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. Configurar etiqueta GA4 en GTM:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En GTM: Etiquetas → Nueva → Configuración GA4&lt;/li&gt;
&lt;li&gt;Pega el Measurement ID (G-XXXXXXX)&lt;/li&gt;
&lt;li&gt;Activador: Todas las páginas&lt;/li&gt;
&lt;li&gt;Publicar&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;consent-mode-v2-obligatorio-en-la-ue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consent-mode-v2-obligatorio-en-la-ue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consent Mode v2 (obligatorio en la UE)&lt;/h3&gt;
&lt;p&gt;Desde marzo de 2024, &lt;strong&gt;Consent Mode v2 es obligatorio&lt;/strong&gt; en Europa. Sin el, Google no procesara los datos de tu sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Que hace:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bloquea las cookies de analítica/publicidad por defecto&lt;/li&gt;
&lt;li&gt;Tras la aceptacion del usuario: seguimiento completo&lt;/li&gt;
&lt;li&gt;Tras el rechazo: pings anonimos (datos modelados)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Implementación con GTM:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instala un banner de cookies (Cookiebot, Complianz, CookieYes)&lt;/li&gt;
&lt;li&gt;Configura la integración con GTM&lt;/li&gt;
&lt;li&gt;Establece las etiquetas en “Respetar Estado de Consentimiento”&lt;/li&gt;
&lt;li&gt;Anade las variables de consentimiento (analytics_storage, ad_storage)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;parte-3-código-directo-para-desarrolladores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-código-directo-para-desarrolladores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Código directo (para desarrolladores)&lt;/h2&gt;
&lt;p&gt;Si quieres evitar plugins y tienes un sitio sencillo, anade el código directamente.&lt;/p&gt;
&lt;h3 id=&quot;implementación-básica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-básica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación básica&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_ga4_code&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_ga4_code&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;js&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://www.googletagmanager.com/gtag/js?id=G-YOUR-ID&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      window&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dataLayer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; window&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dataLayer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dataLayer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;push&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;arguments&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;config&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;G-YOUR-ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;con-soporte-para-consent-mode&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#con-soporte-para-consent-mode&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Con soporte para Consent Mode&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_ga4_with_consent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_ga4_with_consent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;      // Estado de consentimiento por defecto - todo bloqueado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      window&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dataLayer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; window&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dataLayer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;dataLayer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;push&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;arguments&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;consent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;default&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;analytics_storage&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;denied&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;ad_storage&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;denied&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;ad_user_data&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;denied&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;ad_personalization&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;denied&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wait_for_update&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;500&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;js&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://www.googletagmanager.com/gtag/js?id=G-YOUR-ID&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;config&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;G-YOUR-ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-4-server-side-tracking-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-server-side-tracking-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Server-Side Tracking (avanzado)&lt;/h2&gt;
&lt;p&gt;En 2026, los bloqueadores de anuncios y el ITP (Intelligent Tracking Prevention) limitan significativamente la efectividad del seguimiento del lado del clientes. La solución es el &lt;strong&gt;Server-Side Tracking&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;como-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;El script en la página envia datos a tu servidor (no a Google)&lt;/li&gt;
&lt;li&gt;Tu servidor reenvia los datos a Google Analytics&lt;/li&gt;
&lt;li&gt;Los bloqueadores no detectan la conexión con Google&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;opciones-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opciones-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opciones de implementación&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Contenedor Server-Side de Google Tag Manager:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requiere Cloud Run (GCP) u otro alojamiento&lt;/li&gt;
&lt;li&gt;Coste: ~50-100$/mes para tráfico medio&lt;/li&gt;
&lt;li&gt;Control total de los datos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Stape.io (SaaS):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sGTM alojado&lt;/li&gt;
&lt;li&gt;Configuración más fácil&lt;/li&gt;
&lt;li&gt;Desde 20$/mes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;beneficios-del-server-side&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#beneficios-del-server-side&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Beneficios del Server-Side&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resistente a bloqueadores de anuncios&lt;/strong&gt;: ~95% de datos vs ~70%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mayor precision&lt;/strong&gt;: Menos perdidas de conversiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cookies de primera parte&lt;/strong&gt;: Mayor vida útil de las cookies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacidad&lt;/strong&gt;: Los datos pasan por tu servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-5-seguimiento-de-comercio-electronico-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-seguimiento-de-comercio-electronico-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Seguimiento de comercio electronico (WooCommerce)&lt;/h2&gt;
&lt;p&gt;Si tienes una tienda, necesitas Enhanced E-commerce.&lt;/p&gt;
&lt;h3 id=&quot;seguimiento-automático-con-gtm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguimiento-automático-con-gtm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguimiento automático con GTM&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Data Layer&lt;/strong&gt;: WooCommerce envia datos de productos, carrito y compras&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etiquetas de E-commerce GA4&lt;/strong&gt;: Configuración en GTM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eventos&lt;/strong&gt;: view_item, add_to_cart, purchase&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;plugin-de-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugin-de-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugin de WooCommerce&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;GTM4WP (Premium)&lt;/strong&gt; o &lt;strong&gt;Monster Insights (Pro)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integración automática del Data Layer&lt;/li&gt;
&lt;li&gt;Plantillas de etiquetas predefinidas&lt;/li&gt;
&lt;li&gt;Seguimiento de conversiones sin programacion&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-6-depuracion-y-verificación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-depuracion-y-verificación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Depuracion y verificación&lt;/h2&gt;
&lt;h3 id=&quot;herramientas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Google Tag Assistant&lt;/strong&gt;: Extension de Chrome&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modo de vista previa de GTM&lt;/strong&gt;: Modo preview&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DebugView de GA4&lt;/strong&gt;: Tiempo real en GA4&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pestana Network&lt;/strong&gt;: Comprobar si las solicitudes se envian&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;problemás-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problemás-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problemás comunes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Seguimiento doble:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sintoma: 200% de páginas vistas&lt;/li&gt;
&lt;li&gt;Causa: Dos etiquetas GA4 (p. ej., Site Kit + GTM)&lt;/li&gt;
&lt;li&gt;Solución: Eliminar una fuente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Sin datos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sintoma: 0 usuarios&lt;/li&gt;
&lt;li&gt;Causa: Consentimiento bloqueado / ID incorrecto&lt;/li&gt;
&lt;li&gt;Solución: Comprobar Consent Mode y Measurement ID&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Incumplimiento del RGPD:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sintoma: Seguimiento antes del consentimiento&lt;/li&gt;
&lt;li&gt;Causa: Sin Consent Mode&lt;/li&gt;
&lt;li&gt;Solución: Implementar Consent Mode v2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Método&lt;/th&gt;&lt;th&gt;Nivel&lt;/th&gt;&lt;th&gt;Consent Mode&lt;/th&gt;&lt;th&gt;Server-Side&lt;/th&gt;&lt;th&gt;E-commerce&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Plugin (Site Kit)&lt;/td&gt;&lt;td&gt;Principiante&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GTM Client-Side&lt;/td&gt;&lt;td&gt;Intermedio&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GTM + Consent Mode&lt;/td&gt;&lt;td&gt;Profesional&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sGTM Server-Side&lt;/td&gt;&lt;td&gt;Experto&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sitios pequeños&lt;/strong&gt;: Site Kit o RankMath&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Negocios/Agencias&lt;/strong&gt;: GTM + Consent Mode v2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E-commerce/Enterprise&lt;/strong&gt;: sGTM Server-Side&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No dejes que tus datos de analítica esten incompletos. Invierte en una configuración adecuada: es la base de todas las decisiones de marketing.&lt;/p&gt;</content:encoded><category>analytics</category><category>wordpress</category><category domain="tag">ga4</category><category domain="tag">google analytics</category><category domain="tag">gtm</category><category domain="tag">consent mode</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Optimización moderna de imágenes para WordPress en 2026</title><link>https://wppoland.com/es/modern-image-optimization-wordpress-2026-avif-jpeg-xl-guide/</link><guid isPermaLink="true">https://wppoland.com/es/modern-image-optimization-wordpress-2026-avif-jpeg-xl-guide/</guid><description>Las imágenes representan el 60% del peso de una página. En 2026, los bytes son su enemigo. Aprenda a dominar AVIF, JPEG XL y la compresion impulsada por IA para WordPress.</description><pubDate>Sun, 05 Jan 2025 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Si su sitio WordPress todavia sirve JPEGs o incluso WebPs estándar a dispositivos premium, esta dejando velocidad (y SEO) sobre la mesa. Las imágenes representan tipicamente la porcion más grande del peso total de una página web. En una era donde un &lt;strong&gt;LCP inferior al segundo&lt;/strong&gt; es el requisito para sitios de nivel empresarial, la optimización de imágenes ha evolucionado de “reducir archivos” a “gestión algoritmica de activos visuales.”&lt;/p&gt;
&lt;p&gt;El año 2026 marca la madurez de dos formatos revolucionarios: &lt;strong&gt;AVIF&lt;/strong&gt; y &lt;strong&gt;JPEG XL&lt;/strong&gt;. Combinados con procesamiento impulsado por IA, estas tecnologías permiten que su sitio WordPress luzca espectacular en una pantalla 5K mientras carga instantaneamente en un smartphone economico.&lt;/p&gt;
&lt;p&gt;En esta exhaustiva guía técnica de más de 2000 palabras, dominamos el panorama de rendimiento visual de 2026.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-el-poder-de-avif-por-que-webp-ya-no-es-el-rey&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-poder-de-avif-por-que-webp-ya-no-es-el-rey&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El poder de AVIF: Por que WebP ya no es el rey&lt;/h2&gt;
&lt;p&gt;AVIF (AV1 Image File Format) se ha convertido en el estándar de oro en 2026.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compresion extrema&lt;/strong&gt;: Los archivos AVIF son frecuentemente entre un 40-50% más pequeños que los JPEG y entre un 20-30% más pequeños que WebP para una calidad visual identica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HDR y amplio gamut de color&lt;/strong&gt;: Los sitios corporativos de alta gama en 2026 entregan colores vibrantes y negros profundos que los formatos antiguos simplemente no pueden reproducir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manejo sin perdida&lt;/strong&gt;: Incluso con configuraciónes agresivas, AVIF mantiene texto y elementos de interfaz nitidos, haciendolo perfecto para secciones hero con tipografia integrada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La transicion de WebP a AVIF representa uno de los saltos más significativos en la historia de los formatos de imagen web. Mientras que WebP fue revolucionario en su momento al ofrecer mejoras del 25-30% sobre JPEG, AVIF lleva esta ventaja mucho más alla. En pruebas reales con imágenes tipicas de comercio electronico, hemos observado reducciones de tamaño del 60-70% respecto a JPEG sin degradacion perceptible de la calidad.&lt;/p&gt;
&lt;p&gt;Para entender por que AVIF es tan superior, es necesario comprender su base tecnológica. AVIF utiliza el codec de video AV1 para comprimir imágenes individuales. AV1 fue desarrollado por la Alliance for Open Media, un consorcio que incluye a Google, Apple, Microsoft, Mozilla y Netflix. Esta herencia de compresion de video significa que AVIF tiene acceso a técnicas de prediccion y transformación que fueron desarrolladas para manejar la complejidad visual de contenido de video de alta resolución, pero aplicadas a imágenes estaticas.&lt;/p&gt;
&lt;p&gt;El soporte de navegadores para AVIF en 2026 es practicamente universal. Chrome, Firefox, Safari y Edge soportan AVIF de forma nativa, cubriendo más del 98% del tráfico web global. Esto elimina la principal barrera que existia en años anteriores, cuando Safari de Apple todavia no habia implementado el soporte completo.&lt;/p&gt;
&lt;p&gt;La compatibilidad con HDR y amplio gamut es particularmente relevante para sitios de comercio electronico y marcas de lujo. Las pantallas modernas de smartphones y monitores son capaces de reproducir rangos de color que van mucho más alla del espacio sRGB tradicional. AVIF permite que las imágenes de productos se muestren con la misma fidelidad de color que la fotografia original, creando una experiencia visual que puede marcar la diferencia en la decision de compra.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-jpeg-xl-la-alternativa-de-alta-fidelidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-jpeg-xl-la-alternativa-de-alta-fidelidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. JPEG XL: La alternativa de alta fidelidad&lt;/h2&gt;
&lt;p&gt;Despues de un breve periodo de incertidumbre, JPEG XL ha emergido en 2026 como la opción preferida para fotografos y entornos de alto DPI “Retina”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Decodificacion progresiva&lt;/strong&gt;: JXL permite que una versión borrosa de la imagen aparezca casí instantaneamente, que luego se va definiendo a medida que llegan los datos, mejorando la velocidad &lt;em&gt;percibida&lt;/em&gt; del sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transcodificacion sin perdida&lt;/strong&gt;: En 2026, JXL permite almacenar activos de archivo en alta resolución sin el enorme peso de PNG.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La historia de JPEG XL es una de las más interesantes en el mundo de la tecnología web reciente. Despues de que Chrome retirara temporalmente el soporte experimental para el formato, la presion de la comunidad fotografica y editorial llevo a una reconsideracion. En 2025, los principales navegadores reintrodujeron el soporte para JXL, reconociendo su valor único para casos de uso de alta fidelidad.&lt;/p&gt;
&lt;p&gt;Donde JPEG XL realmente brilla es en la transicion desde bibliotecas existentes de JPEG. El formato permite una conversión sin perdida desde JPEG original, lo que significa que puede actualizar toda su biblioteca de imágenes al nuevo formato sin ninguna degradacion de calidad adicional. Esto es especialmente valioso para sitios con miles de imágenes historicas que no pueden ser re-fotografiadas o regeneradas desde los archivos originales.&lt;/p&gt;
&lt;p&gt;La decodificacion progresiva de JXL es significativamente superior a la de JPEG progresivo. Mientras que JPEG progresivo muestra versiones borrosas que se aclaran en pasos discretos, JXL ofrece una mejora continua y suave que resulta en una experiencia visual más agradable. El usuario percibe que la imagen “aparece” de forma natural en lugar de “parpadear” entre niveles de calidad.&lt;/p&gt;
&lt;p&gt;Para los sitios que manejan fotografia de alta calidad, como portafolios, galerias de arte, revistas digitales y sitios de viajes, JPEG XL ofrece una combinación de calidad y rendimiento que ningun otro formato puede igualar. La capacidad de mantener detalles de textura finos, gradientes suaves y precision de color en archivos de tamaño razonable lo convierte en la opción obvia para contenido visual premium.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-la-estrategia-lcp-carga-anticipada-vs-fetch-priority&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-la-estrategia-lcp-carga-anticipada-vs-fetch-priority&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. La “estrategia LCP”: Carga anticipada vs. Fetch Priority&lt;/h2&gt;
&lt;p&gt;El &lt;strong&gt;Largest Contentful Paint (LCP)&lt;/strong&gt; es la metrica que más importa para la confianza del usuario.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La regla de carga anticipada&lt;/strong&gt;: Cualquier imagen “above the fold” debe tener &lt;code&gt;loading=&quot;eager&quot;&lt;/code&gt; y &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt;. Esto le dice al navegador que descargue la imagen del hero &lt;em&gt;antes&lt;/em&gt; que el JavaScript secundario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precarga de imágenes criticas&lt;/strong&gt;: En 2026, utilizamos &lt;code&gt;&amp;#x3C;link rel=&quot;preload&quot;&gt;&lt;/code&gt; en el head del HTML para asegurar que el navegador conozca la imagen LCP en el milisegundo en que la página comienza a cargarse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La estrategia LCP es el punto donde la optimización de imágenes se intersecta directamente con el rendimiento percibido del sitio. No importa cuan perfectamente comprimidas esten sus imágenes si el navegador no sabe que debe priorizarlas. Sin las directivas correctas de carga, el navegador tratara la imagen del hero con la misma prioridad que un icono de redes sociales en el pie de página.&lt;/p&gt;
&lt;p&gt;El atributo &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; es relativamente nuevo y su impacto es dramatico. En nuestras pruebas, anadir este atributo a la imagen LCP tipicamente reduce el LCP entre 200ms y 500ms sin ningun otro cambio. El motivo es que el navegador eleva la prioridad de descarga de esa imagen por encima de otros recursos como hojas de estilo no criticas y scripts de terceros.&lt;/p&gt;
&lt;p&gt;La combinación de &lt;code&gt;&amp;#x3C;link rel=&quot;preload&quot;&gt;&lt;/code&gt; con &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; crea un flujo de carga optimo. El preload informa al navegador sobre la existencia de la imagen antes de que el parser HTML llegue al elemento &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt;, y el fetchpriority asegura que, una vez que la descarga comienza, recibe la maxima prioridad de red. El resultado neto es que la imagen LCP comienza a descargarse casí inmediatamente despues de que el navegador recibe el primer byte del HTML.&lt;/p&gt;
&lt;p&gt;Un error comun que vemos en sitios WordPress es aplicar &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; a todas las imágenes indiscriminadamente. Mientras que la carga diferida es excelente para imágenes debajo del pliegue, aplicarla a la imagen del hero es contraproducente. El navegador retrasa la descarga de la imagen hasta que se acerca al viewport, anadiendo cientos de milisegundos innecesarios al LCP.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-compresion-impulsada-por-ia-equilibrio-consciente-del-contexto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-compresion-impulsada-por-ia-equilibrio-consciente-del-contexto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Compresion impulsada por IA: Equilibrio consciente del contexto&lt;/h2&gt;
&lt;p&gt;En 2026, ya no aplicamos una configuración uniforme de “Calidad: 80” a todas las imágenes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deteccion de saliencia&lt;/strong&gt;: Las herramientas de IA analizan sus imágenes para encontrar el punto focal (por ejemplo, el rostro de una persona o un producto). La IA aplica baja compresion al punto focal y compresion agresiva “con perdida” al cielo de fondo o las paredes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: El usuario ve una imagen perfecta y nitida, pero el tamaño del archivo es un 70% menor que con los métodos tradicionales.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La compresion inteligente basada en IA representa un cambio de paradigma en como procesamos las imágenes. En lugar de tratar cada pixel de la imagen con la misma importancia, los algoritmos de IA comprenden que elementos de la imagen son visualmente críticos y cuales pueden comprimirse más agresivamente sin que el ojo humano perciba la diferencia.&lt;/p&gt;
&lt;p&gt;Esta tecnología utiliza redes neuronales entrenadas con millones de imágenes y datos de seguimiento ocular. Los modelos aprenden donde miran los humanos cuando ven diferentes tipos de imágenes: rostros, productos, texto, logotipos. Con este conocimiento, la IA puede crear “mapas de calidad” que asignan diferentes niveles de compresion a diferentes regiones de la imagen.&lt;/p&gt;
&lt;p&gt;Para un sitio de comercio electronico, esto es transformador. Una imagen de producto tipica muestra el producto sobre un fondo neutro. Con compresion tradicional, el fondo recibe la misma calidad que el producto. Con compresion impulsada por IA, el fondo puede comprimirse al 40% de calidad mientras el producto se mantiene al 95%, resultando en un archivo significativamente más pequeño sin ninguna degradacion visible del producto.&lt;/p&gt;
&lt;p&gt;Las herramientas disponibles en 2026 incluyen Cloudflare Image Resizing con optimización inteligente, ShortPixel con su motor SmartCompress y soluciones personalizadas basadas en modelos de código abierto. La integración con WordPress es fluida a través de plugins que procesan automáticamente cada imagen subida a la biblioteca de medios.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-optimización-de-imágenes-en-el-edge-redimensionamiento-como-servicio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-optimización-de-imágenes-en-el-edge-redimensionamiento-como-servicio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Optimización de imágenes en el Edge: Redimensionamiento como servicio&lt;/h2&gt;
&lt;p&gt;Los sitios WordPress modernos en 2026 trasladan el redimensionamiento lejos del origen PHP.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Breakpoints dinámicos&lt;/strong&gt;: En lugar de usar 3 tamaños preestablecidos (Miniatura, Mediano, Grande), utilizamos servicios de Edge Resizing como Cloudflare Images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El proceso&lt;/strong&gt;: Si un usuario esta en un iPad, el servicio Edge crea un AVIF de ajuste exacto a 1024px sobre la marcha y lo almacena en cache. El servidor WordPress nunca toca el procesamiento de imágenes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El redimensionamiento en el Edge elimina una de las mayores ineficiencias del modelo tradicional de WordPress para imágenes. En una instalación estándar, WordPress genera entre 5 y 10 versiones de cada imagen subida, en tamaños predeterminados que pueden o no coincidir con los tamaños reales que los visitantes necesitan. Esto genera almacenamiento innecesario en el servidor y, frecuentemente, sirve imágenes que son demasiado grandes o demasiado pequeñas para el dispositivo del usuario.&lt;/p&gt;
&lt;p&gt;Con el redimensionamiento en el Edge, WordPress almacena únicamente la imagen original en alta resolución. Cuando un visitante solicita una página, el servicio de Edge intercepta la solicitud de imagen, determina el tamaño optimo basandose en el dispositivo y la resolución de pantalla del visitante, genera una versión perfectamente dimensionada en el formato optimo (AVIF, JXL o WebP según el soporte del navegador) y la almacena en cache para solicitudes futuras.&lt;/p&gt;
&lt;p&gt;Este enfoque ofrece multiples ventajas. Primero, el servidor WordPress se libera de la carga computacional del procesamiento de imágenes, lo que mejora el TTFB. Segundo, cada visitante recibe exactamente la imagen que necesita, ni un pixel más ni un pixel menos. Tercero, el almacenamiento en el servidor se reduce drasticamente porque solo se mantiene una copia de cada imagen.&lt;/p&gt;
&lt;p&gt;La implementación con Cloudflare Images o Bunny Optimizer es directa para sitios WordPress. Se configura una regla que reescribe las URLs de imágenes para pasar a través del servicio de Edge, y el resto es automático. No se requieren cambios en el contenido existente ni en el flujo de trabajo editorial.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-por-que-wppoland-es-su-socio-en-rendimiento-visual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-por-que-wppoland-es-su-socio-en-rendimiento-visual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Por que WPPoland es su socio en rendimiento visual&lt;/h2&gt;
&lt;p&gt;En &lt;strong&gt;WPPoland&lt;/strong&gt;, tratamos las imágenes como datos críticos.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pipelines AVIF automatizados&lt;/strong&gt;: Implementamos sistemas backend que convierten automáticamente cada carga en el mejor formato posible de 2026.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis forense de LCP&lt;/strong&gt;: Utilizamos herramientas personalizadas para identificar exactamente por que una imagen esta retrasando su LCP y lo rectificamos con precarga y prioridades de descarga.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orquestacion Hi-DPI&lt;/strong&gt;: Aseguramos que su sitio se vea nitido en monitores de alta gama sin penalizar a los usuarios móviles con archivos masivos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nuestro enfoque en la optimización de imágenes es sistematico y exhaustivo. Comenzamos con una auditoria completa de todas las imágenes del sitio, identificando oportunidades de optimización y estableciendo una linea base de rendimiento. Luego implementamos un pipeline automatizado que procesa cada nueva imagen según las mejores prácticas de 2026, eliminando la posibilidad de error humano.&lt;/p&gt;
&lt;p&gt;La optimización de imágenes no es un evento único, sino un proceso continuo. Los equipos de marketing y contenido suben nuevas imágenes constantemente, y cada una de ellas debe estar optimizada. Nuestros pipelines automatizados aseguran que cada imagen, sin importar quien la suba o desde que dispositivo, se procese automáticamente para obtener el tamaño de archivo minimo con la maxima calidad visual.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-faq-rendimiento-de-imágenes-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-faq-rendimiento-de-imágenes-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. FAQ: Rendimiento de imágenes en 2026&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Puedo eliminar mis viejos JPEG?&lt;/strong&gt;
Todavia no. En 2026, seguimos usando &lt;code&gt;&amp;#x3C;picture&gt;&lt;/code&gt; con JPEG como respaldo final para navegadores heredados extremadamente antiguos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sigue siendo relevante SVG para iconos?&lt;/strong&gt;
Si. SVG sigue siendo lo mejor para logotipos e iconos simples. Sin embargo, para graficos vectoriales complejos, AVIF a veces puede ser incluso más pequeño.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debo usar Interlace en JPEG?&lt;/strong&gt;
En 2026, dejamos atras el entrelazado y avanzamos hacia la visualización progresiva superior de JPEG XL.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La pregunta sobre SVG merece una expansion. SVG no solo sigue siendo relevante en 2026, sino que su importancia ha crecido. Los iconos SVG se escalan perfectamente a cualquier resolución sin aumento de tamaño de archivo, se pueden estilizar con CSS, se pueden animar y son accesibles para lectores de pantalla cuando se marcan correctamente. Para cualquier grafico que consista en formás geometricas simples, lineas y texto, SVG es y seguira siendo la opción superior.&lt;/p&gt;
&lt;p&gt;Sin embargo, para ilustraciones complejas con muchas curvas, gradientes y efectos, el tamaño del archivo SVG puede crecer rápidamente. En estos casos, una imagen AVIF rasterizada a la resolución adecuada puede ser significativamente más pequeña que su equivalente SVG, manteniendo una calidad visual excelente incluso en pantallas de alta resolución.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-conclusion-la-velocidad-invisible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-conclusion-la-velocidad-invisible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Conclusion: La velocidad invisible&lt;/h2&gt;
&lt;p&gt;Mas información sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.
La mejor optimización de imágenes es aquella que el usuario nunca nota. Cuando su sitio se siente rápido, pero los elementos visuales son ricos y vibrantes, ha alcanzado el estándar de 2026. Al dominar &lt;strong&gt;AVIF, JXL y flujos de trabajo impulsados por IA&lt;/strong&gt;, asegura que su sitio WordPress sea un lider visual de alto rendimiento.&lt;/p&gt;
&lt;p&gt;En el panorama competitivo actual, la diferencia entre un sitio que carga en 1 segundo y uno que carga en 3 segundos puede significar decenas de miles de euros en ingresos perdidos al mes. La optimización de imágenes es frecuentemente la palanca más efectiva para cerrar esa brecha, porque las imágenes representan la mayor parte del peso de la página y son el elemento que más impacta en la percepcion de velocidad del usuario.&lt;/p&gt;
&lt;p&gt;No espere a que sus metricas de Core Web Vitals caigan al rojo. La optimización proactiva de imágenes es una inversión que se paga sola en forma de mejor posicionamiento SEO, menores tasas de rebote y mayores conversiones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estan sus imágenes arrastrando sus Core Web Vitals? Contacte a WPPoland para una auditoria de optimización automatizada.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>performance</category><category>design</category><category domain="tag">image-optimization</category><category domain="tag">avif-format</category><category domain="tag">jpeg-xl</category><category domain="tag">lcp-improvement</category><category domain="tag">wordpress-speed</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-presentation-stage.jpg" type="image/jpeg"/></item><item><title>El mejor CMS para SEO en 2026: Ganando el juego de la búsqueda</title><link>https://wppoland.com/es/best-cms-for-seo-2026-en/</link><guid isPermaLink="true">https://wppoland.com/es/best-cms-for-seo-2026-en/</guid><description>El SEO ya no se trata solo de palabras clave; se trata de rendimiento y estructura. Analizamos que plataformas CMS proporcionan la mejor base de SEO técnico en 2026.</description><pubDate>Sun, 22 Dec 2024 10:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;En 2026, el &lt;strong&gt;SEO (Search Engine Optimization)&lt;/strong&gt; ha evolucionado más alla de simples meta tags. Los algoritmos impulsados por IA de Google ahora priorizan la &lt;strong&gt;autoridad temática&lt;/strong&gt;, los &lt;strong&gt;datos estructurados&lt;/strong&gt; y las &lt;strong&gt;metricas de experiencia de usuario&lt;/strong&gt; (Core Web Vitals). Tu eleccion de &lt;strong&gt;Sistema de Gestión de Contenido (CMS)&lt;/strong&gt; actua como la base de toda tu presencia digital.&lt;/p&gt;
&lt;p&gt;Si tu base es debil, tus rankings colapsaran. Aqui esta nuestra guía experta sobre las mejores plataformas CMS para SEO en 2026.&lt;/p&gt;
&lt;p&gt;La eleccion de CMS ya no es una decision puramente técnica - es una decision estrategica de negocio que afecta directamente tu visibilidad, tu tráfico organico y, en última instancia, tus ingresos. En esta guía de más de 2500 palabras, analizamos cada plataforma principal desde la perspectiva de un profesional SEO experimentado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-wordpress-el-rey-indiscutible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-wordpress-el-rey-indiscutible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. WordPress: El rey indiscutible&lt;/h2&gt;
&lt;p&gt;WordPress sigue siendo el estándar de oro para SEO. No se trata solo del software; se trata del ecosistema completo que lo rodea - plugins, comunidad, documentación y decadas de optimización para motores de búsqueda.&lt;/p&gt;
&lt;h3 id=&quot;control-técnico-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#control-técnico-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Control técnico total&lt;/h3&gt;
&lt;p&gt;Con el tema adecuado (como un Block Theme) y plugins (RankMath o SEOPress), tienes &lt;strong&gt;100% de control sobre cada etiqueta HTML&lt;/strong&gt;. Puedes personalizar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Meta titles y descriptions a nivel de página, categoría y taxonomía&lt;/li&gt;
&lt;li&gt;Canonical URLs y directivas de indexacion&lt;/li&gt;
&lt;li&gt;Sitemaps XML con configuración granular&lt;/li&gt;
&lt;li&gt;Schema markup (JSON-LD) para cualquier tipo de contenido&lt;/li&gt;
&lt;li&gt;Hreflang para sitios multilingues&lt;/li&gt;
&lt;li&gt;Robots.txt y meta robots por página&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;velocidad-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad de contenido&lt;/h3&gt;
&lt;p&gt;WordPress esta construido para publicar. Cuanto más rápido puedes enviar contenido de alta calidad, más rápido construyes autoridad temática. El editor de bloques (Gutenberg) en 2026 permite crear contenido rico y semanticamente correcto sin tocar código, lo que acelera los flujos de trabajo editorial.&lt;/p&gt;
&lt;p&gt;La velocidad de publicación es crucial porque la autoridad temática - la percepcion de Google de que eres un experto en un tema - se construye a través de cobertura profunda y consistente. WordPress facilita esta producción más que cualquier otro CMS.&lt;/p&gt;
&lt;h3 id=&quot;maestria-en-schema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#maestria-en-schema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Maestria en Schema&lt;/h3&gt;
&lt;p&gt;Implementar schemás JSON-LD complejos para HowTo, FAQ, Product, Article y Organization sin programar es una fortaleza única de WordPress. Plugins como RankMath generan automáticamente datos estructurados basados en el tipo de contenido, mientras permiten personalización manual cuando es necesario.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO, GEO y AEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h3 id=&quot;desventajas-de-wordpress-para-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas-de-wordpress-para-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas de WordPress para SEO&lt;/h3&gt;
&lt;p&gt;Seamos honestos: WordPress no es perfecto. Sus principales debilidades SEO incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento variable&lt;/strong&gt;: Sin optimización cuidadosa, WordPress puede ser lento. Los constructores de páginas, plugins excesivos y temas mal codificados degradan los Core Web Vitals.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complejidad de mantenimiento&lt;/strong&gt;: Mantener WordPress optimizado para SEO requiere conocimiento técnico continuo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencia de plugins&lt;/strong&gt;: Funcionalidades SEO criticas dependen de plugins de terceros que pueden cambiar, quebrarse o abandonarse.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-ghost-el-demonio-de-la-velocidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-ghost-el-demonio-de-la-velocidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Ghost: El demonio de la velocidad&lt;/h2&gt;
&lt;p&gt;Si tu prioridad es puramente “velocidad de contenido” y “velocidad de página”, Ghost es increible. Es una experiencia radicalmente más rápida de fabrica.&lt;/p&gt;
&lt;h3 id=&quot;seo-integrado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-integrado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO integrado&lt;/h3&gt;
&lt;p&gt;Meta tags, sitemaps y canonicals se manejan nativamente sin plugins. No hay que configurar nada - Ghost genera metadatos correctos automáticamente basandose en el título, la descripción y la imagen de cada publicación.&lt;/p&gt;
&lt;h3 id=&quot;rendimiento-excepcional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-excepcional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento excepcional&lt;/h3&gt;
&lt;p&gt;Puntuaciones 100/100 en Lighthouse consistentemente gracias a su arquitectura ligera Node.js. No hay base de datos SQL pesada, no hay plugins que cargar, no hay temas complejos que renderizar. Ghost genera HTML limpio y eficiente.&lt;/p&gt;
&lt;h3 id=&quot;limitaciones-de-ghost-para-seo-avanzado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones-de-ghost-para-seo-avanzado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones de Ghost para SEO avanzado&lt;/h3&gt;
&lt;p&gt;Donde Ghost se queda corto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Schema limitado&lt;/strong&gt;: Solo genera schema básico de Article. No hay soporte nativo para FAQ, HowTo, Product u otros tipos de schema avanzado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin taxonomías flexibles&lt;/strong&gt;: Las categorías y etiquetas son básicas. No puedes crear taxonomías personalizadas para construir silos de contenido complejos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin plugins&lt;/strong&gt;: No hay ecosistema de extensiónes. Lo que Ghost ofrece de fabrica es lo que obtienes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin e-commerce nativo&lt;/strong&gt;: Si necesitas vender productos, Ghost no es la opción.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-contentful--strapi-seo-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-contentful--strapi-seo-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Contentful / Strapi (SEO Headless)&lt;/h2&gt;
&lt;p&gt;Ir headless te da libertad técnica absoluta, pero traslada la responsabilidad SEO a tus desarrolladores.&lt;/p&gt;
&lt;h3 id=&quot;ventajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas&lt;/h3&gt;
&lt;p&gt;Puedes construir un frontend ultra-rápido con Astro o Next.js que esta perfectamente optimizado. Cada aspecto del renderizado HTML esta bajo tu control total. Para equipos con desarrolladores experimentados, esto significa que puedes lograr rendimiento y SEO perfectos.&lt;/p&gt;
&lt;h3 id=&quot;desventajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;p&gt;No hay campos SEO nativos. Debes construir tus propios modelos de contenido para metadatos y datos estructurados. Esto significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crear campos personalizados para meta title, description, canonical URL, etc.&lt;/li&gt;
&lt;li&gt;Implementar generación de sitemaps XML manualmente&lt;/li&gt;
&lt;li&gt;Construir la lógica de robots.txt y meta robots desde cero&lt;/li&gt;
&lt;li&gt;Programar la generación de schema JSON-LD para cada tipo de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El costo de desarrollo es significativamente mayor, y el margen de error es alto. Un error en la implementación de canonicals o hreflang puede destruir meses de trabajo SEO.&lt;/p&gt;
&lt;h3 id=&quot;cuando-tiene-sentido-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-tiene-sentido-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando tiene sentido Headless&lt;/h3&gt;
&lt;p&gt;Headless tiene sentido cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tu equipo de desarrollo tiene experiencia SEO profunda&lt;/li&gt;
&lt;li&gt;Necesitas servir contenido en multiples canales (web, app, kioscos)&lt;/li&gt;
&lt;li&gt;El rendimiento ultra-alto es un requisito crítico de negocio&lt;/li&gt;
&lt;li&gt;Tienes el presupuesto para desarrollo y mantenimiento personalizado continuo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a arquitecturas Headless&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-statamic-la-alternativa-segura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-statamic-la-alternativa-segura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Statamic: La alternativa segura&lt;/h2&gt;
&lt;p&gt;Statamic es un CMS de archivo plano basado en Laravel. Al no haber base de datos que consultar, el tiempo de respuesta del servidor (TTFB) es practicamente instantaneo.&lt;/p&gt;
&lt;h3 id=&quot;por-que-gana-para-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-gana-para-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que gana para SEO&lt;/h3&gt;
&lt;p&gt;Excelente rendimiento combinado con un editor “Bard” que asegura estructura HTML semántica cada vez. Statamic genera marcado limpio y consistente sin la necesidad de plugins SEO adicionales.&lt;/p&gt;
&lt;p&gt;El enfoque de archivo plano también significa que las copias de seguridad son triviales (simplemente versióna tu repositorio Git) y no hay riesgo de inyeccion SQL porque no hay SQL.&lt;/p&gt;
&lt;h3 id=&quot;limitaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Comunidad mucho más pequeña que WordPress&lt;/li&gt;
&lt;li&gt;Ecosistema de extensiónes limitado&lt;/li&gt;
&lt;li&gt;Requiere conocimiento de Laravel para personalización avanzada&lt;/li&gt;
&lt;li&gt;Menos hosting especializado disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-hubspot-cms-la-opción-integrada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-hubspot-cms-la-opción-integrada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. HubSpot CMS: La opción integrada&lt;/h2&gt;
&lt;p&gt;Para empresas B2B, HubSpot CMS ofrece un motor integrado de “Recomendaciones SEO” que vincula tus rankings directamente a tus datos de CRM.&lt;/p&gt;
&lt;h3 id=&quot;por-que-gana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-gana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que gana&lt;/h3&gt;
&lt;p&gt;Herramientas de optimización integradas que son fáciles de usar para marketers no técnicos. La integración CRM-CMS permite medir directamente el impacto del SEO en leads y ventas, no solo en tráfico.&lt;/p&gt;
&lt;h3 id=&quot;limitaciones-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Costo significativamente más alto que las alternativas de código abierto&lt;/li&gt;
&lt;li&gt;Menos control técnico que WordPress o soluciones headless&lt;/li&gt;
&lt;li&gt;Bloqueo de proveedor: migrar desde HubSpot es complejo y costoso&lt;/li&gt;
&lt;li&gt;Rendimiento inferior a las soluciones optimizadas manualmente&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-comparación-de-capacidades-seo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-comparación-de-capacidades-seo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Comparación de capacidades SEO en 2026&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;




































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WordPress&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ghost&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Headless (Next.js)&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Statamic&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gestión de Sitemaps&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativa/Avanzada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativa&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual/Scripted&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativa&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Soporte Schema.org&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ilimitado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Básico&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ilimitado (Código)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderado&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Optimización móvil&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Depende del tema&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Control total&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Optimización de contenido&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alta (Plugins)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguna (Externa)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Velocidad (TTFB)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderada (Buena con Cache)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;La más rápida&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Costo de implementación SEO&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo-Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Bajo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Alto&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Flexibilidad E-E-A-T&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Maxima&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Maxima&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Buena&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Integración con IA SEO&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extensiva&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Personalizable&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limitada&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-el-papel-de-la-ia-en-el-seo-del-cms-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-el-papel-de-la-ia-en-el-seo-del-cms-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. El papel de la IA en el SEO del CMS en 2026&lt;/h2&gt;
&lt;p&gt;La IA ha transformado fundamentalmente como funcionan los motores de búsqueda, y esto tiene implicaciones directas para la eleccion de CMS.&lt;/p&gt;
&lt;h3 id=&quot;búsqueda-semántica-y-entidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#búsqueda-semántica-y-entidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Búsqueda semántica y entidades&lt;/h3&gt;
&lt;p&gt;Google ya no busca coincidencias de palabras clave - busca entidades y relaciones entre conceptos. Un CMS que fácilite la creación de contenido basado en entidades (con datos estructurados robustos) tiene una ventaja inherente. WordPress lidera en esta area gracias a plugins como RankMath que generan grafos de entidades automáticamente.&lt;/p&gt;
&lt;h3 id=&quot;e-e-a-t-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#e-e-a-t-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;E-E-A-T automatizado&lt;/h3&gt;
&lt;p&gt;Los motores de búsqueda ahora evaluan Experiencia, Conocimiento, Autoridad y Confiabilidad (E-E-A-T) a nivel de entidad, no solo a nivel de página. Un CMS que fácilite perfiles de autor detallados, credenciales verificables y contenido de primera mano tiene una ventaja SEO significativa.&lt;/p&gt;
&lt;h3 id=&quot;contenido-para-llms&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-para-llms&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido para LLMs&lt;/h3&gt;
&lt;p&gt;En 2026, optimizar para LLMs (Large Language Models) es tan importante como optimizar para Google. Los asistentes de IA como ChatGPT y Gemini recurren a sitios con datos estructurados claros para responder preguntas de usuarios. Un CMS que genere schema rico y contenido semanticamente claro será citado más frecuentemente por estos sistemas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-criterios-de-seleccion-para-tu-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-criterios-de-seleccion-para-tu-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Criterios de seleccion para tu negocio&lt;/h2&gt;
&lt;h3 id=&quot;elige-wordpress-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elige-wordpress-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elige WordPress si:&lt;/h3&gt;
&lt;p&gt;Estas en un &lt;strong&gt;nicho competitivo&lt;/strong&gt; (SaaS, FinTech, Salud) donde necesitas control profundo sobre SEO técnico, schema y enlazado interno. WordPress es la eleccion cuando el SEO es una ventaja competitiva crítica y necesitas la maxima flexibilidad para ejecutar estrategias complejas.&lt;/p&gt;
&lt;h3 id=&quot;elige-ghost-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elige-ghost-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elige Ghost si:&lt;/h3&gt;
&lt;p&gt;Eres un &lt;strong&gt;editor o creador individual&lt;/strong&gt; que quiere el sitio más rápido posible con cero mantenimiento. Ghost es ideal para blogs personales, newsletters y publicaciónes de nicho donde la velocidad y la simplicidad son prioritarias sobre la funcionalidad avanzada.&lt;/p&gt;
&lt;h3 id=&quot;elige-una-configuración-headless-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elige-una-configuración-headless-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elige una configuración Headless si:&lt;/h3&gt;
&lt;p&gt;Tienes un &lt;strong&gt;equipo de desarrollo dedicado&lt;/strong&gt; y estas construyendo una plataforma compleja donde el SEO es solo una parte de la experiencia global de la aplicación. Headless es la eleccion cuando necesitas servir contenido en multiples canales y tienes el presupuesto para desarrollo personalizado.&lt;/p&gt;
&lt;h3 id=&quot;elige-hubspot-cms-si&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elige-hubspot-cms-si&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elige HubSpot CMS si:&lt;/h3&gt;
&lt;p&gt;Eres una empresa B2B que prioriza la integración marketing-ventas sobre el control técnico. HubSpot tiene sentido cuando tu equipo no es técnico y necesitas herramientas SEO accesibles integradas con tu CRM.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-conclusion-el-cms-como-ventaja-competitiva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-conclusion-el-cms-como-ventaja-competitiva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Conclusion: El CMS como ventaja competitiva&lt;/h2&gt;
&lt;p&gt;En 2026, el SEO es un deporte técnico. Un CMS que produce código inflado o limita tu capacidad de añadir datos estructurados te frenara. Aunque la velocidad es un factor, la capacidad de &lt;strong&gt;estructurar tu experiencia&lt;/strong&gt; para los bots de búsqueda de IA es el verdadero secreto para posicionar. &lt;strong&gt;WordPress&lt;/strong&gt; sigue siendo la herramienta más equilibrada para este trabajo.&lt;/p&gt;
&lt;p&gt;La eleccion de CMS no es permanente, pero el costo de migrar es alto - tanto en terminos de desarrollo como de impacto SEO temporal. Elige bien desde el principio, invierte en la implementación correcta, y tu CMS se convertira en tu mayor activo de marketing digital.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No estas seguro de cual CMS es el correcto para tu estrategia SEO? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para una consultoria estrategica personalizada.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>business</category><category domain="tag">seo</category><category domain="tag">cms</category><category domain="tag">rankings</category><category domain="tag">wordpress</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/tech-conference-audience-listening.jpg" type="image/jpeg"/></item><item><title>WordCamp Europe 2023: Un Triunfo de la Tecnología y la Comunidad</title><link>https://wppoland.com/es/wordcamp-europe-2023-triumph-technology-community/</link><guid isPermaLink="true">https://wppoland.com/es/wordcamp-europe-2023-triumph-technology-community/</guid><description>Resumen del WordCamp Europe 2023 en Atenas. Charlas destacadas, WordPress Playground, networking y lo mejor del evento de la comunidad WordPress.</description><pubDate>Mon, 17 Apr 2023 13:49:38 GMT</pubDate><content:encoded>&lt;p&gt;Este artículo en español resume el tema “Wordcamp Europe 2023 A Triumph Of Technology And Comunidad” con un enfoque práctico y actual. La idea no es repetir un titular sin contexto, sino explicar por qué este asunto sigue siendo relevante, qué decisiones conviene tomar y dónde suelen aparecer los errores más comunes en proyectos WordPress reales.&lt;/p&gt;
&lt;h2 id=&quot;contexto-y-relevancia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-relevancia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y relevancia&lt;/h2&gt;
&lt;p&gt;En temas SEO no conviene perseguir atajos. Los mejores resultados llegan cuando la parte técnica, la estructura de contenidos y la autoridad externa avanzan juntas. Si una página no responde bien a la intención de búsqueda, ni los enlaces ni los ajustes de metadatos compensan esa carencia durante mucho tiempo.&lt;/p&gt;
&lt;h2 id=&quot;qué-conviene-tener-en-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-conviene-tener-en-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué conviene tener en cuenta&lt;/h2&gt;
&lt;p&gt;También hay que distinguir entre señales útiles y ruido. Muchas métricas de herramientas son orientativas, no objetivos en sí mismos. Lo que interesa de verdad es mejorar rastreo, indexación, relevancia temática y capacidad de atraer visitas que luego conviertan.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión práctica&lt;/h2&gt;
&lt;p&gt;Por eso este tema debe leerse como una guía de criterio. Sirve para ordenar prioridades, evitar decisiones improvisadas y construir una base SEO que aguante cambios de algoritmo sin depender de tácticas frágiles.&lt;/p&gt;
&lt;p&gt;Fuente base revisada: wordcamp-europe-2023-triumph-technology-community.en.md. El contenido se ha adaptado a una versión española útil, evitando dejar una entrada mínima o vacía dentro del repositorio multilingüe.&lt;/p&gt;</content:encoded><category>wordpress</category><category>conferences</category><category>community</category><category domain="tag">wordpress</category><category domain="tag">wordcamp</category><category domain="tag">conference</category><category domain="tag">gutenberg</category><category domain="tag">community</category><category domain="tag">athens</category><enclosure url="https://wppoland.com/images/og/WordCamp-EUrope-Athens-Polish-crew-with-Matt-Wullenwerg.jpg" type="image/jpeg"/></item><item><title>Seguridad de WordPress: Por que las actualizaciones y la protección son cruciales</title><link>https://wppoland.com/es/wordpress-security-updates-protection/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-security-updates-protection/</guid><description>Por que importan las actualizaciones de WordPress? Conozca las amenazas de seguridad, la importancia de las actualizaciones regulares y las consecuencias de descuidar el mantenimiento del sitio.</description><pubDate>Sun, 19 Mar 2023 12:19:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;el-costo-real-de-un-sitio-hackeado-una-perspectiva-economica-análisis-2025&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-costo-real-de-un-sitio-hackeado-una-perspectiva-economica-análisis-2025&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El costo real de un sitio hackeado: Una perspectiva economica (análisis 2025)&lt;/h2&gt;
&lt;p&gt;En la sala de juntas, “Seguridad de WordPress” a menudo suena como una partida de gastos de TI. Pero en realidad, es un asunto de gestión de riesgo con implicaciones directas en las perdidas y ganancias. Cuando movemos la conversacion de “firewalls” a “responsabilidad financiera”, la necesidad de actualizaciones se vuelve innegable.&lt;/p&gt;
&lt;h3 id=&quot;1-el-multiplicador-de-tiempo-de-inactividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-multiplicador-de-tiempo-de-inactividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El multiplicador de “tiempo de inactividad”&lt;/h3&gt;
&lt;p&gt;Si su tienda de comercio electronico genera $5,000/dia, una interrupcion de 48 horas le cuesta $10,000, verdad? &lt;strong&gt;Incorrecto.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;El costo real del tiempo de inactividad se calcula usando la &lt;strong&gt;regla del multiplicador 3x&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Perdida directa de ingresos&lt;/strong&gt;: Las ventas reales perdidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desperdicio de gasto publicitario&lt;/strong&gt;: Si no pauso sus Google Ads inmediatamente, pago por clics que aterrizaron en una página 404 rota.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impacto en el LTV del clientes&lt;/strong&gt;: Un usuario que rebota de un sitio hackeado rara vez regresa. No solo perdio una venta; perdio el valor de vida de ese clientes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ejemplo-práctico-del-multiplicador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-práctico-del-multiplicador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo práctico del multiplicador&lt;/h3&gt;
&lt;p&gt;Supongamos un sitio de comercio electronico con estas metricas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ingresos diarios: $5,000&lt;/li&gt;
&lt;li&gt;Gasto diario en publicidad: $500&lt;/li&gt;
&lt;li&gt;LTV promedio del clientes: $300&lt;/li&gt;
&lt;li&gt;Visitantes únicos diarios: 2,000&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Calculo del impacto de 48 horas de inactividad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Perdida directa: $10,000&lt;/li&gt;
&lt;li&gt;Publicidad desperdiciada: $1,000&lt;/li&gt;
&lt;li&gt;LTV perdido (estimando 200 clientes potenciales que no volveran): $60,000&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total real&lt;/strong&gt;: $71,000 (no los $10,000 que inicialmente penso)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-el-costo-oculto-spam-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-costo-oculto-spam-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El costo oculto: Spam SEO&lt;/h3&gt;
&lt;p&gt;Los hackeos modernos son silenciosos. No desfiguran su página principal; inyectan 10,000 páginas ocultas publicitando “Farmacia barata” o “Casinos”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El golpe economico:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desindexacion de Google&lt;/strong&gt;: Una vez que Google detecta esto, coloca una advertencia “Este sitio puede haber sido hackeado” con pantalla roja. Su tráfico organico cae a casí cero instantaneamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiempo de recuperacion&lt;/strong&gt;: Incluso despues de limpiar el hackeo, toma &lt;strong&gt;3-6 meses&lt;/strong&gt; recuperar su confianza de dominio y rankings anteriores. Eso son dos trimestres de leads organicos perdidos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;como-funciona-la-inyeccion-de-spam-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-la-inyeccion-de-spam-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona la inyeccion de spam SEO&lt;/h3&gt;
&lt;p&gt;Los atacantes modernos son sofisticados. No buscan destruir su sitio, sino usarlo como parasito:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fase de infiltracion&lt;/strong&gt;: Explotan una vulnerabilidad conocida en un plugin desactualizado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fase de establecimiento&lt;/strong&gt;: Instalan una backdoor oculta, generalmente en archivos de tema o en la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fase de inyeccion&lt;/strong&gt;: Crean miles de páginas ocultas con contenido spam, visibles solo para motores de búsqueda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fase de monetizacion&lt;/strong&gt;: Usan su autoridad de dominio para posicionar sus páginas spam en Google&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Su sitio puede estar hackeado durante semanas o meses sin que lo note, porque el contenido spam solo es visible para Googlebot, no para visitantes humanos.&lt;/p&gt;
&lt;h3 id=&quot;3-responsabilidad-y-rgpd&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-responsabilidad-y-rgpd&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Responsabilidad y RGPD&lt;/h3&gt;
&lt;p&gt;En 2025, si su sitio filtra datos de clientes porque estaba ejecutando un plugin con una vulnerabilidad conocida y sin parchar (CVE), esto ya no es “mala suerte”. Es &lt;strong&gt;negligencia&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Bajo el RGPD, si no puede probar que tomo “medidas técnicas apropiadas” (es decir, actualizaciones), las multas pueden escalar. Para un propietario de negocio, “No sabia que tenia que actualizar” no es una defensa legal.&lt;/p&gt;
&lt;h3 id=&quot;multas-del-rgpd-por-negligencia-en-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multas-del-rgpd-por-negligencia-en-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multas del RGPD por negligencia en seguridad&lt;/h3&gt;
&lt;p&gt;Las multas pueden alcanzar hasta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;20 millones de euros&lt;/strong&gt; o el &lt;strong&gt;4% de la facturacion anual global&lt;/strong&gt;, lo que sea mayor&lt;/li&gt;
&lt;li&gt;En la práctica, las multas por filtraciones de datos de WordPress oscilan entre 10,000 y 500,000 euros&lt;/li&gt;
&lt;li&gt;Las autoridades consideran si las medidas de seguridad eran “apropiadas al riesgo”&lt;/li&gt;
&lt;li&gt;Un plugin sin actualizar con una CVE conocida se considera negligencia clara&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-roi-del-mantenimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-roi-del-mantenimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ROI del mantenimiento&lt;/h3&gt;
&lt;p&gt;Compare los costos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escenario A (Reactivo):&lt;/strong&gt; &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Eliminacion de malware&lt;/a&gt; de emergencia ($500-$2000) + Ingresos perdidos ($2000+) + Dano a la marca (incalculable).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escenario B (Proactivo):&lt;/strong&gt; Retencion mensual de mantenimiento ($100-$300).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La seguridad no se trata de “protección perfecta” contra la NSA. Se trata de elevar el costo de atacarle hasta que exceda el valor de sus datos. Las actualizaciones regulares son la poliza de seguro más barata que jamás comprara.&lt;/p&gt;
&lt;h2 id=&quot;plan-de-seguridad-integral-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-seguridad-integral-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de seguridad integral para WordPress&lt;/h2&gt;
&lt;h3 id=&quot;capa-1-actualizaciones-regulares&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-1-actualizaciones-regulares&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 1: Actualizaciones regulares&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Core de WordPress&lt;/strong&gt;: Aplique actualizaciones de seguridad inmediatamente, actualizaciones mayores despues de probar en staging&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins&lt;/strong&gt;: Actualice semanalmente, priorice los que manejan datos sensibles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temas&lt;/strong&gt;: Actualice mensualmente, verifique compatibilidad con plugins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP&lt;/strong&gt;: Mantenga la versión de PHP actualizada (8.1+ en 2026)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-2-fortalecimiento-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-2-fortalecimiento-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 2: Fortalecimiento del servidor&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Desactivar editor de archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_UNFILTERED_HTML&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Prevenir HTML sin filtrar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FORCE_SSL_ADMIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Forzar SSL en admin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;capa-3-autenticación-robusta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-3-autenticación-robusta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 3: Autenticación robusta&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Implemente &lt;strong&gt;passkeys&lt;/strong&gt; o &lt;strong&gt;2FA&lt;/strong&gt; para todos los administradores&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;contrasenas únicas&lt;/strong&gt; de minimo 16 caracteres&lt;/li&gt;
&lt;li&gt;Configure &lt;strong&gt;limites de intentos de login&lt;/strong&gt; (3 intentos, bloqueo de 24 horas)&lt;/li&gt;
&lt;li&gt;Considere &lt;strong&gt;claves de hardware&lt;/strong&gt; como YubiKey para acceso crítico&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-4-monitorización-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-4-monitorización-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 4: Monitorización continua&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escaneo de malware&lt;/strong&gt;: Automático, diario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorización de uptime&lt;/strong&gt;: Cada 5 minutos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alertas de cambios de archivos&lt;/strong&gt;: Notificación inmediata de cualquier modificacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logs de actividad&lt;/strong&gt;: Registro de todas las acciones de usuario en el panel&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-5-plan-de-respuesta-a-incidentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-5-plan-de-respuesta-a-incidentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 5: Plan de respuesta a incidentes&lt;/h3&gt;
&lt;p&gt;Tenga un plan documentado para cuando (no si) ocurra un incidente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deteccion&lt;/strong&gt;: Como se enterara del problema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contencion&lt;/strong&gt;: Pasos inmediatos para limitar el dano&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Erradicacion&lt;/strong&gt;: Como eliminar la amenaza&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recuperacion&lt;/strong&gt;: Restauracion del servicio normal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lecciones aprendidas&lt;/strong&gt;: Documentación y mejora del proceso&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;herramientas-de-seguridad-recomendadas-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-seguridad-recomendadas-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de seguridad recomendadas en 2026&lt;/h2&gt;
&lt;h3 id=&quot;firewalls-de-aplicación-web-waf&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#firewalls-de-aplicación-web-waf&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Firewalls de aplicación web (WAF)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; (gratuito + planes de pago): Protección a nivel de red&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sucuri WAF&lt;/strong&gt; (de pago): Especializado en WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patchstack&lt;/strong&gt; (de pago): Parcheado virtual de vulnerabilidades&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;plugins-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins de seguridad&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Wordfence&lt;/strong&gt;: Firewall y escaneo de malware integrados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solid Security (iThemes)&lt;/strong&gt;: Fortalecimiento y deteccion de cambios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP Activity Log&lt;/strong&gt;: Registro detallado de actividad de usuarios&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;herramientas-de-linea-de-comandos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-linea-de-comandos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de linea de comandos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar integridad de archivos core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify-checksums&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Buscar archivos sospechosos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -newer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-config.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ls&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -la&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar plugins contra vulnerabilidades conocidas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --status=active&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=table&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;el-proceso-de-mantenimiento-mensual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-proceso-de-mantenimiento-mensual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El proceso de mantenimiento mensual&lt;/h2&gt;
&lt;p&gt;Un proceso de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; profesional incluye:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Respaldo completo&lt;/strong&gt; antes de cualquier actualización&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualización en staging&lt;/strong&gt; primero&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebas de funcionalidad&lt;/strong&gt; en staging&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicación en producción&lt;/strong&gt; durante horas de bajo tráfico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación post-actualización&lt;/strong&gt; de funcionalidades criticas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escaneo de seguridad&lt;/strong&gt; completo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revision de logs&lt;/strong&gt; en busca de actividad sospechosa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Informe al clientes&lt;/strong&gt; con resumen de acciones realizadas&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La seguridad de WordPress no es un gasto, es una inversión. El costo de prevenir un incidente es siempre menor que el costo de remediarlo. Las actualizaciones regulares, combinadas con un enfoque de seguridad en capas y monitorización continua, son la base de un sitio WordPress seguro y confiable.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>wordpress</category><category domain="tag">security</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Como limpiar un sitio WordPress hackeado? Guia completa de eliminación de malware (2026)</title><link>https://wppoland.com/es/how-to-clean-hacked-wordpress-malware-removal-guide/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-clean-hacked-wordpress-malware-removal-guide/</guid><description>Tu WordPress ha sido hackeado? No entres en panico. Aqui tienes el proceso completo paso a paso para eliminar virus, backdoors y malware. Métodos SSH, WP-CLI y SQL.</description><pubDate>Mon, 27 Feb 2023 14:07:54 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-tu-wordpress-ha-sido-hackeado---que-hacer-ahora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-tu-wordpress-ha-sido-hackeado---que-hacer-ahora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: Tu WordPress ha sido hackeado - que hacer ahora&lt;/h2&gt;
&lt;p&gt;Descubrir que tu sitio WordPress ha sido hackeado es una de las experiencias más estresantes para cualquier propietario de sitio web. Pero no entres en panico. Con el proceso correcto, puedes limpiar tu sitio, eliminar todo el malware y fortalecerlo contra futuros ataques.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En esta guía completa, te llevo paso a paso a través del proceso profesional que uso para limpiar sitios WordPress infectados. Usaremos herramientas de linea de comandos (SSH, WP-CLI) porque son más rápidas y completas que cualquier plugin, aunque también cubriré alternativas con interfaz grafica.&lt;/p&gt;
&lt;h3 id=&quot;signos-de-que-tu-wordpress-esta-hackeado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#signos-de-que-tu-wordpress-esta-hackeado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Signos de que tu WordPress esta hackeado&lt;/h3&gt;
&lt;p&gt;Antes de empezar a limpiar, confirma que tu sitio realmente esta comprometido. Los signos más comunes incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Redirecciones no deseadas&lt;/strong&gt;: Los visitantes son redirigidos a sitios de spam, farmacia o casinos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido spam inyectado&lt;/strong&gt;: Páginas con texto en japones, chino o enlaces a sitios maliciosos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usuarios administradores desconocidos&lt;/strong&gt;: Nuevas cuentas de administrador que tu no creaste&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archivos modificados recientemente&lt;/strong&gt;: Archivos del core, temas o plugins cambiados sin tu conocimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advertencias del navegador&lt;/strong&gt;: Chrome o Firefox muestran “Este sitio puede danar tu equipo”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caida de tráfico SEO&lt;/strong&gt;: Google ha penalizado o desindexado tu sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correos spam enviados&lt;/strong&gt;: Tu servidor esta enviando correos no deseados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento degradado&lt;/strong&gt;: El sitio se ha vuelto notablemente más lento&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;paso-1-hacer-backup-antes-de-tocar-nada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-hacer-backup-antes-de-tocar-nada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Hacer backup antes de tocar nada&lt;/h2&gt;
&lt;p&gt;Antes de hacer cualquier cambio, crea un backup completo del estado infectado. Esto es crucial por dos razones: (1) si algo sale mal durante la limpieza, puedes restaurar, y (2) puedes analizar el malware despues para entender como ocurrio la brecha.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crear backup completo de archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /tmp/backup-infectado-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.tar.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /tmp/backup-db-infectado-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.sql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;paso-2-diagnostico---encontrar-el-malware&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-diagnostico---encontrar-el-malware&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Diagnostico - Encontrar el malware&lt;/h2&gt;
&lt;h3 id=&quot;escaneo-de-archivos-sospechosos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escaneo-de-archivos-sospechosos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escaneo de archivos sospechosos&lt;/h3&gt;
&lt;p&gt;Usa grep para buscar patrones comunes de malware en tus archivos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Buscar funciones de ofuscacion comunes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;eval(&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --include=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;*.php&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;base64_decode&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --include=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;*.php&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;str_rot13&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --include=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;*.php&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;gzinflate&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --include=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;*.php&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Buscar archivos PHP en uploads (NO deberia haber ninguno)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/uploads/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Buscar archivos modificados en los ultimos 7 dias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -mtime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;verificar-usuarios-de-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificar-usuarios-de-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificar usuarios de la base de datos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Buscar administradores sospechosos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ID, user_login, user_email, user_registered&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_users&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ID &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;IN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; user_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_usermeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wp_capabilities&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%administrator%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;tipos-comunes-de-hackeo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-comunes-de-hackeo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos comunes de hackeo en 2026&lt;/h3&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tipo&lt;/th&gt;&lt;th&gt;Sintomás&lt;/th&gt;&lt;th&gt;Donde buscar&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Japanese Keyword Hack&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Miles de páginas spam en japones indexadas&lt;/td&gt;&lt;td&gt;wp_posts, sitemap.xml&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Pharma Hack&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Enlaces a sitios de farmacias en el contenido&lt;/td&gt;&lt;td&gt;wp_posts, wp_options&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Backdoor PHP&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Archivos PHP ocultos para acceso remoto&lt;/td&gt;&lt;td&gt;wp-content/uploads/, temas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Redirecciones maliciosas&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Visitantes redirigidos a otros sitios&lt;/td&gt;&lt;td&gt;.htaccess, wp-config.php, wp_options&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cryptominer&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Alto uso de CPU, sitio lento&lt;/td&gt;&lt;td&gt;Archivos JS inyectados, wp-includes/&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Skimmer de tarjetas&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Robo de datos de pago en checkout&lt;/td&gt;&lt;td&gt;JS en temas/plugins de WooCommerce&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;paso-3-reemplazar-el-core-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-reemplazar-el-core-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Reemplazar el core de WordPress&lt;/h2&gt;
&lt;p&gt;El método más seguro es reemplazar todos los archivos del core con versiones limpias:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Descargar core limpio sin tocar wp-content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; download&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --force&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --skip-content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Verificar la integridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify-checksums&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto reemplaza &lt;code&gt;wp-admin/&lt;/code&gt;, &lt;code&gt;wp-includes/&lt;/code&gt; y todos los archivos del core raiz con versiones originales, eliminando cualquier modificacion maliciosa.&lt;/p&gt;
&lt;h2 id=&quot;paso-4-limpiar-wp-content&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-limpiar-wp-content&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Limpiar wp-content&lt;/h2&gt;
&lt;h3 id=&quot;plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins&lt;/h3&gt;
&lt;p&gt;La forma más segura es eliminar y reinstalar todos los plugins:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Listar plugins activos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --status=active&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Reinstalar cada plugin desde el repositorio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; nombre-del-plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --force&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para plugins premium, descarga versiones frescas del proveedor original.&lt;/p&gt;
&lt;h3 id=&quot;temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Temas&lt;/h3&gt;
&lt;p&gt;Elimina todos los temas excepto el activo. Para el tema activo, compara archivos con la versión original linea por linea.&lt;/p&gt;
&lt;h3 id=&quot;uploads&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uploads&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uploads&lt;/h3&gt;
&lt;p&gt;La carpeta uploads NUNCA deberia contener archivos PHP. Elimina cualquiera que encuentres:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/uploads/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -delete&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/uploads/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*.phtml&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -delete&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/uploads/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;.htaccess&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -delete&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;paso-5-limpiar-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-limpiar-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Limpiar la base de datos&lt;/h2&gt;
&lt;h3 id=&quot;eliminar-administradores-falsos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminar-administradores-falsos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminar administradores falsos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Eliminar usuarios sospechosos (verifica IDs primero)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_users &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ID &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;IN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (lista_de_ids_sospechosos);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;DELETE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_usermeta &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; user_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;IN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (lista_de_ids_sospechosos);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;buscar-contenido-inyectado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#buscar-contenido-inyectado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Buscar contenido inyectado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Buscar scripts inyectados en posts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ID, post_title&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%&amp;#x3C;script%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%eval(%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Buscar opciones sospechosas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name, option_value&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%hack%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%inject%&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LIKE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;%base64_decode%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;paso-6-endurecer-la-configuración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-6-endurecer-la-configuración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 6: Endurecer la configuración&lt;/h2&gt;
&lt;p&gt;Despues de la limpieza, fortalece tu sitio contra futuros ataques:&lt;/p&gt;
&lt;h3 id=&quot;cambiar-todas-las-credenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambiar-todas-las-credenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cambiar todas las credenciales&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Cambiar contrasena de administrador&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --user_pass=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;nueva-contrasena-segura&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Regenerar Salt Keys (cierra todas las sesiones activas)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; shuffle-salts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --path=/var/www/html/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;agregar-protecciónes-en-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agregar-protecciónes-en-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agregar protecciónes en wp-config.php&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar edicion de archivos desde el admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar instalacion de plugins/temas desde el admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_MODS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Forzar SSL en admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FORCE_SSL_ADMIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configurar-permisos-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-permisos-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar permisos de archivos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Directorios: 755&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 755&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Archivos: 644&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 644&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# wp-config.php: 400 (solo lectura)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-config.php&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;paso-7-verificar-y-monitorear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-7-verificar-y-monitorear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 7: Verificar y monitorear&lt;/h2&gt;
&lt;h3 id=&quot;lista-de-verificación-post-limpieza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-post-limpieza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación post-limpieza&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Core de WordPress verificado con checksums&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Todos los plugins reinstalados desde fuentes limpias&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Archivos PHP eliminados de uploads&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Usuarios administradores falsos eliminados&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Contrasenas cambiadas para todos los usuarios&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Salt Keys regeneradas&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Permisos de archivos corregidos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; DISALLOW_FILE_EDIT habilitado&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; XML-RPC deshabilitado si no se necesita&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Plugin de seguridad instalado (Wordfence, Sucuri)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Backups automáticos configurados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;solicitar-revision-a-google&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solicitar-revision-a-google&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solicitar revision a Google&lt;/h3&gt;
&lt;p&gt;Si Google marco tu sitio como peligroso:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ve a Google Search Console&lt;/li&gt;
&lt;li&gt;Navega a Seguridad y acciones manuales&lt;/li&gt;
&lt;li&gt;Solicita una revision despues de la limpieza&lt;/li&gt;
&lt;li&gt;Espera 24-72 horas para la reevaluación&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;prevencion-evitar-futuros-hackeos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prevencion-evitar-futuros-hackeos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prevencion: Evitar futuros hackeos&lt;/h2&gt;
&lt;p&gt;La mejor defensa es la prevencion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Actualiza siempre&lt;/strong&gt;: Core, plugins y temas - automáticamente si es posible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa contrasenas fuertes&lt;/strong&gt;: Minimo 16 caracteres, únicas para cada cuenta&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementa 2FA&lt;/strong&gt;: Autenticación de dos factores para todas las cuentas admin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting seguro&lt;/strong&gt;: VPS con firewall, no hosting compartido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups diarios&lt;/strong&gt;: Automatizados y almacenados offsite&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo continuo&lt;/strong&gt;: Alertas de cambios de archivos y actividad sospechosa&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Explora nuestros &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de auditoria de seguridad WordPress&lt;/a&gt; y &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; para proteger tu sitio profesionalmente.&lt;/p&gt;</content:encoded><category>security</category><category>guides</category><category domain="tag">malware</category><category domain="tag">security</category><category domain="tag">ssh</category><category domain="tag">wp-cli</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>¿Vale la Pena Actualizar WordPress? Guía Completa 2026</title><link>https://wppoland.com/es/is-it-worth-updating-wordpress/</link><guid isPermaLink="true">https://wppoland.com/es/is-it-worth-updating-wordpress/</guid><description>Descubre por qué actualizar WordPress es clave para la seguridad, el rendimiento y la compatibilidad de tu sitio web. Guía completa.</description><pubDate>Thu, 05 Jan 2023 18:03:18 GMT</pubDate><content:encoded>&lt;h2 id=&quot;por-qué-actualizar-wordpress-no-es-opcional-seguridad-rendimiento-y-estabilidad-a-largo-plazo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-actualizar-wordpress-no-es-opcional-seguridad-rendimiento-y-estabilidad-a-largo-plazo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué actualizar WordPress no es opcional: seguridad, rendimiento y estabilidad a largo plazo&lt;/h2&gt;
&lt;p&gt;Descubre nuestros &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En el ecosistema WordPress, “actualizar” suele verse como una tarea menor, algo que se hace para eliminar un aviso molesto en el panel de administración. Sin embargo, desde la perspectiva de seguridad e ingeniería, actualizar es la tarea de mantenimiento individual más importante que existe. Ejecutar una instancia desactualizada no es simplemente “poco optimo”; es una invitacion abierta a botnets automatizados que rastrean millones de sitios buscando versiones vulnerables.&lt;/p&gt;
&lt;p&gt;La pregunta correcta nunca fue “merece la pena actualizar WordPress”. La pregunta real es “puedo permitirme el riesgo de ejecutar software con vulnerabilidades conocidas”. El coste de un sitio hackeado (penalizaciones SEO, perdida de datos, honorarios de limpieza, dano reputacional) siempre supera los 15 a 20 minutos necesarios para gestionar las actualizaciones de forma responsable.&lt;/p&gt;
&lt;h2 id=&quot;los-riesgos-reales-de-la-mentalidad-si-funciona-no-lo-toques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-riesgos-reales-de-la-mentalidad-si-funciona-no-lo-toques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los riesgos reales de la mentalidad “si funciona, no lo toques”&lt;/h2&gt;
&lt;p&gt;Muchos propietarios de sitios temen que las actualizaciones rompan su web. Aunque esto es posible, la alternativa es una degradacion garantizada. Veamos los tres riesgos principales de no actualizar.&lt;/p&gt;
&lt;h3 id=&quot;explotacion-de-vulnerabilidades-conocidas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#explotacion-de-vulnerabilidades-conocidas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Explotacion de vulnerabilidades conocidas&lt;/h3&gt;
&lt;p&gt;Cuando se pública un parche de seguridad, por ejemplo para una vulnerabilidad de Cross-Site Scripting (XSS) o de inyeccion SQL, la vulnerabilidad pasa a ser de conocimiento público. Los hackers alimentan esos diffs a bots automatizados que escanean millones de sitios buscando la versión sin parchear. Esto sucede en cuestion de horas, no de dias.&lt;/p&gt;
&lt;p&gt;WordPress es el CMS más popular del mundo, alimentando más del 43% de todos los sitios web. Esto lo convierte en el objetivo número uno para ataques automatizados. Cada versión nueva que se pública incluye las correcciones de seguridad que revelan exactamente donde estaban los fallos en la versión anterior. Si no actualizas, estas exponiendo esas vulnerabilidades exactas a todo el mundo.&lt;/p&gt;
&lt;p&gt;Los ataques más comunes contra sitios WordPress desactualizados incluyen la inyeccion de malware, la creación de páginas spam ocultas para SEO farmaceutico, el redireccionamiento de visitantes a sitios maliciosos y el robo de datos de formularios de contacto o de clientes WooCommerce. Un solo ataque exitoso puede tardar semanas en limpiarse por completo y costar miles de euros en trabajo especializado.&lt;/p&gt;
&lt;h3 id=&quot;degradacion-de-la-versión-de-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#degradacion-de-la-versión-de-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Degradacion de la versión de PHP&lt;/h3&gt;
&lt;p&gt;Las versiones antiguas de WordPress te obligan a permanecer en versiones de PHP que han alcanzado su fin de vida (EOL, End of Life). PHP 7.4 dejo de recibir parches de seguridad en noviembre de 2022. PHP 8.0 alcanzo su EOL en noviembre de 2023. Cada versión de PHP que queda sin soporte deja de recibir actualizaciones de seguridad, creando una cascada de fallos de seguridad.&lt;/p&gt;
&lt;p&gt;Si tu versión de WordPress no es compatible con PHP 8.2 o superior, estas ejecutando tu sitio sobre una base que tiene agujeros de seguridad conocidos tanto en la aplicación como en el runtime. Es como construir una casa sobre cimientos que sabes que estan agrietados.&lt;/p&gt;
&lt;p&gt;Además, las versiones modernas de PHP son significativamente más rápidas. PHP 8.x ofrece mejoras de rendimiento sustanciales respecto a PHP 7.4 gracias al compilador JIT (Just-In-Time), mejoras en la gestión de memoria y optimizaciones del motor Zend. Al mantenerte en versiones antiguas, estas ejecutando voluntariamente código más lento cuando existe una alternativa directa y gratuita para mejorar la velocidad.&lt;/p&gt;
&lt;h3 id=&quot;atrofia-del-rendimiento-y-la-compatibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#atrofia-del-rendimiento-y-la-compatibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Atrofia del rendimiento y la compatibilidad&lt;/h3&gt;
&lt;p&gt;WordPress evoluciona constantemente. Cada nueva versión trae mejoras de rendimiento del nucleo, nuevas APIs para desarrolladores, mejor soporte para estándares web modernos y optimizaciones de la base de datos. Al no actualizar, te pierdes todas estas mejoras acumulativas.&lt;/p&gt;
&lt;p&gt;Además, los plugins y temas más populares eventualmente dejan de dar soporte a versiones antiguas de WordPress. Esto significa que tus plugins tampoco se podran actualizar, creando un efecto domino donde cada componente de tu sitio queda progresivamente más obsoleto y vulnerable.&lt;/p&gt;
&lt;p&gt;Los navegadores modernos también evolucionan, y las versiones antiguas de WordPress pueden generar HTML que no se renderiza correctamente en las últimás versiones de Chrome, Firefox o Safari. Esto afecta directamente a la experiencia de usuario y a las metricas de Core Web Vitals.&lt;/p&gt;
&lt;h2 id=&quot;como-actualizar-wordpress-sin-romper-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-actualizar-wordpress-sin-romper-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como actualizar WordPress sin romper producción&lt;/h2&gt;
&lt;p&gt;El miedo a romper el sitio es válido, pero la solución no es “no actualizar”, sino “actualizar de forma segura”. Existen protocolos probados que minimizan el riesgo de cualquier actualización.&lt;/p&gt;
&lt;h3 id=&quot;la-red-de-seguridad-del-entorno-de-staging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-red-de-seguridad-del-entorno-de-staging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La red de seguridad del entorno de staging&lt;/h3&gt;
&lt;p&gt;Nunca actualices versiones mayores (por ejemplo, de WordPress 6.4 a 6.5) directamente en producción. Utiliza un entorno de staging. La mayoria de los hosts modernos (Kinsta, WP Engine, SiteGround, Cloudways) ofrecen staging con un solo clic.&lt;/p&gt;
&lt;p&gt;El proceso correcto es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clonar a staging.&lt;/strong&gt; Crea una copia exacta de tu sitio en el entorno de staging. Esto incluye la base de datos, los archivos multimedia, los plugins y la configuración.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actualizar en staging.&lt;/strong&gt; Ejecuta todas las actualizaciones (core de WordPress, plugins, temas) en el entorno de staging. Hazlo de forma ordenada, empezando por el core.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Probar flujos críticos.&lt;/strong&gt; Recorre manualmente los flujos más importantes de tu sitio: formularios de contacto, proceso de compra en WooCommerce, registro de usuarios, buscador interno, páginas de aterrizaje clave. Verifica que todo funciona correctamente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revisar la consola del navegador.&lt;/strong&gt; Abre las herramientas de desarrollo del navegador y comprueba que no hay errores de JavaScript. Los conflictos entre plugins suelen manifestarse como errores de JS que afectan a la funcionalidad del frontend.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Subir a producción.&lt;/strong&gt; Solo cuando todo funciona correctamente en staging, aplica los mismos cambios en el entorno de producción. Si tu host ofrece push de staging a producción, utiliza esa funcionalidad.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;pruebas-de-regresion-visual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pruebas-de-regresion-visual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pruebas de regresion visual&lt;/h3&gt;
&lt;p&gt;Para sitios de negocios críticos, “echar un vistazo rápido” no es suficiente. Las herramientas de regresion visual automatizada comparan capturas de pantalla de tu sitio antes y despues de las actualizaciones para detectar roturas sutiles de maquetacion que una revision rápida podria pasar por alto.&lt;/p&gt;
&lt;p&gt;Herramientas como Percy, BackstopJS o el modulo de comparación visual de WP Rocket pueden detectar cambios de pixeles en el diseño que serian invisibles para el ojo humano en una revision superficial. Un boton que se ha desplazado 5 pixeles, un margen que ha cambiado, un color que se ha alterado: estos detalles importan cuando tu sitio genera ingresos.&lt;/p&gt;
&lt;p&gt;La regresion visual es especialmente importante despues de actualizar temas o page builders como Elementor, Divi o WPBakery, ya que estas herramientas controlan directamente la apariencia visual de cada página.&lt;/p&gt;
&lt;h3 id=&quot;actualizar-plugins-de-uno-en-uno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizar-plugins-de-uno-en-uno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizar plugins de uno en uno&lt;/h3&gt;
&lt;p&gt;Nunca hagas clic en “Actualizar todo”. Actualiza los plugins de uno en uno, comprobando el sitio despues de cada actualización. Si un plugin específico rompe el sitio, sabras exactamente cual es el culpable y podras revertirlo.&lt;/p&gt;
&lt;p&gt;El orden recomendado es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Primero el core de WordPress.&lt;/strong&gt; Actualiza WordPress antes que nada, ya que los plugins suelen actualizar su compatibilidad respecto a la última versión del core.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Despues los plugins críticos.&lt;/strong&gt; Plugins de cache, seguridad y SEO deben actualizarse a continuacion, verificando el funcionamiento despues de cada uno.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Luego plugins secundarios.&lt;/strong&gt; Formularios de contacto, sliders, integraciones de redes sociales y similares.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Finalmente el tema.&lt;/strong&gt; Actualizar el tema al final permite verificar que no hay conflictos con los plugins ya actualizados.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Despues de cada actualización individual, abre la consola del navegador (F12) y busca errores de JavaScript. Un error de JS puede indicar un conflicto que rompe funcionalidades del frontend sin que sea visualmente obvio en un primer vistazo.&lt;/p&gt;
&lt;h3 id=&quot;copias-de-seguridad-antes-de-cualquier-actualización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#copias-de-seguridad-antes-de-cualquier-actualización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Copias de seguridad antes de cualquier actualización&lt;/h3&gt;
&lt;p&gt;Antes de iniciar cualquier proceso de actualización, asegurate de tener una copia de seguridad completa y verificada. Esto incluye tanto la base de datos como los archivos del servidor. Plugins como UpdraftPlus, BlogVault o Duplicator pueden automatizar este proceso.&lt;/p&gt;
&lt;p&gt;La copia de seguridad debe ser restaurable. No basta con tener un backup si nunca has probado que funciona. Programa una restauracion de prueba al menos una vez al trimestre para verificar que tus copias de seguridad son realmente funcionales.&lt;/p&gt;
&lt;h2 id=&quot;que-sucede-cuando-no-actualizas-escenarios-reales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-sucede-cuando-no-actualizas-escenarios-reales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que sucede cuando no actualizas: escenarios reales&lt;/h2&gt;
&lt;h3 id=&quot;escenario-1-sitio-hackeado-con-inyeccion-de-seo-spam&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-1-sitio-hackeado-con-inyeccion-de-seo-spam&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 1: Sitio hackeado con inyeccion de SEO spam&lt;/h3&gt;
&lt;p&gt;Uno de los ataques más comunes contra sitios WordPress desactualizados es la inyeccion de páginas de SEO spam. Los atacantes crean miles de páginas ocultas dentro de tu sitio que venden productos farmaceuticos, software pirata o servicios de apuestas. Google indexa estas páginas y asocia tu dominio con spam.&lt;/p&gt;
&lt;p&gt;El resultado es una penalizacion de Google que puede reducir tu tráfico organico entre un 50% y un 90%. Recuperarse de esta situación requiere una limpieza técnica completa, enviar una solicitud de reconsideracion a Google y esperar semanas o meses a que el buscador vuelva a confiar en tu dominio.&lt;/p&gt;
&lt;h3 id=&quot;escenario-2-fuga-de-datos-de-clientes-en-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-2-fuga-de-datos-de-clientes-en-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 2: Fuga de datos de clientes en WooCommerce&lt;/h3&gt;
&lt;p&gt;Un sitio WooCommerce sin actualizar puede tener vulnerabilidades que permitan acceder a la base de datos de clientes. Nombres, direcciones, emails e incluso datos parciales de pago pueden quedar expuestos. Además de las obligaciones legales bajo el RGPD (con multas de hasta el 4% de la facturacion anual), el dano reputacional es incalculable.&lt;/p&gt;
&lt;h3 id=&quot;escenario-3-sitio-totalmente-inoperativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-3-sitio-totalmente-inoperativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 3: Sitio totalmente inoperativo&lt;/h3&gt;
&lt;p&gt;En el peor de los casos, un atacante puede tomar el control total de tu servidor, eliminando archivos críticos y dejando el sitio completamente fuera de servicio. Sin una copia de seguridad reciente, la reconstruccion puede llevar dias o semanas, con la perdida completa de contenido, configuraciónes y datos de clientes.&lt;/p&gt;
&lt;h2 id=&quot;actualizaciones-automáticas-vs-manuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizaciones-automáticas-vs-manuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizaciones automáticas vs. manuales&lt;/h2&gt;
&lt;p&gt;WordPress ofrece la posibilidad de configurar actualizaciones automáticas tanto para el core como para plugins y temas. La pregunta es cuando tiene sentido automatizar y cuando es mejor mantener el control manual.&lt;/p&gt;
&lt;h3 id=&quot;cuando-las-actualizaciones-automáticas-son-apropiadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-las-actualizaciones-automáticas-son-apropiadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando las actualizaciones automáticas son apropiadas&lt;/h3&gt;
&lt;p&gt;Las actualizaciones menores de seguridad (por ejemplo, de WordPress 6.5.1 a 6.5.2) son candidatas ideales para la automatizacion. Estas versiones se centran exclusivamente en parches de seguridad y correcciones de bugs menores, con un riesgo minimo de romper la compatibilidad.&lt;/p&gt;
&lt;p&gt;Para sitios pequeños como blogs personales, portfolios o sitios informativos sin funcionalidad de ecommerce, las actualizaciones automáticas de plugins pueden ser aceptables, siempre que tengas un sistema de backup automático funcionando en paralelo.&lt;/p&gt;
&lt;h3 id=&quot;cuando-las-actualizaciones-manuales-son-imprescindibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-las-actualizaciones-manuales-son-imprescindibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando las actualizaciones manuales son imprescindibles&lt;/h3&gt;
&lt;p&gt;Los sitios de ecommerce con WooCommerce, los sitios con integraciones personalizadas via API, los sitios con plugins premium que modifican funcionalidades del core y cualquier sitio que genere ingresos directos deben gestionarse con actualizaciones manuales supervisadas.&lt;/p&gt;
&lt;p&gt;Las versiones mayores de WordPress (de 6.4 a 6.5, por ejemplo) siempre deben aplicarse de forma manual y en staging primero, ya que pueden incluir cambios significativos en APIs, funciones obsoletas eliminadas o cambios en el comportamiento del editor de bloques.&lt;/p&gt;
&lt;h2 id=&quot;frecuencia-recomendada-de-actualizaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#frecuencia-recomendada-de-actualizaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Frecuencia recomendada de actualizaciones&lt;/h2&gt;
&lt;p&gt;La frecuencia ideal de actualizaciones depende del tipo de sitio y los recursos disponibles:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parches de seguridad críticos:&lt;/strong&gt; Inmediatamente, dentro de las primeras 24 a 48 horas desde su publicación. Estas son las actualizaciones que cierran vulnerabilidades activamente explotadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizaciones menores de WordPress:&lt;/strong&gt; Dentro de la primera semana. Estas versiones suelen ser estables y se centran en correcciones de bugs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizaciones de plugins:&lt;/strong&gt; Cada dos semanas es una buena cadencia para sitios de tamaño medio. Permite acumular varias actualizaciones y probarlas juntas en staging.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Versiones mayores de WordPress:&lt;/strong&gt; Esperar entre 1 y 2 semanas despues del lanzamiento es prudente. Esto permite que la comunidad detecte problemas iniciales y que los desarrolladores de plugins publiquen actualizaciones de compatibilidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizaciones de temas premium:&lt;/strong&gt; Verificar la lista de cambios (changelog) antes de actualizar. Los temas con constructores visuales integrados pueden cambiar el comportamiento de componentes existentes.&lt;/p&gt;
&lt;h2 id=&quot;el-impacto-en-seo-de-no-actualizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-impacto-en-seo-de-no-actualizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El impacto en SEO de no actualizar&lt;/h2&gt;
&lt;p&gt;Google ha confirmado que la velocidad del sitio es un factor de posicionamiento. Las versiones antiguas de WordPress ejecutandose sobre PHP obsoleto son inherentemente más lentas. Esto afecta directamente a las metricas de Core Web Vitals, especialmente LCP (Largest Contentful Paint) y INP (Interaction to Next Paint).&lt;/p&gt;
&lt;p&gt;Además, un sitio hackeado por no estar actualizado puede recibir una marca de “sitio comprometido” en los resultados de búsqueda de Google, lo que reduce el CTR practicamente a cero. Los navegadores modernos también muestran advertencias de seguridad cuando detectan malware o certificados SSL problematicos, lo que ahuyenta a los visitantes antes de que lleguen a interactuar con tu contenido.&lt;/p&gt;
&lt;p&gt;Mantener WordPress actualizado es una de las acciones de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO técnico&lt;/a&gt; más sencillas y de mayor impacto que puedes realizar.&lt;/p&gt;
&lt;h2 id=&quot;herramientas-para-gestionar-actualizaciones-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-para-gestionar-actualizaciones-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas para gestionar actualizaciones a escala&lt;/h2&gt;
&lt;p&gt;Si gestionas varios sitios WordPress, actualizar manualmente cada uno es inviable. Existen herramientas que centralizan la gestión de actualizaciones:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ManageWP&lt;/strong&gt; permite gestionar actualizaciones de decenas o cientos de sitios desde un solo panel, con backups automáticos antes de cada actualización y verificaciónes visuales despues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MainWP&lt;/strong&gt; es una alternativa autoalojada que funciona como plugin en un sitio WordPress central, controlando las actualizaciones de todos tus sitios satelite.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;InfiniteWP&lt;/strong&gt; ofrece funcionalidades similares con un enfoque en agencias que gestionan grandes volumenes de sitios.&lt;/p&gt;
&lt;p&gt;Estas herramientas permiten programar actualizaciones, aplicar actualizaciones selectivas, generar informes para clientes y revertir cambios si algo sale mal.&lt;/p&gt;
&lt;h2 id=&quot;protocolo-de-actualización-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protocolo-de-actualización-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protocolo de actualización paso a paso&lt;/h2&gt;
&lt;p&gt;Para asegurar un proceso limpio y repetible, sigue este protocolo cada vez que actualices:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Verificar backup reciente.&lt;/strong&gt; Confirma que tienes una copia de seguridad completa del sitio (base de datos + archivos) que no tenga más de 24 horas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revisar changelogs.&lt;/strong&gt; Lee las notas de la versión de WordPress, plugins y temas antes de actualizar. Busca cambios que puedan afectar a funcionalidades criticas de tu sitio.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clonar a staging.&lt;/strong&gt; Si tu host lo permite, clona el sitio a un entorno de pruebas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actualizar core primero.&lt;/strong&gt; Aplica la actualización de WordPress antes que cualquier plugin o tema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actualizar plugins uno a uno.&lt;/strong&gt; Verifica el funcionamiento despues de cada plugin.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actualizar el tema.&lt;/strong&gt; Si hay actualización disponible del tema, aplicala al final.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Probar flujos críticos.&lt;/strong&gt; Navega por las páginas principales, prueba formularios, prueba el proceso de compra si aplica.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revisar consola JS.&lt;/strong&gt; Abre DevTools y comprueba que no hay errores de JavaScript nuevos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aplicar en producción.&lt;/strong&gt; Si todo funciona, replica el proceso en el sitio en vivo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitorizar 24-48 horas.&lt;/strong&gt; Vigila los logs del servidor, las estadísticas de tráfico y los reportes de errores durante los dos dias siguientes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La pregunta “merece la pena actualizar WordPress” no deberia existir en 2026. Actualizar es un requisito minimo de mantenimiento, no una opción. El coste de no actualizar es exponencialmente mayor que el coste de mantener un protocolo de actualizaciones ordenado.&lt;/p&gt;
&lt;p&gt;Las actualizaciones protegen contra vulnerabilidades conocidas, mantienen la compatibilidad con versiones modernas de PHP, mejoran el rendimiento del sitio, aseguran la compatibilidad con plugins y temas actualizados y contribuyen a un mejor posicionamiento en buscadores.&lt;/p&gt;
&lt;p&gt;El riesgo de romper algo durante una actualización existe, pero se mitiga completamente con un protocolo adecuado: staging, backups verificados, actualizaciones individuales y pruebas de regresion visual. El riesgo de no actualizar no tiene mitigacion posible, solo consecuencias.&lt;/p&gt;</content:encoded><category>wordpress</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-resized.jpg" type="image/jpeg"/></item><item><title>Como degradar WordPress? (Plugin, FTP, WP-CLI)</title><link>https://wppoland.com/es/how-to-downgrade-wordpress-rollback-guide/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-downgrade-wordpress-rollback-guide/</guid><description>Una actualización rompio su sitio? No entre en panico. Vea 3 formás probadas de revertir WordPress core, plugins o temas a una versión anterior.</description><pubDate>Tue, 03 Jan 2023 18:08:03 GMT</pubDate><content:encoded>&lt;p&gt;Hace clic en “Actualizar”, espera un momento, y de repente ve la “Pantalla Blanca de la Muerte” o un error crítico de PHP. Su sitio esta caido, y el clientes esta llamando.&lt;/p&gt;
&lt;p&gt;No entre en panico. En WordPress, casí siempre puede revertir los cambios. En esta guía, le mostrare tres métodos para hacer un &lt;strong&gt;Downgrade&lt;/strong&gt;, desde el más fácil hasta el más avanzado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-1-plugin-wp-rollback-si-el-admin-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-plugin-wp-rollback-si-el-admin-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Plugin WP Rollback (si el admin funciona)&lt;/h2&gt;
&lt;p&gt;Si aun tiene acceso al Dashboard (wp-admin), esta salvado. La mejor herramienta para revertir plugins y temas es el plugin gratuito &lt;strong&gt;WP Rollback&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instale y active &lt;strong&gt;WP Rollback&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Vaya a la lista de plugins (&lt;code&gt;Plugins -&gt; Instalados&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Un nuevo enlace &lt;strong&gt;“Rollback”&lt;/strong&gt; aparecera junto a cada plugin.&lt;/li&gt;
&lt;li&gt;Haga clic y elija la versión a la que quiere volver (ej. de 5.4 a 5.3).&lt;/li&gt;
&lt;li&gt;Confirme. Listo!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; WP Rollback (versión gratuita) generalmente no revierte WordPress Core, solo plugins y temas. Para Core, necesita otro plugin: &lt;strong&gt;Core Rollback&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-2-wp-cli-para-profesionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-wp-cli-para-profesionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: WP-CLI (para profesionales)&lt;/h2&gt;
&lt;p&gt;Si tiene acceso SSH (consulte nuestra guía de SSH), este es el método más rápido y seguro.&lt;/p&gt;
&lt;p&gt;Para degradar WordPress Core:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --versión=6.4.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --force&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El parametro &lt;code&gt;--force&lt;/code&gt; fuerza la instalación incluso si tiene una versión más nueva.&lt;/p&gt;
&lt;p&gt;Para degradar un plugin (ej. WooCommerce):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; woocommerce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --versión=8.5.0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --force&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para degradar un tema:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; nombre-tema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --versión=2.1.0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --force&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;verificación-despues-de-la-degradacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-despues-de-la-degradacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación despues de la degradacion&lt;/h3&gt;
&lt;p&gt;Despues de ejecutar el comando, verifique que todo funciona:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar la versión instalada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; versión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; woocommerce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --field=versión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar integridad de archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify-checksums&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar si hay errores en la base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-3-reemplazo-manual-de-archivos-ftp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-reemplazo-manual-de-archivos-ftp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Reemplazo manual de archivos (FTP)&lt;/h2&gt;
&lt;p&gt;Si no tiene acceso al panel ni a SSH, solo queda la “cirugia a corazon abierto” via FTP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esto es riesgoso. Haga backup de su base de datos antes de empezar!&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vaya a &lt;a href=&quot;https://wordpress.org/download/releases/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;WordPress.org Releases&lt;/a&gt; y descargue la versión antigua de WP (zip).&lt;/li&gt;
&lt;li&gt;Descomprima en su computadora.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ELIMINE&lt;/strong&gt; la carpeta &lt;code&gt;wp-content&lt;/code&gt; y el archivo &lt;code&gt;wp-config-sample.php&lt;/code&gt; de la carpeta descomprimida.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Por que?&lt;/em&gt; Para no sobrescribir accidentalmente sus fotos, temas y configuración!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conecte via FTP (FileZilla).&lt;/li&gt;
&lt;li&gt;Suba los archivos restantes (&lt;code&gt;wp-admin&lt;/code&gt;, &lt;code&gt;wp-includes&lt;/code&gt;, archivos raiz) al servidor, eligiendo &lt;strong&gt;“Sobrescribir”&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Despues de subir, intente acceder a &lt;code&gt;wp-admin&lt;/code&gt;. WordPress podria solicitar una “Actualización de Base de Datos” - acepte.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cuando-el-backup-es-la-única-salvacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-el-backup-es-la-única-salvacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando el backup es la única salvacion?&lt;/h2&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;A veces degradar archivos no es suficiente.
Ejemplo: WooCommerce 9.0 cambio la estructura de la base de datos. Si revierte los archivos a 8.9 pero mantiene la base de datos en la nueva estructura, la tienda se rompera.&lt;/p&gt;
&lt;p&gt;En ese caso, la única opción es restaurar un backup completo (Archivos + Base de datos) de ayer.&lt;/p&gt;
&lt;h3 id=&quot;como-evitar-problemas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-evitar-problemas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como evitar problemas?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Staging:&lt;/strong&gt; Nunca actualice “en vivo”. Pruebe en una copia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups automatizados:&lt;/strong&gt; Configure backups del hosting cada 24h.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registro de cambios:&lt;/strong&gt; Documente que se actualizo y cuando.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Recuerde: Las actualizaciones son importantes para la seguridad, pero la estabilidad es más importante para el negocio.&lt;/p&gt;
&lt;h2 id=&quot;estrategia-de-actualización-segura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-actualización-segura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de actualización segura&lt;/h2&gt;
&lt;p&gt;Para evitar necesitar degradaciones en el futuro, siga esta estrategia:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Antes de actualizar&lt;/strong&gt;: Cree un backup completo y documente las versiones actuales de todos los plugins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entorno de staging&lt;/strong&gt;: Clone su sitio de producción y aplique las actualizaciones alli primero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones graduales&lt;/strong&gt;: Actualice un plugin a la vez, no todos simultaneamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo post-actualización&lt;/strong&gt;: Verifique funcionalidad crítica despues de cada actualización.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan de rollback&lt;/strong&gt;: Tenga documentado el proceso de reversión antes de empezar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;automatizacion-de-pruebas-pre-actualización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-de-pruebas-pre-actualización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion de pruebas pre-actualización&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Script de verificación pre-actualización&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;=== Verificacion pre-actualización ===&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Backup de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup-pre-update-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Backup de BD creado&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Listar versiones actuales&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;=== Versiones actuales ===&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; versión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=name,versión,update_versión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=name,versión,update_versión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar integridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify-checksums&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;=== Verificacion completa ===&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Método&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Dificultad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Requisitos&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejor para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WP Rollback&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Fácil&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Acceso wp-admin&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Plugins y temas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WP-CLI&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Intermedio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Acceso SSH&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Core, plugins y temas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;FTP Manual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Avanzado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Acceso FTP&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cuando no hay otras opciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Backup completo&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Variable&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Backup previo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Cambios de estructura de BD&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La prevencion siempre es mejor que la curacion. Invierta en un flujo de trabajo de staging y backups automatizados para que las degradaciones sean la excepcion, no la regla.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;servicios de mantenimiento WordPress&lt;/a&gt; y el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>wordpress</category><category>security</category><category domain="tag">actualización</category><category domain="tag">backup</category><category domain="tag">wp-cli</category><category domain="tag">depuracion</category><enclosure url="https://wppoland.com/images/og/wordpress-developer.jpg" type="image/jpeg"/></item><item><title>Como restaurar WordPress despues de una actualización fallida</title><link>https://wppoland.com/es/how-do-i-restore-a-previous-version-of-wordpress-when-an-update-has-failed/</link><guid isPermaLink="true">https://wppoland.com/es/how-do-i-restore-a-previous-version-of-wordpress-when-an-update-has-failed/</guid><description>Guia completa para restaurar WordPress de forma segura despues de actualizaciones fallidas. Aprenda estrategias de backup, recuperacion manual via FTP/phpMyAdmin, restauracion basada en plugins y técnicas de prevencion.</description><pubDate>Sun, 04 Dec 2022 18:08:03 GMT</pubDate><content:encoded>&lt;p&gt;WordPress impulsa más del 43% de todos los sitios web en internet, convirtiendolo en el sistema de gestión de contenido más popular del mundo. Con actualizaciones regulares al core de WordPress, temas y plugins siendo esenciales para la seguridad y funcionalidad, el riesgo de encontrar fallos en las actualizaciones es una realidad desafortunada para muchos propietarios de sitios. Cuando una actualización sale mal, su sitio podria bloquearse, mostrar la pantalla blanca de la muerte o volverse completamente inaccesible.&lt;/p&gt;
&lt;p&gt;Esta guía completa le guíara a través de todo lo que necesita saber sobre restaurar WordPress despues de una actualización fallida. Ya sea principiante o desarrollador experimentado, estas instrucciones paso a paso le ayudaran a recuperar su sitio rápida y seguramente.&lt;/p&gt;
&lt;p&gt;Respuesta corta: si su sitio WordPress se bloqueo despues de una actualización, comience restaurando desde un backup completo. Si no esta disponible, recupere archivos via FTP, repare la base de datos si es necesario y aisle conflictos de plugins o temas antes de intentar la actualización nuevamente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;entendiendo-los-fallos-de-actualización-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-los-fallos-de-actualización-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo los fallos de actualización de WordPress&lt;/h2&gt;
&lt;p&gt;Antes de sumergirnos en el proceso de recuperacion, es importante entender por que fallan las actualizaciones de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;causas-comunes-de-fallos-de-actualización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#causas-comunes-de-fallos-de-actualización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Causas comunes de fallos de actualización&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Conflictos de plugins y temas&lt;/strong&gt;
La causa más comun es la incompatibilidad entre la nueva versión de WordPress y los plugins o temas existentes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Limitaciones de recursos del servidor&lt;/strong&gt;
Las actualizaciones de WordPress requieren suficiente memoria PHP y tiempo de ejecucion. Los entornos de hosting compartido a menudo tienen limites estrictos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Problemás de permisos de archivos&lt;/strong&gt;
WordPress necesita permisos adecuados para actualizar archivos core. Si los permisos son incorrectos, el proceso puede fallar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Interrupciones de red&lt;/strong&gt;
Durante el proceso, WordPress descarga archivos de wordpress.org. Las interrupciones de red pueden resultar en descargas incompletas o corrompidas.&lt;/p&gt;
&lt;h3 id=&quot;señales-de-una-actualización-fallida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-una-actualización-fallida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de una actualización fallida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pantalla blanca de la muerte (WSOD)&lt;/strong&gt;: Página completamente en blanco&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error 500 interno del servidor&lt;/strong&gt;: Error del lado del servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Errores de PHP&lt;/strong&gt;: Errores de código mostrados en pantalla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Panel de admin inaccesible&lt;/strong&gt;: No puede iniciar sesion en el dashboard&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;mejores-prácticas-pre-actualización-la-prevencion-es-mejor-que-la-cura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-pre-actualización-la-prevencion-es-mejor-que-la-cura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas pre-actualización: La prevencion es mejor que la cura&lt;/h2&gt;
&lt;h3 id=&quot;crear-backups-completos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crear-backups-completos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Crear backups completos&lt;/h3&gt;
&lt;p&gt;Un backup completo de WordPress consiste en dos componentes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Archivos de WordPress&lt;/strong&gt;: Todos los archivos en su directorio incluyendo core, wp-content (temas, plugins, uploads) y archivos de configuración.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Base de datos MySQL&lt;/strong&gt;: Contiene todo su contenido incluyendo entradas, páginas, datos de usuarios, configuraciónes de plugins y tema.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;probar-actualizaciones-en-entorno-de-staging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#probar-actualizaciones-en-entorno-de-staging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Probar actualizaciones en entorno de staging&lt;/h3&gt;
&lt;p&gt;Los desarrolladores profesionales de WordPress nunca actualizan sitios de producción directamente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Crear sitio de staging&lt;/strong&gt;: Muchos hosts ofrecen staging con un clic (WP Engine, SiteGround, Kinsta)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copiar producción a staging&lt;/strong&gt;: Duplique su sitio en vivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Probar actualizaciones&lt;/strong&gt;: Aplique actualizaciones en staging&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificar funcionalidad&lt;/strong&gt;: Pruebe todas las funciones del sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicar a producción&lt;/strong&gt;: Solo despues de pruebas exitosas&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-1-restaurar-desde-backup-del-hosting-más-fácil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-restaurar-desde-backup-del-hosting-más-fácil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Restaurar desde backup del hosting (más fácil)&lt;/h2&gt;
&lt;p&gt;Si su proveedor de hosting mantiene backups automatizados:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Inicie sesion en su panel de hosting&lt;/li&gt;
&lt;li&gt;Navegue a la sección de Backups&lt;/li&gt;
&lt;li&gt;Seleccione el backup más reciente antes de la actualización fallida&lt;/li&gt;
&lt;li&gt;Haga clic en “Restaurar”&lt;/li&gt;
&lt;li&gt;Espere a que el proceso complete (5-30 minutos)&lt;/li&gt;
&lt;li&gt;Verifique que el sitio funciona correctamente&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-2-restaurar-usando-plugins-de-backup&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-restaurar-usando-plugins-de-backup&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Restaurar usando plugins de backup&lt;/h2&gt;
&lt;h3 id=&quot;restaurar-con-updraftplus&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#restaurar-con-updraftplus&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Restaurar con UpdraftPlus&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Si el panel de admin es accesible:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vaya a Ajustes &gt; UpdraftPlus Backups&lt;/li&gt;
&lt;li&gt;Haga clic en la pestana “Restaurar”&lt;/li&gt;
&lt;li&gt;Seleccione el backup anterior a la actualización&lt;/li&gt;
&lt;li&gt;Marque todos los componentes: Base de datos, Plugins, Temas, Uploads&lt;/li&gt;
&lt;li&gt;Haga clic en “Restaurar”&lt;/li&gt;
&lt;li&gt;Espere el mensaje de “Restauracion exitosa”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Si el panel de admin NO es accesible:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Conecte via FTP&lt;/li&gt;
&lt;li&gt;Suba los archivos de backup manualmente&lt;/li&gt;
&lt;li&gt;Restaure la base de datos via phpMyAdmin&lt;/li&gt;
&lt;li&gt;Reactive plugins despues de la restauracion&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-3-restauracion-manual-via-ftp-y-phpmyadmin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-restauracion-manual-via-ftp-y-phpmyadmin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Restauracion manual via FTP y phpMyAdmin&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-restaurar-archivos-via-ftp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-restaurar-archivos-via-ftp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Restaurar archivos via FTP&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Conecte al servidor via FileZilla u otro clientes FTP&lt;/li&gt;
&lt;li&gt;Navegue al directorio de WordPress&lt;/li&gt;
&lt;li&gt;Suba los archivos de backup sobrescribiendo los existentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Preserve wp-config.php con las credenciales correctas&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-2-restaurar-base-de-datos-via-phpmyadmin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-restaurar-base-de-datos-via-phpmyadmin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Restaurar base de datos via phpMyAdmin&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Acceda a phpMyAdmin desde el panel de hosting&lt;/li&gt;
&lt;li&gt;Seleccione la base de datos de WordPress&lt;/li&gt;
&lt;li&gt;Marque todas las tablas y seleccione “Drop” (eliminar)&lt;/li&gt;
&lt;li&gt;Haga clic en “Importar” y seleccione su archivo backup .sql&lt;/li&gt;
&lt;li&gt;Espere a que la importacion complete&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-3-actualizar-configuración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-actualizar-configuración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Actualizar configuración&lt;/h3&gt;
&lt;p&gt;Si restauro desde un backup antiguo, actualice wp-config.php:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_NAME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nombre_base_datos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_USER&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;usuario_base_datos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_PASSWORD&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contrasena_base_datos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;localhost&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-4-reinstalacion-limpia-de-wordpress-sin-backup&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-4-reinstalacion-limpia-de-wordpress-sin-backup&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 4: Reinstalacion limpia de WordPress (sin backup)&lt;/h2&gt;
&lt;p&gt;Si no tiene backups:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Preserve wp-content&lt;/strong&gt;: Descargue la carpeta wp-content via FTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preserve wp-config.php&lt;/strong&gt;: Descargue el archivo de configuración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elimine archivos core&lt;/strong&gt;: Elimine wp-admin, wp-includes y archivos PHP raiz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Descargue WordPress fresco&lt;/strong&gt;: Desde wordpress.org/download&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suba archivos nuevos&lt;/strong&gt;: Sin sobrescribir wp-content&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visite su sitio&lt;/strong&gt;: WordPress detectara la BD existente&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;post-restauracion-verificación-y-aseguramiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#post-restauracion-verificación-y-aseguramiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Post-restauracion: Verificación y aseguramiento&lt;/h2&gt;
&lt;h3 id=&quot;lista-de-verificación-inmediata&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-inmediata&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación inmediata&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Página principal carga correctamente&lt;/li&gt;
&lt;li&gt;Panel de admin accesible (/wp-admin)&lt;/li&gt;
&lt;li&gt;Todos los plugins activados y funcionando&lt;/li&gt;
&lt;li&gt;El tema se muestra correctamente&lt;/li&gt;
&lt;li&gt;Formularios de contacto funcionan&lt;/li&gt;
&lt;li&gt;Funcionalidad de e-commerce (si aplica)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;actualizar-de-forma-segura-despues-de-la-restauracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizar-de-forma-segura-despues-de-la-restauracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizar de forma segura despues de la restauracion&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Actualice core primero&lt;/strong&gt;: Solo WordPress core, no plugins/temas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebe despues de core&lt;/strong&gt;: Verifique funcionalidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualice plugins uno por uno&lt;/strong&gt;: Pruebe despues de cada actualización&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualice tema al final&lt;/strong&gt;: Verifique personalizaciónes&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;implementar-mejor-estrategia-de-backup&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementar-mejor-estrategia-de-backup&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementar mejor estrategia de backup&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Instalar plugin de backup&lt;/strong&gt;: UpdraftPlus o BackupBuddy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurar almacenamiento externo&lt;/strong&gt;: Dropbox, Google Drive o S3&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crear programacion&lt;/strong&gt;: Backups automatizados diarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Probar restauracion&lt;/strong&gt;: Periodicamente verificar que los backups funcionan&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;técnicas-avanzadas-de-recuperacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#técnicas-avanzadas-de-recuperacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Técnicas avanzadas de recuperacion&lt;/h2&gt;
&lt;h3 id=&quot;usar-wp-cli-para-restauracion-por-linea-de-comandos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usar-wp-cli-para-restauracion-por-linea-de-comandos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usar WP-CLI para restauracion por linea de comandos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Reinstalar core de WordPress (preserva wp-content)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; download&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --force&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Desactivar todos los plugins (resolver conflictos)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; deactivate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar y reparar base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; repair&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Actualizar core de forma segura&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;reparacion-de-base-de-datos-via-phpmyadmin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reparacion-de-base-de-datos-via-phpmyadmin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reparacion de base de datos via phpMyAdmin&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;REPAIR &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;REPAIR &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;REPAIR &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;solución-de-problemas-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-de-problemas-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución de problemas comunes&lt;/h2&gt;
&lt;h3 id=&quot;error-al-establecer-conexión-con-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-al-establecer-conexión-con-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;”Error al establecer conexión con la base de datos”&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Verifique las credenciales en wp-config.php&lt;/p&gt;
&lt;h3 id=&quot;error-500-despues-de-la-restauracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-500-despues-de-la-restauracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 500 despues de la restauracion&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Renombre .htaccess a .htaccess_old via FTP. WordPress generara uno nuevo.&lt;/p&gt;
&lt;h3 id=&quot;imágenes-no-se-muestran&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-no-se-muestran&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes no se muestran&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Verifique permisos de /wp-content/uploads/ (debe ser 755). Use el plugin Better Search Replace para corregir URLs.&lt;/p&gt;
&lt;h3 id=&quot;bucle-de-redireccion-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bucle-de-redireccion-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bucle de redireccion de login&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Limpie las cookies del navegador. Verifique los valores siteurl y home en wp_options.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen-y-conclusiones-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-y-conclusiones-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen y conclusiones clave&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;La prevencion es crítica:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Siempre haga backup antes de actualizar&lt;/li&gt;
&lt;li&gt;Pruebe actualizaciones en staging&lt;/li&gt;
&lt;li&gt;Use hosting de calidad con backups automatizados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Conozca sus opciones de recuperacion:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restauracion de backup del hosting (más fácil, 10-15 min)&lt;/li&gt;
&lt;li&gt;Restauracion basada en plugins (15-30 min)&lt;/li&gt;
&lt;li&gt;FTP/phpMyAdmin manual (30-60 min, mayor control)&lt;/li&gt;
&lt;li&gt;Reinstalacion limpia (último recurso, 1-2 horas)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Actue rápida pero cuidadosamente:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Evalue el dano antes de entrar en panico&lt;/li&gt;
&lt;li&gt;Elija el método de recuperacion apropiado&lt;/li&gt;
&lt;li&gt;Verifique la restauracion exhaustivamente&lt;/li&gt;
&lt;li&gt;Implemente mejor prevencion hacia adelante&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recuerde: Todo experto en WordPress ha roto un sitio al menos una vez. Es parte del proceso de aprendizaje. Lo que separa a los profesionales de los principiantes es tener backups y saber como recuperarse rápidamente.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;servicios de mantenimiento WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactenos&lt;/a&gt; para asistencia profesional de recuperacion.&lt;/p&gt;</content:encoded><category>wordpress</category><category>maintenance</category><category>security</category><category domain="tag">wordpress</category><category domain="tag">backup</category><category domain="tag">recuperacion</category><category domain="tag">actualizaciones</category><category domain="tag">mantenimiento</category><category domain="tag">solución-problemas</category><enclosure url="https://wppoland.com/images/og/wordpress-2025-future-report.jpg" type="image/jpeg"/></item><item><title>Wordpress Meetup IN Gdynia - WordUp Trójmiasto #17</title><link>https://wppoland.com/es/wordpress-meetup-gdynia-wordup-trojmiasto-17/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-meetup-gdynia-wordup-trojmiasto-17/</guid><description>Crónica del meetup WordPress WordUp Trójmiasto #17 en Gdynia. Charlas, talleres y networking de la comunidad WordPress en Polonia.</description><pubDate>Wed, 28 Sep 2022 07:52:55 GMT</pubDate><content:encoded>&lt;p&gt;Este artículo en español resume el tema “Wordpress Meetup IN Gdynia - WordUp Trójmiasto #17” con un enfoque práctico y actual. La idea no es repetir un titular sin contexto, sino explicar por qué este asunto sigue siendo relevante, qué decisiones conviene tomar y dónde suelen aparecer los errores más comunes en proyectos WordPress reales.&lt;/p&gt;
&lt;h2 id=&quot;contexto-y-relevancia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-relevancia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y relevancia&lt;/h2&gt;
&lt;p&gt;Las publicaciónes sobre comunidad y eventos WordPress no solo documentan una fecha en el calendario. También ayudan a entender hacia dónde se mueve el ecosistema, qué debates ganan peso y cómo cambian las prioridades técnicas y de negocio entre equipos, agencias y colaboradores del proyecto.&lt;/p&gt;
&lt;h2 id=&quot;qué-conviene-tener-en-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-conviene-tener-en-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué conviene tener en cuenta&lt;/h2&gt;
&lt;p&gt;En encuentros como WordCamp, WordUp o hackathons, el valor no está únicamente en las charlas. Muchas veces lo más útil sale de conversaciones informales, revisión de casos reales y contraste de experiencias sobre rendimiento, producto, gobernanza o trabajo con clientes.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión práctica&lt;/h2&gt;
&lt;p&gt;Por eso este tipo de contenido también merece una versión en español. Aporta contexto, conserva aprendizajes del ecosistema y deja trazabilidad sobre temas que luego acaban influyendo en decisiones técnicas más amplias.&lt;/p&gt;
&lt;p&gt;Fuente base revisada: wordpress-meetup-gdynia-wordup-trojmiasto-17.en.md. El contenido se ha adaptado a una versión española útil, evitando dejar una entrada mínima o vacía dentro del repositorio multilingüe.&lt;/p&gt;</content:encoded><category>wordpress</category><category domain="tag">meetup</category><category domain="tag">wordup</category><category domain="tag">community</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Introduccion a la optimización SEO de WordPress y posicionamiento</title><link>https://wppoland.com/es/introduction-wordpress-seo-optimization/</link><guid isPermaLink="true">https://wppoland.com/es/introduction-wordpress-seo-optimization/</guid><description>Guia completa de SEO para WordPress - aspectos clave de optimización, plugins, pasos practicos de posicionamiento y guía para principiantes para mejorar rankings.</description><pubDate>Sun, 26 Jun 2022 11:35:24 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Implementar exitosamente estas técnicas de SEO requiere un enfoque sistematico que equilibre la optimización técnica con la calidad del contenido. Asi es como ejecutar cada estrategia efectivamente.&lt;/p&gt;
&lt;h3 id=&quot;que-es-el-seo-de-wordpress-y-por-que-importa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-el-seo-de-wordpress-y-por-que-importa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es el SEO de WordPress y por que importa&lt;/h3&gt;
&lt;p&gt;El SEO (Search Engine Optimization) es el proceso de optimizar tu sitio web para que aparezca más alto en los resultados de búsqueda de Google y otros motores. En WordPress, el SEO comienza con la configuración correcta de la plataforma y se extiende a través de cada pieza de contenido que publicas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por que WordPress es ideal para SEO:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Genera HTML limpio y semántico de forma predeterminada&lt;/li&gt;
&lt;li&gt;Tiene un ecosistema masivo de plugins de SEO&lt;/li&gt;
&lt;li&gt;Permite control total sobre URLs, metadatos y estructura del sitio&lt;/li&gt;
&lt;li&gt;Soporta Schema markup nativo y via plugins&lt;/li&gt;
&lt;li&gt;Es altamente personalizable para cualquier necesidad de SEO técnico&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;los-fundamentos-del-seo-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-fundamentos-del-seo-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los fundamentos del SEO en WordPress&lt;/h3&gt;
&lt;h4 id=&quot;1-configuración-básica-del-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-configuración-básica-del-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Configuración básica del sitio&lt;/h4&gt;
&lt;p&gt;Antes de pensar en plugins o estrategias avanzadas, asegurate de que los básicos estan cubiertos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Permalinks (URLs permanentes):&lt;/strong&gt;
Cambia la estructura predeterminada a “Nombre de la entrada”:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;https://tusitio.com/mi-artículo-seo/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En lugar de:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;https://tusitio.com/?p=123&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;URLs descriptivas son más fáciles de entender tanto para usuarios como para motores de búsqueda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Visibilidad para motores de búsqueda:&lt;/strong&gt;
Verifica que la opción “Disuadir a los motores de búsqueda de indexar este sitio” este DESACTIVADA en Ajustes &gt; Lectura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Certificado SSL:&lt;/strong&gt;
HTTPS es un factor de ranking. Asegurate de que tu sitio use SSL.&lt;/p&gt;
&lt;h4 id=&quot;2-elegir-el-tema-correcto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-elegir-el-tema-correcto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Elegir el tema correcto&lt;/h4&gt;
&lt;p&gt;El tema impacta directamente en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Velocidad de carga&lt;/strong&gt;: Un tema pesado con muchas funcionalidades que no usas ralentiza todo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTML semántico&lt;/strong&gt;: Los temas bien codificados usan etiquetas HTML correctas (header, nav, main, article, footer).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responsividad&lt;/strong&gt;: El diseño debe adaptarse perfectamente a móviles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core Web Vitals&lt;/strong&gt;: LCP, INP y CLS deben ser optimos desde el inicio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Recomendaciones de temas en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Temás de bloques nativos de WordPress (Twenty Twenty-Four, Twenty Twenty-Five)&lt;/li&gt;
&lt;li&gt;GeneratePress (ligero y rápido)&lt;/li&gt;
&lt;li&gt;Cadence (excelente equilibrio entre funcionalidad y rendimiento)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre nuestra &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;3-plugin-de-seo-elige-uno-configura-bien&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-plugin-de-seo-elige-uno-configura-bien&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Plugin de SEO: Elige uno, configura bien&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Rank Math (Recomendado):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Análisis de contenido en tiempo real&lt;/li&gt;
&lt;li&gt;Schema markup automático con multiples tipos&lt;/li&gt;
&lt;li&gt;Monitoreo de palabras clave integrado&lt;/li&gt;
&lt;li&gt;Versión gratuita muy completa&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Yoast SEO (Clásico):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El plugin de SEO más instalado del mundo&lt;/li&gt;
&lt;li&gt;Análisis de legibilidad integrado&lt;/li&gt;
&lt;li&gt;Buena documentación y soporte&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The SEO Framework (Minimalista):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sin publicidad ni ventas agresivas&lt;/li&gt;
&lt;li&gt;Automatizacion inteligente&lt;/li&gt;
&lt;li&gt;Muy ligero&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estructura-semántica-del-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-semántica-del-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura semántica del contenido&lt;/h3&gt;
&lt;h4 id=&quot;jerarquía-de-encabezados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#jerarquía-de-encabezados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Jerarquía de encabezados&lt;/h4&gt;
&lt;p&gt;La estructura de encabezados es crítica para que Google entienda tu contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Título principal del artículo (uno solo por página)&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Seccion principal 1&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Subseccion 1.1&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Subseccion 1.2&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Seccion principal 2&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Subseccion 2.1&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Reglas básicas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo un H1 por página (el título del artículo)&lt;/li&gt;
&lt;li&gt;Los H2 dividen las secciones principales&lt;/li&gt;
&lt;li&gt;Los H3 detallan dentro de cada sección&lt;/li&gt;
&lt;li&gt;No saltes niveles (no vayas de H2 a H4)&lt;/li&gt;
&lt;li&gt;Incluye palabras clave naturalmente en los encabezados&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;schema-markup-datos-estructurados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#schema-markup-datos-estructurados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Schema markup (datos estructurados)&lt;/h4&gt;
&lt;p&gt;Schema markup ayuda a Google a entender el &lt;em&gt;tipo&lt;/em&gt; de contenido que tienes, no solo el texto.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@context&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://schema.org&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Article&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;headline&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Introduccion a la optimización SEO de WordPress&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;author&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Person&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Mariusz Szatkowski&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;url&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://wppoland.com/es/desarrollador-wordpress/&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;publisher&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Organization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WPPoland&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;datePublished&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2022-06-26&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;dateModified&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;2023-06-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tipos de Schema utiles para WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Article&lt;/strong&gt;: Para posts de blog&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HowTo&lt;/strong&gt;: Para tutoriales paso a paso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FAQ&lt;/strong&gt;: Para secciones de preguntas frecuentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LocalBusiness&lt;/strong&gt;: Para sitios de negocios locales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product&lt;/strong&gt;: Para páginas de productos WooCommerce&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;enlaces-internos-el-modelo-pilar-cluster&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enlaces-internos-el-modelo-pilar-cluster&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enlaces internos: El modelo pilar-cluster&lt;/h3&gt;
&lt;p&gt;La estructura de enlaces internos es uno de los factores SEO más subestimados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Página pilar&lt;/strong&gt;: Un artículo largo y completo sobre un tema amplio.
Ejemplo: “Guia completa de SEO para WordPress”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Páginas cluster&lt;/strong&gt;: Artículos más específicos que profundizan en subtemas.
Ejemplos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Como optimizar imágenes para SEO en WordPress”&lt;/li&gt;
&lt;li&gt;“Guia de Schema markup para WordPress”&lt;/li&gt;
&lt;li&gt;“Core Web Vitals: Como mejorarlos en WordPress”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada página cluster enlaza a la página pilar, y la página pilar enlaza a todas las páginas cluster. Esto crea una estructura temática que Google puede rastrear y entender fácilmente.&lt;/p&gt;
&lt;h3 id=&quot;optimización-técnica-fundamental&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-técnica-fundamental&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización técnica fundamental&lt;/h3&gt;
&lt;h4 id=&quot;velocidad-de-carga&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-de-carga&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad de carga&lt;/h4&gt;
&lt;p&gt;La velocidad es un factor de ranking directo. Optimiza:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Imágenes&lt;/strong&gt;: Usa formatos modernos (WebP, AVIF) y carga diferida (lazy loading)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache&lt;/strong&gt;: Implementa cache de página con WP Rocket o LiteSpeed Cache&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS/JS&lt;/strong&gt;: Minifica y concatena recursos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;: Elige hosting WordPress gestionado con buen rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;movil-primero&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#movil-primero&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Movil primero&lt;/h4&gt;
&lt;p&gt;Google usa la indexacion mobile-first. Tu sitio debe ser perfecto en móviles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Texto legible sin hacer zoom&lt;/li&gt;
&lt;li&gt;Botones suficientemente grandes para tocar con el dedo&lt;/li&gt;
&lt;li&gt;Sin scroll horizontal&lt;/li&gt;
&lt;li&gt;Carga rápida en conexiónes 3G/4G&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;sitemap-xml&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitemap-xml&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitemap XML&lt;/h4&gt;
&lt;p&gt;Un sitemap XML le dice a Google que páginas existen y cuando fueron actualizadas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;xml&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; versi&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ón=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; encoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;urlset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; xmlns&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;https://tusitio.com/artículo-seo/&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;lastmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;2023-06-26&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;lastmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;changefreq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;monthly&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;changefreq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;priority&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;0.8&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;priority&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;urlset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La mayoria de plugins de SEO generan sitemaps automáticamente. Envialos a Google Search Console.&lt;/p&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización de contenido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de investigación de palabras clave&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica palabras clave primarias y secundarias&lt;/li&gt;
&lt;li&gt;Analiza la intencion de búsqueda para cada termino&lt;/li&gt;
&lt;li&gt;Mapea las palabras clave al contenido existente&lt;/li&gt;
&lt;li&gt;Identifica brechas de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación y optimización de contenido&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escribe títulos y meta descripciones atractivos&lt;/li&gt;
&lt;li&gt;Estructura el contenido con jerarquía de encabezados adecuada&lt;/li&gt;
&lt;li&gt;Incluye enlaces internos y externos relevantes&lt;/li&gt;
&lt;li&gt;Optimiza imágenes con texto alternativo descriptivo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asegura la responsividad móvil&lt;/li&gt;
&lt;li&gt;Mejora la velocidad de carga de la página&lt;/li&gt;
&lt;li&gt;Implementa marcado schema&lt;/li&gt;
&lt;li&gt;Corrige errores de rastreo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;midiendo-el-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-el-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo el éxito&lt;/h3&gt;
&lt;p&gt;Realiza un seguimiento de estos indicadores clave de rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crecimiento del tráfico organico&lt;/li&gt;
&lt;li&gt;Mejoras en el ranking de palabras clave&lt;/li&gt;
&lt;li&gt;Tasas de clics (CTR)&lt;/li&gt;
&lt;li&gt;Tasas de conversión&lt;/li&gt;
&lt;li&gt;Tasas de rebote&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu estrategia basandote en lo que funciona y lo que no. El SEO es un proceso continuo, no una tarea única.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con el SEO de tu sitio WordPress? Nuestro equipo de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; puede ayudarte a mejorar tu posicionamiento. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>wordpress</category><category>seo</category><category domain="tag">seo</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/llmo.jpg" type="image/jpeg"/></item><item><title>La guía definitiva de formularios WordPress y comunicación global en 2026</title><link>https://wppoland.com/es/ultimate-guide-wordpress-forms-2026/</link><guid isPermaLink="true">https://wppoland.com/es/ultimate-guide-wordpress-forms-2026/</guid><description>Deja de perder leads. Aprende a construir formularios de contacto seguros y de alta conversión en WordPress. Comparación de CF7, Gravity Forms y formularios headless. Cumplimiento GDPR incluido.</description><pubDate>Wed, 01 Jan 2020 12:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;**Si tu formulario de contacto no funciona, tu negocio no existe.** Suena dramatico, pero en 2026, el 70% de las comunicaciones B2B se producen a través de formularios. Sin embargo, la mayoria de los sitios WordPress dependen de configuraciónes por defecto de PHP `mail()` que envian los leads directamente a la carpeta de Spam.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En este manual de ingenieria de más de 2500 palabras, iremos más alla de “Instala Contact Form 7” y construiremos una &lt;strong&gt;Maquina de Generación de Leads&lt;/strong&gt; completa y profesional.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-el-problema-de-entrega-smtp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-el-problema-de-entrega-smtp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: El problema de entrega (SMTP)&lt;/h2&gt;
&lt;p&gt;La razon número uno por la que los formularios fallan es la &lt;strong&gt;Entregabilidad&lt;/strong&gt;. Los proveedores de hosting (Hosting Compartido, VPS) tienen reputaciones IP terribles. Si envias correo desde &lt;code&gt;wordpress@tusitio.com&lt;/code&gt; via PHP, Gmail y Outlook confian en el tanto como en una estafa de phishing.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-servicios-de-correo-transaccional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-servicios-de-correo-transaccional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Servicios de correo transaccional&lt;/h3&gt;
&lt;p&gt;Debes usar un proveedor SMTP externo. No es una opción - es un requisito de infraestructura.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Postmark / SendGrid / Amazon SES&lt;/strong&gt;: Motores de entrega dedicados con reputacion IP gestionada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin&lt;/strong&gt;: &lt;code&gt;FluentSMTP&lt;/code&gt; (Gratuito, Open Source) - ligero, sin bloat, conexión via API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuración&lt;/strong&gt;: Conectar via API (más rápido y seguro que credenciales SMTP)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;autenticación-de-correo-obligatoria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-de-correo-obligatoria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación de correo obligatoria&lt;/h3&gt;
&lt;p&gt;En 2026, sin SPF, DKIM y DMARC, tus correos no llegan. Punto final.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPF&lt;/strong&gt;: Define que servidores pueden enviar correos en nombre de tu dominio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DKIM&lt;/strong&gt;: Firma criptografica que verifica la integridad del correo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMARC&lt;/strong&gt;: Politica que define acciones para correos que fallan autenticación&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Snippet de código&lt;/strong&gt;: Verificación de fallos de envio.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_mail_failed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $error ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    error_log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Fallo de correo: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; print_r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $error, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;tabla-de-proveedores-smtp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-de-proveedores-smtp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla de proveedores SMTP&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Proveedor&lt;/th&gt;&lt;th&gt;Correos gratis/mes&lt;/th&gt;&lt;th&gt;Velocidad de entrega&lt;/th&gt;&lt;th&gt;Mejor para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Postmark&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;&amp;#x3C; 1 segundo&lt;/td&gt;&lt;td&gt;Correos transaccionales premium&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SendGrid&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;100/dia&lt;/td&gt;&lt;td&gt;&amp;#x3C; 3 segundos&lt;/td&gt;&lt;td&gt;Volumen alto, API robusta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Amazon SES&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;62,000 (EC2)&lt;/td&gt;&lt;td&gt;&amp;#x3C; 2 segundos&lt;/td&gt;&lt;td&gt;Escalabilidad, bajo coste&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Brevo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;300/dia&lt;/td&gt;&lt;td&gt;&amp;#x3C; 5 segundos&lt;/td&gt;&lt;td&gt;Pequeñas empresas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-el-problema-de-seguridad-spam&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-el-problema-de-seguridad-spam&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: El problema de seguridad (spam)&lt;/h2&gt;
&lt;p&gt;En 2026, los bots de IA son más inteligentes que reCAPTCHA v3. Navegan formularios, hacen clic en checkboxes y envian spam de “Servicio SEO” en masa.&lt;/p&gt;
&lt;h3 id=&quot;la-pila-de-defensa-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-pila-de-defensa-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La pila de defensa moderna&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Capa 1: Honeypot&lt;/strong&gt;
Un campo oculto que solo los bots rellenan. Simple pero efectivo.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;position:absolute;left:-5000px;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;hp_field&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tabindex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;-1&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; autocomplete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;off&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Capa 2: Cloudflare Turnstile&lt;/strong&gt;
El captcha “amigable” de 2026. Sin puzzles, sin imágenes de semaforos. Analiza comportamiento del navegador para determinar humanidad sin interrumpir la experiencia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa 3: Validación del lado del servidor&lt;/strong&gt;
Verifica IP contra listas negras, implementa rate limiting (maximo 3 envios por minuto por IP), analiza contenido del mensaje en busca de patrones de spam.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Rate limiting básico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; check_form_rate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ip ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;form_rate_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ip );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $key, ( $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;MINUTE_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-comparación-de-constructores-de-formularios-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-comparación-de-constructores-de-formularios-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Comparación de constructores de formularios 2026&lt;/h2&gt;
&lt;h3 id=&quot;1-contact-form-7-el-veterano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-contact-form-7-el-veterano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Contact Form 7 (El veterano)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Gratuito, extensiónes infinitas, control total via HTML/Shortcodes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Carga assets en cada página (impacto en rendimiento), UI básica&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;: Ideal si eres desarrollador y necesitas control granular&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optimización crítica&lt;/strong&gt;: Carga CF7 solo en páginas que tienen formulario:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-gravity-forms-la-opción-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-gravity-forms-la-opción-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Gravity Forms (La opción empresarial)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: WCAG accesible, integraciones profundas (Stripe, HubSpot, Zapier, Salesforce)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Licencia anual costosa ($59-$259/año)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funciones clave&lt;/strong&gt;: Lógica condicional, formularios multi-paso nativos, campos de calculo, pagos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;: El estándar para sitios empresariales serios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-formularios-headless-nextjs--astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-formularios-headless-nextjs--astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Formularios headless (Next.js / Astro)&lt;/h3&gt;
&lt;p&gt;Si ejecutas WordPress Headless, los plugins estándar no renderizan en el frontend.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solución&lt;/strong&gt;: POST al endpoint REST de CF7: &lt;code&gt;POST /wp-json/contact-form-7/v1/contact-forms/{id}/feedback&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alternativa&lt;/strong&gt;: React Hook Form + API Route en Next.js/Astro&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; submitForm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;formData&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; res&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;https://tu-wp.com/wp-json/contact-form-7/v1/contact-forms/123/feedback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    { method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, body: formData }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; res.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;tabla-comparativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-comparativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla comparativa&lt;/h3&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CF7&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Gravity Forms&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Headless&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Precio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$59-$259/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;DIY&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Multi-paso&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Addon&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Custom&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;GDPR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Addon&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Custom&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Integraciones&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extensiones&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30+ nativas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;API&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-privacidad-y-gdpr-la-ley&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-privacidad-y-gdpr-la-ley&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Privacidad y GDPR (La ley)&lt;/h2&gt;
&lt;p&gt;Estas recopilando PII (Información Personal Identificable). El GDPR no es opcional - multas de hasta 4% de facturacion global.&lt;/p&gt;
&lt;h3 id=&quot;requisitos-obligatorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-obligatorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos obligatorios&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Checkbox&lt;/strong&gt;: Debe estar &lt;strong&gt;desmarcado&lt;/strong&gt; por defecto. “Acepto la Politica de Privacidad”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retencion&lt;/strong&gt;: No almacenar entradas indefinidamente. Auto-eliminar tras 90 dias si sincronizado al CRM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registros&lt;/strong&gt;: Tu proveedor SMTP debe firmar un DPA (Acuerdo de Procesamiento de Datos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Derecho al olvido&lt;/strong&gt;: Mecanismo para eliminar datos bajo solicitud del usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minimizacion&lt;/strong&gt;: Recopila solo los datos estrictamente necesarios&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;implementación-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación técnica&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// CF7: Campo de consentimiento GDPR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;acceptance&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; gdpr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;He&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; leido&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; acepto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; la&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/es/privacidad/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Politica&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; de&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Privacidad&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;acceptance&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-5-optimización-de-tasa-de-conversión-cro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-optimización-de-tasa-de-conversión-cro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Optimización de tasa de conversión (CRO)&lt;/h2&gt;
&lt;p&gt;Un formulario con 10 campos asusta a los usuarios. Cada campo adicional reduce la conversión en un 11%.&lt;/p&gt;
&lt;h3 id=&quot;la-técnica-breadcrumb-formularios-multi-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-técnica-breadcrumb-formularios-multi-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La técnica “Breadcrumb” (Formularios multi-paso)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1&lt;/strong&gt;: “Cual es tu objetivo?” (Baja friccion)
&lt;strong&gt;Paso 2&lt;/strong&gt;: “Cual es tu presupuesto?” (Friccion media)
&lt;strong&gt;Paso 3&lt;/strong&gt;: “Nombre y Email” (Alta friccion, pero ya estan comprometidos)&lt;/p&gt;
&lt;p&gt;Las estadísticas muestran que los formularios multi-paso aumentan la conversión en un &lt;strong&gt;300%&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;principios-de-formularios-de-alta-conversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#principios-de-formularios-de-alta-conversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Principios de formularios de alta conversión&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Menos es mas&lt;/strong&gt;: Solo nombre, email y mensaje&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CTAs claros&lt;/strong&gt;: “Solicitar presupuesto” &gt; “Enviar”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indicadores de progreso&lt;/strong&gt;: Muestra donde esta el usuario en formularios multi-paso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validación en tiempo real&lt;/strong&gt;: Errores al instante, no al enviar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Página de confirmacion&lt;/strong&gt;: Con siguiente paso claro&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-6-integración-con-crm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-integración-con-crm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Integración con CRM&lt;/h2&gt;
&lt;p&gt;Un formulario que solo envia email es una oportunidad perdida. Cada envio debe fluir automáticamente a tu CRM.&lt;/p&gt;
&lt;h3 id=&quot;integraciones-populares&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integraciones-populares&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integraciones populares&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HubSpot&lt;/strong&gt;: Integración nativa con Gravity Forms, crea contactos y asigna a pipelines&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mautic&lt;/strong&gt; (Open Source): Ideal para agencias que necesitan automatizacion sin costes de licencia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipedrive&lt;/strong&gt;: Webhooks para crear deals automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Salesforce&lt;/strong&gt;: Via Zapier o integración directa&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;automatizacion-post-envio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-post-envio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion post-envio&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Email de confirmacion automática al usuario (&amp;#x3C; 30 segundos)&lt;/li&gt;
&lt;li&gt;Notificación al equipo via Slack o email&lt;/li&gt;
&lt;li&gt;Creación automática de tarea en gestor de proyectos&lt;/li&gt;
&lt;li&gt;Recordatorio si no hay respuesta en 24 horas&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-7-monitoreo-y-analítica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-monitoreo-y-analítica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Monitoreo y analítica&lt;/h2&gt;
&lt;p&gt;No puedes mejorar lo que no mides.&lt;/p&gt;
&lt;h3 id=&quot;eventos-ga4-para-formularios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eventos-ga4-para-formularios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eventos GA4 para formularios&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wpcf7mailsent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;event&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;form_submission&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;form_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;form_location&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: window.location.pathname,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;metricas-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas clave&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Benchmark&lt;/th&gt;&lt;th&gt;Accion&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tasa de envio&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3-5%&lt;/td&gt;&lt;td&gt;Simplificar formulario&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Abandono&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&amp;#x3C; 20%&lt;/td&gt;&lt;td&gt;Reducir campos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tiempo respuesta&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&amp;#x3C; 2 horas&lt;/td&gt;&lt;td&gt;Automatizar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Entrega email&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&gt; 98%&lt;/td&gt;&lt;td&gt;Verificar SMTP&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Nunca uses PHP mail()&lt;/strong&gt;. Configura SMTP externo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protege con Turnstile&lt;/strong&gt;, no con puzzles molestos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Válida en el servidor&lt;/strong&gt;, no solo en el clientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conecta al CRM&lt;/strong&gt;, automatiza el flujo completo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumple GDPR&lt;/strong&gt;, consentimiento explicito y retencion limitada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mide todo&lt;/strong&gt;, GA4 y eventos de formulario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios multi-paso&lt;/strong&gt; para maximizar conversión&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tu formulario es el apreton de manos digital. Que sea firme y profesional.&lt;/p&gt;
&lt;p&gt;Necesitas ayuda con &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; o &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt;? &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category><category>marketing</category><category domain="tag">forms</category><category domain="tag">contact</category><category domain="tag">smtp</category><category domain="tag">security</category><enclosure url="https://wppoland.com/images/og/tech-community-engagement.jpg" type="image/jpeg"/></item><item><title>Guia Definitiva de Formularios de Contacto en WordPress 2026</title><link>https://wppoland.com/es/wordpress-contact-forms-ultimate-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-contact-forms-ultimate-guide-2026/</guid><description>Domina los formularios de contacto de WordPress en 2026. Comparación completa de constructores de formularios, configuración SMTP, estrategias anti-spam, cumplimiento GDPR, integraciones CRM y técnicas de optimización de conversión.</description><pubDate>Wed, 01 Jan 2020 12:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;**Si tu formulario de contacto no funciona, tu negocio no existe.** Suena dramatico, pero en 2026, el 70% de las comunicaciones B2B se producen a través de formularios. Sin embargo, la mayoria de los sitios WordPress dependen de configuraciónes por defecto de PHP `mail()` que envian los leads directamente a la carpeta de Spam. En este manual de ingenieria, iremos más alla de &quot;Instala Contact Form 7&quot; para construir una **Maquina de Generación de Leads** profesional y segura.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-1-el-problema-de-entrega-smtp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-el-problema-de-entrega-smtp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: El problema de entrega (SMTP)&lt;/h2&gt;
&lt;p&gt;La razon número uno por la que los formularios fallan es la &lt;strong&gt;Entregabilidad&lt;/strong&gt;. Los proveedores de hosting (Hosting Compartido, VPS) tienen una reputacion IP terrible. Si envias correo desde &lt;code&gt;wordpress@tusitio.com&lt;/code&gt; via PHP, Gmail y Outlook confian en el tanto como en una estafa del Principe Nigeriano.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-servicios-de-correo-transaccional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-servicios-de-correo-transaccional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Servicios de correo transaccional&lt;/h3&gt;
&lt;p&gt;Debes usar un proveedor SMTP externo. Esta no es una opción - es un requisito de infraestructura en 2026.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Postmark / SendGrid / Amazon SES&lt;/strong&gt;: Estos son motores de entrega dedicados con reputacion IP optimizada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin&lt;/strong&gt;: &lt;code&gt;FluentSMTP&lt;/code&gt; (Gratuito, Open Source) - el más ligero y configurable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuración&lt;/strong&gt;: Conectar via API (más rápido que credenciales SMTP tradicionales)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;autenticación-de-correo-spf-dkim-y-dmarc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-de-correo-spf-dkim-y-dmarc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación de correo: SPF, DKIM y DMARC&lt;/h3&gt;
&lt;p&gt;En 2026, si no tienes SPF, DKIM y DMARC configurados, tus correos no llegaran. Punto.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPF (Sender Policy Framework)&lt;/strong&gt;: Define que servidores pueden enviar correos en nombre de tu dominio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DKIM (DomainKeys Identified Mail)&lt;/strong&gt;: Firma criptografica que verifica que el correo no fue alterado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMARC (Domain-based Message Authentication)&lt;/strong&gt;: Politica que define que hacer con correos que fallan SPF/DKIM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Snippet de código&lt;/strong&gt;: Verificación de fallos de envio de correo.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_mail_failed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $error ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    error_log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Fallo de correo: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; print_r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $error, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configuración-de-sendgrid-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-sendgrid-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de SendGrid paso a paso&lt;/h3&gt;
&lt;p&gt;La integración con SendGrid es el estándar de oro para sitios WordPress empresariales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crear cuenta en SendGrid y verificar dominio&lt;/li&gt;
&lt;li&gt;Generar API Key con permisos de envio&lt;/li&gt;
&lt;li&gt;Configurar registros DNS (SPF, DKIM, DMARC) en tu proveedor de dominio&lt;/li&gt;
&lt;li&gt;Instalar y configurar FluentSMTP en WordPress&lt;/li&gt;
&lt;li&gt;Enviar correo de prueba y verificar headers en Gmail (buscar “SPF: PASS”, “DKIM: PASS”)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;alternativas-de-proveedores-smtp-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativas-de-proveedores-smtp-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativas de proveedores SMTP en 2026&lt;/h3&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Proveedor&lt;/th&gt;&lt;th&gt;Correos gratis/mes&lt;/th&gt;&lt;th&gt;Mejor para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Postmark&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;Entrega premium, correos transaccionales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SendGrid&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;100/dia&lt;/td&gt;&lt;td&gt;Volumen alto, integraciones API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Amazon SES&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;62,000 (con EC2)&lt;/td&gt;&lt;td&gt;Escalabilidad extrema, bajo coste&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mailgun&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1,000&lt;/td&gt;&lt;td&gt;Desarrolladores, API robusta&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Brevo (Sendinblue)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;300/dia&lt;/td&gt;&lt;td&gt;Pequeñas empresas, marketing+transaccional&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-el-problema-de-seguridad-spam&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-el-problema-de-seguridad-spam&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: El problema de seguridad (spam)&lt;/h2&gt;
&lt;p&gt;En 2026, los bots de IA son más inteligentes que reCAPTCHA v3. Pueden navegar formularios, hacer clic en checkboxes y enviar spam de “Servicio de SEO” de forma masiva. Las defensas tradicionales son insuficientes.&lt;/p&gt;
&lt;h3 id=&quot;la-pila-de-defensa-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-pila-de-defensa-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La pila de defensa moderna&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Capa 1: Honeypot&lt;/strong&gt;
Un campo oculto que solo los bots rellenan. Simple, invisible para usuarios, y sorprendentemente efectivo contra bots básicos.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Campo honeypot oculto con CSS --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;position:absolute;left:-5000px;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;website_url_hp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; tabindex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;-1&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; autocomplete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;off&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Capa 2: Cloudflare Turnstile&lt;/strong&gt;
El captcha “amigable” de 2026. Sin puzzles. Sin imágenes de semaforos. Privacidad primero. Turnstile analiza el comportamiento del navegador para determinar si el visitante es humano, sin interrumpir la experiencia del usuario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Capa 3: Validación del lado del servidor&lt;/strong&gt;
La última linea de defensa. Verifica si la IP proviene de un pais o ASN conocido en listas negras. Implementa rate limiting por IP - maximo 3 envios de formulario por minuto.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Validacion del lado del servidor - rate limiting básico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_check_submission_rate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ip ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $transient_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;form_rate_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ip );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $transient_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bloqueado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $transient_key, ( $count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;MINUTE_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Capa 4: Validación de contenido&lt;/strong&gt;
Analiza el contenido del mensaje en busca de patrones de spam comunes: URLs excesivas, caracteres cirilicos en formularios en español, palabras clave de spam conocidas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-comparación-de-constructores-de-formularios-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-comparación-de-constructores-de-formularios-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Comparación de constructores de formularios 2026&lt;/h2&gt;
&lt;h3 id=&quot;1-contact-form-7-el-veterano&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-contact-form-7-el-veterano&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Contact Form 7 (El veterano)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Gratuito, extensiónes infinitas, amigable para desarrolladores (HTML/Shortcodes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Carga assets en cada página (impacto en rendimiento), UI fea por defecto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: 25KB de CSS + 15KB de JS en cada página (incluso donde no hay formulario)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;: Usar solo si eres desarrollador que ama CSS y necesitas control total&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optimización crítica para CF7&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cargar CF7 solo en páginas con formulario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-gravity-forms-la-opción-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-gravity-forms-la-opción-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Gravity Forms (La opción empresarial)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Cumple WCAG de accesibilidad, integraciones profundas (Stripe, HubSpot, Zapier, Salesforce)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Licencia anual costosa ($59-$259/año)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funciones exclusivas&lt;/strong&gt;: Lógica condicional avanzada, formularios multi-paso nativos, campos de calculo, pagos integrados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;: El estándar para sitios empresariales serios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-wpforms-la-opción-equilibrada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-wpforms-la-opción-equilibrada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. WPForms (La opción equilibrada)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Constructor drag-and-drop intuitivo, plantillas prediseñadas, buen soporte&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Funciones avanzadas solo en plan Pro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Veredicto&lt;/strong&gt;: Ideal para equipos de marketing sin experiencia técnica&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;4-formularios-headless-nextjs--astro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-formularios-headless-nextjs--astro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Formularios headless (Next.js / Astro)&lt;/h3&gt;
&lt;p&gt;Si ejecutas un WordPress Headless, los plugins estándar no renderizaran el formulario en el frontend.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Enviar POST al endpoint REST API de Contact Form 7&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Endpoint&lt;/strong&gt;: &lt;code&gt;POST /wp-json/contact-form-7/v1/contact-forms/{id}/feedback&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alternativa&lt;/strong&gt;: React Hook Form + API Route en Next.js/Astro para validación del lado del servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Envio de formulario headless a CF7&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; submitForm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;formData&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;https://tu-wp.com/wp-json/contact-form-7/v1/contact-forms/123/feedback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      body: formData,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;tabla-comparativa-completa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-comparativa-completa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla comparativa completa&lt;/h3&gt;






















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;CF7&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Gravity Forms&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;WPForms&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Headless&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Precio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$59-$259/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;$49-$299/año&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis (DIY)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Multi-paso&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Via addon&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Plan Pro&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Custom&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;GDPR&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Via addon&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Nativo&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Custom&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Accesibilidad&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;WCAG 2.1&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Parcial&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Custom&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Integraciones&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Extensiones&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;30+ nativas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;20+ nativas&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;API&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-privacidad-y-gdpr-la-ley&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-privacidad-y-gdpr-la-ley&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Privacidad y GDPR (La ley)&lt;/h2&gt;
&lt;p&gt;Estas recopilando PII (Información Personal Identificable). En la Union Europea, el GDPR no es opcional - es una obligacion legal con multas de hasta el 4% de la facturacion global.&lt;/p&gt;
&lt;h3 id=&quot;requisitos-obligatorios-para-formularios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-obligatorios-para-formularios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos obligatorios para formularios&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Checkbox de consentimiento&lt;/strong&gt;: Debe estar &lt;strong&gt;desmarcado&lt;/strong&gt; por defecto. Texto: “Acepto la Politica de Privacidad.” con enlace a la página de privacidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retencion de datos&lt;/strong&gt;: No almacenar entradas en la base de datos indefinidamente. Auto-eliminar despues de 90 dias si se sincroniza al CRM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Derecho al olvido&lt;/strong&gt;: Implementar mecanismo para eliminar datos de un usuario bajo solicitud&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registros (Logs)&lt;/strong&gt;: Asegurar que tu proveedor SMTP (SendGrid) firme un DPA (Acuerdo de Procesamiento de Datos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transferencias internacionales&lt;/strong&gt;: Si usas un servicio estadounidense, verificar cumplimiento con el marco EU-US Data Privacy Framework&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;implementación-técnica-de-consentimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-técnica-de-consentimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación técnica de consentimiento&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo CF7: Campo de consentimiento GDPR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;acceptance&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; gdpr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;consent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;He&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; leido&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; acepto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; la&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/es/politica-de-privacidad/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Politica&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; de&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Privacidad&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;acceptance&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;almacenamiento-seguro-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#almacenamiento-seguro-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Almacenamiento seguro de datos&lt;/h3&gt;
&lt;p&gt;Los datos del formulario deben cifrarse en reposo si se almacenan en la base de datos. Usa el plugin Flamingo con CF7 solo si necesitas almacenamiento temporal, y configura limpieza automática.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-5-optimización-de-tasa-de-conversión-cro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-optimización-de-tasa-de-conversión-cro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Optimización de tasa de conversión (CRO)&lt;/h2&gt;
&lt;p&gt;Un formulario con 10 campos asusta a los usuarios. Las estadísticas lo confirman: cada campo adicional reduce la tasa de conversión en un 11%. En 2026, la experiencia del formulario es tan importante como la experiencia del sitio.&lt;/p&gt;
&lt;h3 id=&quot;la-técnica-breadcrumb-formularios-multi-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-técnica-breadcrumb-formularios-multi-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La técnica “Breadcrumb” (Formularios multi-paso)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1&lt;/strong&gt;: “Cual es tu objetivo?” (Baja friccion - el usuario solo elige una opción)
&lt;strong&gt;Paso 2&lt;/strong&gt;: “Cual es tu presupuesto?” (Friccion media - compromiso incremental)
&lt;strong&gt;Paso 3&lt;/strong&gt;: “Nombre y Email” (Alta friccion - pero ya estan comprometidos psicologicamente)&lt;/p&gt;
&lt;p&gt;Las estadísticas muestran que los formularios multi-paso aumentan la conversión en un &lt;strong&gt;300%&lt;/strong&gt; comparado con formularios de una sola página.&lt;/p&gt;
&lt;h3 id=&quot;principios-de-diseño-de-formularios-de-alta-conversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#principios-de-diseño-de-formularios-de-alta-conversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Principios de diseño de formularios de alta conversión&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Menos es mas&lt;/strong&gt;: Pide solo lo estrictamente necesario. Nombre, email y mensaje&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Botones de accion claros&lt;/strong&gt;: “Enviar solicitud” &gt; “Submit” generico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indicadores de progreso&lt;/strong&gt;: En formularios multi-paso, muestra donde esta el usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validación en tiempo real&lt;/strong&gt;: Errores mostrados al instante, no despues de enviar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respuesta de confirmacion&lt;/strong&gt;: Página de agradecimiento con siguiente paso claro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A/B Testing&lt;/strong&gt;: Prueba variaciones del formulario para optimizar continuamente&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;formularios-conversacionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#formularios-conversacionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Formularios conversacionales&lt;/h3&gt;
&lt;p&gt;La tendencia en 2026 es el formulario “conversacional” - una pregunta a la vez, estilo chat. Herramientas como Typeform o formularios personalizados con React crean una experiencia que se siente como una conversacion, no como un formulario burocratico.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-6-integración-con-crm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-integración-con-crm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Integración con CRM&lt;/h2&gt;
&lt;p&gt;Un formulario que solo envia un email es una oportunidad perdida. En 2026, cada envio de formulario debe fluir automáticamente a tu CRM.&lt;/p&gt;
&lt;h3 id=&quot;integraciones-populares&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integraciones-populares&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integraciones populares&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HubSpot&lt;/strong&gt;: Gravity Forms tiene integración nativa. Crea contactos y asigna a pipelines automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Salesforce&lt;/strong&gt;: Via Zapier o integración directa con Gravity Forms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mautic&lt;/strong&gt; (Open Source): Ideal para agencias que necesitan automatizacion de marketing sin costes de licencia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipedrive&lt;/strong&gt;: Webhooks personalizados para crear deals automáticamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;automatizacion-post-envio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-post-envio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion post-envio&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Respuesta automática inmediata&lt;/strong&gt;: Email de confirmacion al usuario en menos de 30 segundos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notificación al equipo&lt;/strong&gt;: Slack, Teams o email al responsable asignado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creación de tarea&lt;/strong&gt;: Tarea automática en Asana/Monday/ClickUp&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguimiento programado&lt;/strong&gt;: Recordatorio automático si no hay respuesta en 24 horas&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-7-monitoreo-y-analítica-de-formularios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-monitoreo-y-analítica-de-formularios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Monitoreo y analítica de formularios&lt;/h2&gt;
&lt;p&gt;No puedes mejorar lo que no mides. Implementa tracking en cada formulario.&lt;/p&gt;
&lt;h3 id=&quot;google-analytics-4--tag-manager&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-analytics-4--tag-manager&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Analytics 4 + Tag Manager&lt;/h3&gt;
&lt;p&gt;Rastrea eventos de formulario: visualización, inicio de rellenado, envio exitoso, errores de validación.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Tracking de envio de formulario con GA4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wpcf7mailsent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;event&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;form_submission&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;form_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto_principal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;form_location&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: window.location.pathname,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;metricas-clave-a-monitorear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-clave-a-monitorear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas clave a monitorear&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metrica&lt;/th&gt;&lt;th&gt;Benchmark 2026&lt;/th&gt;&lt;th&gt;Accion si esta bajo&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tasa de envio&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3-5% de visitantes&lt;/td&gt;&lt;td&gt;Simplificar formulario&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tasa de abandono&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&amp;#x3C; 20%&lt;/td&gt;&lt;td&gt;Reducir campos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tiempo de respuesta&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&amp;#x3C; 2 horas&lt;/td&gt;&lt;td&gt;Automatizar notificaciones&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tasa de entrega email&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&gt; 98%&lt;/td&gt;&lt;td&gt;Verificar SMTP/DNS&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen-y-checklist-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-y-checklist-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen y checklist de implementación&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Nunca uses PHP mail()&lt;/strong&gt;. Configura SMTP con un servicio transaccional dedicado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protege con Turnstile&lt;/strong&gt;, no con puzzles molestos que frustran usuarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Válida en el servidor&lt;/strong&gt;, no solo en el clientes (JavaScript se puede saltar)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conecta al CRM&lt;/strong&gt;, no solo envies email - automatiza el flujo completo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumple GDPR&lt;/strong&gt;, con consentimiento explicito y retencion limitada de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mide todo&lt;/strong&gt;, con GA4 y eventos de formulario para optimización continua&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa formularios multi-paso&lt;/strong&gt; para maximizar la tasa de conversión&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tu formulario es el apreton de manos digital de tu negocio. Que sea firme, profesional y confiable.&lt;/p&gt;
&lt;p&gt;Necesitas ayuda con la configuración de formularios o &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt;? Consulta nuestros &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;servicios de mantenimiento WordPress&lt;/a&gt; o &lt;a href=&quot;/es/contacto/&quot;&gt;contactanos&lt;/a&gt; directamente.&lt;/p&gt;</content:encoded><category>development</category><category>marketing</category><category domain="tag">forms</category><category domain="tag">contact</category><category domain="tag">smtp</category><category domain="tag">security</category><category domain="tag">gdpr</category><category domain="tag">conversión</category><enclosure url="https://wppoland.com/images/og/tech-community-engagement.jpg" type="image/jpeg"/></item><item><title>Ideas para generar tráfico web y captar inscripciones a webinars</title><link>https://wppoland.com/es/ideas-building-traffic-webinar-signups/</link><guid isPermaLink="true">https://wppoland.com/es/ideas-building-traffic-webinar-signups/</guid><description>Guía completa para generar tráfico y aumentar las inscripciones a webinars - optimización on-site, acciones externas y estrategias de publicación.</description><pubDate>Tue, 15 Oct 2019 09:18:01 GMT</pubDate><content:encoded>&lt;p&gt;Ideas para generar tráfico web y captar inscripciones a webinars divididas en 4 categorías:&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;a-preparación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#a-preparación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;A. Preparación&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Define con precisión tu audiencia&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;¿Qué grupo de edad tienen mis asistentes?&lt;/li&gt;
&lt;li&gt;¿Qué problemas quieren resolver?&lt;/li&gt;
&lt;li&gt;¿Por qué deberían participar en el webinar - qué van a obtener?&lt;/li&gt;
&lt;li&gt;¿Necesitan soluciones a problemas, consejos para ser más productivos o ahorrar dinero?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Elige el día correcto&lt;/strong&gt; - Miércoles y jueves, de 13:00 a 15:00 son los más productivos&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tema del webinar bien elegido&lt;/strong&gt; - construyendo sobre temas tratados recientemente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Listas - ej., “10 reglas esenciales que todo importador debe recordar”&lt;/li&gt;
&lt;li&gt;Cómo hacer - ej., “Cómo enviar mercancías rápidamente desde China y pagar menos en aduanas”&lt;/li&gt;
&lt;li&gt;Consejos para - dividir audiencias: principiantes y avanzados&lt;/li&gt;
&lt;li&gt;Evitar clickbait - reduce la credibilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usa herramientas dedicadas para webinars&lt;/strong&gt; que no intimiden (ej., Clickmeeting en lugar de Microsoft Teams)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;b-acciones-on-site&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#b-acciones-on-site&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;B. Acciones on-site&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Prepara una landing page rápida para inscripciones que convierta bien (pruebas A/B si la audiencia es grande)&lt;/li&gt;
&lt;li&gt;LP en AMP - los usuarios móviles se inscriben más fácilmente&lt;/li&gt;
&lt;li&gt;Blog fuerte y valioso - Escribir consejos legales interesantes en el blog&lt;/li&gt;
&lt;li&gt;Banner/barra en el sitio web de la empresa o en una página popular&lt;/li&gt;
&lt;li&gt;Optimización SEO para resultados de búsqueda orgánicos&lt;/li&gt;
&lt;li&gt;Optimización de long-tail&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;c-acciones-externas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#c-acciones-externas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;C. Acciones externas&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Pide a los vendedores que pregunten a los clientes si se han inscrito en el webinar&lt;/li&gt;
&lt;li&gt;Graba teasers antes del estreno, material detrás de cámaras&lt;/li&gt;
&lt;li&gt;Pública anuncios y clips cortos después del webinar + comparte en redes sociales&lt;/li&gt;
&lt;li&gt;Anima a los participantes a añadir el evento a su calendario (itinerario en los correos)&lt;/li&gt;
&lt;li&gt;Entrevista a expertos/referentes con audiencia existente&lt;/li&gt;
&lt;li&gt;Intercambio de publicaciónes entre sitios y guest posts&lt;/li&gt;
&lt;li&gt;Elige ubicaciones objetivo y promoción PPC de pago - banners, Google Ads&lt;/li&gt;
&lt;li&gt;Webinars en VIVO simultáneamente en FB/YT&lt;/li&gt;
&lt;li&gt;Mailing con recordatorio/invitación a la base de clientes 4 veces: anuncio / 4 semanas / 1 semana / 1 día / 1 hora&lt;/li&gt;
&lt;li&gt;Cambios frecuentes de plantilla en los correos de notificación&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;d-publicación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#d-publicación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;D. Publicación&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Graba todos los webinars y crea un archivo&lt;/li&gt;
&lt;li&gt;Pública los webinars de forma anticipada para el grupo VIP&lt;/li&gt;
&lt;li&gt;Crea transcripciones - SEO&lt;/li&gt;
&lt;li&gt;Optimiza el vídeo publicado - títulos, descripciones, schema.org&lt;/li&gt;
&lt;li&gt;Índice de contenidos con publicación del webinar - índice, agenda y lista de temas con enlaces a las fuentes&lt;/li&gt;
&lt;li&gt;Envía un correo de seguimiento justo después y pide comentarios y valoración&lt;/li&gt;
&lt;li&gt;Pública en foros para el grupo objetivo&lt;/li&gt;
&lt;li&gt;Usa diferentes medios para las grabaciones del webinar - YouTube, Facebook, Vimeo, como podcast (blog, iTunes, SoundCloud, Spotify, RSS)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;e-estrategia-avanzada-de-promoción-de-webinars&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#e-estrategia-avanzada-de-promoción-de-webinars&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;E. Estrategia avanzada de promoción de webinars&lt;/h2&gt;
&lt;h3 id=&quot;el-poder-del-contenido-previo-al-webinar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-poder-del-contenido-previo-al-webinar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El poder del contenido previo al webinar&lt;/h3&gt;
&lt;p&gt;La creación de contenido previo al webinar es una de las estrategias más subestimadas para generar inscripciones. Al menos dos semanas antes del evento, deberías comenzar a publicar contenido relacionado con el tema del webinar en tu blog y redes sociales. Esto no solo genera expectativa, sino que también mejora tu posicionamiento SEO para las palabras clave relacionadas con el tema del webinar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de contenido previo al webinar:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Artículos de blog que abordan parcialmente el tema (dejando los detalles más valiosos para el webinar)&lt;/li&gt;
&lt;li&gt;Infografías que resumen estadísticas clave que se discutirán en profundidad durante el evento&lt;/li&gt;
&lt;li&gt;Vídeos cortos de 60-90 segundos donde el ponente presenta una pregunta provocadora que se responderá en el webinar&lt;/li&gt;
&lt;li&gt;Posts en redes sociales con datos sorprendentes que capturen la atención de la audiencia&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-de-la-landing-page-para-conversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-la-landing-page-para-conversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de la landing page para conversión&lt;/h3&gt;
&lt;p&gt;La landing page de inscripción es el elemento más crítico de tu embudo de captación. Una landing page bien optimizada puede marcar la diferencia entre una tasa de conversión del 20% y una del 60%.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elementos esenciales de una landing page de webinar de alta conversión:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Titular claro y orientado a beneficios&lt;/strong&gt;: En lugar de “Webinar sobre marketing digital”, usa “Descubre las 5 estrategias de marketing que triplicaron nuestras ventas en 90 días”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuenta regresiva&lt;/strong&gt;: Un temporizador visible que muestre cuánto tiempo queda para la inscripción&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba social&lt;/strong&gt;: Testimonios de asistentes anteriores, número de inscritos, logos de empresas participantes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formulario simplificado&lt;/strong&gt;: Solo pide la información estrictamente necesaria (nombre y correo electrónico como mínimo)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beneficios específicos&lt;/strong&gt;: Lista con viñetas de lo que los asistentes aprenderán&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Biografía del ponente&lt;/strong&gt;: Credenciales y experiencia que establecen autoridad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velocidad de carga&lt;/strong&gt;: La página debe cargar en menos de 2 segundos en dispositivos móviles&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;automatización-del-embudo-de-inscripciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatización-del-embudo-de-inscripciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatización del embudo de inscripciones&lt;/h3&gt;
&lt;p&gt;La automatización es crucial para maximizar el número de inscripciones y la asistencia real al webinar. Un embudo automatizado bien diseñado puede aumentar la asistencia en un 40-60% respecto a un simple correo de confirmación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secuencia de correos automatizada recomendada:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Correo de confirmación inmediata&lt;/strong&gt; (al inscribirse): Confirma la inscripción, proporciona los detalles del evento y añade un enlace para agregar el evento al calendario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correo de calentamiento&lt;/strong&gt; (1 semana antes): Comparte un recurso gratuito relacionado con el tema y recuerda el valor que obtendrán&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correo de recordatorio&lt;/strong&gt; (1 día antes): Recuerda la hora y el enlace de acceso, genera expectativa con una pregunta intrigante&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correo de última hora&lt;/strong&gt; (1 hora antes): Mensaje breve y directo con el enlace de acceso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correo de seguimiento&lt;/strong&gt; (inmediatamente después): Agradece la asistencia, comparte la grabación y pide feedback&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correo de re-engagement&lt;/strong&gt; (2 días después): Para quienes no asistieron, ofrece la grabación y genera interés en futuros eventos&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;estrategias-de-seo-para-webinars&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-seo-para-webinars&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de SEO para webinars&lt;/h3&gt;
&lt;p&gt;El SEO puede ser una fuente constante de inscripciones a webinars si se implementa correctamente. La clave está en crear contenido permanente que siga atrayendo tráfico orgánico mucho después de la fecha del webinar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Optimización SEO para páginas de webinars:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa palabras clave long-tail relacionadas con el tema del webinar en el título y la descripción de la landing page&lt;/li&gt;
&lt;li&gt;Crea una página permanente para la serie de webinars (no solo para eventos individuales)&lt;/li&gt;
&lt;li&gt;Implementa schema.org Event para que Google muestre información enriquecida en los resultados de búsqueda&lt;/li&gt;
&lt;li&gt;Después del webinar, convierte la página de inscripción en una página de acceso a la grabación, manteniendo la URL y el posicionamiento&lt;/li&gt;
&lt;li&gt;Transcribe el webinar y publícalo como artículo de blog, optimizado para SEO&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;métricas-clave-para-medir-el-éxito-del-webinar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métricas-clave-para-medir-el-éxito-del-webinar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métricas clave para medir el éxito del webinar&lt;/h3&gt;
&lt;p&gt;Para mejorar continuamente tu estrategia de webinars, es esencial medir las métricas correctas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Métricas de inscripción:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tasa de conversión de la landing page (objetivo: 30-50%)&lt;/li&gt;
&lt;li&gt;Coste por inscripción por canal de adquisición&lt;/li&gt;
&lt;li&gt;Número de inscripciones por día/semana&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Métricas de asistencia:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tasa de asistencia sobre inscritos (objetivo: 40-60%)&lt;/li&gt;
&lt;li&gt;Tiempo medio de permanencia en el webinar&lt;/li&gt;
&lt;li&gt;Momento de mayor abandono (indica dónde el contenido pierde interés)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Métricas de engagement:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas realizadas durante el webinar&lt;/li&gt;
&lt;li&gt;Participación en encuestas y sondeos&lt;/li&gt;
&lt;li&gt;Descargas de recursos compartidos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Métricas de conversión post-webinar:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tasa de visualización de la grabación&lt;/li&gt;
&lt;li&gt;Leads generados&lt;/li&gt;
&lt;li&gt;Ventas atribuidas al webinar&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reutilización-del-contenido-del-webinar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reutilización-del-contenido-del-webinar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reutilización del contenido del webinar&lt;/h3&gt;
&lt;p&gt;Un solo webinar puede generar docenas de piezas de contenido si se reutiliza estratégicamente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Grabación completa&lt;/strong&gt;: Publicar en YouTube, Vimeo y tu sitio web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clips cortos&lt;/strong&gt;: Fragmentos de 1-3 minutos para redes sociales (Instagram Reels, TikTok, YouTube Shorts)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artículo de blog&lt;/strong&gt;: Transcripción editada y optimizada para SEO&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infografía&lt;/strong&gt;: Resumen visual de los puntos clave&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Podcast&lt;/strong&gt;: Extraer el audio y publicarlo como episodio de podcast&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presentación&lt;/strong&gt;: Compartir las diapositivas en SlideShare o tu blog&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;: Resumen con los puntos más destacados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Posts de redes sociales&lt;/strong&gt;: Series de publicaciónes con las citas y datos más relevantes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ebook o whitepaper&lt;/strong&gt;: Compilación de varios webinars sobre un tema similar&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;herramientas-recomendadas-para-webinars-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-recomendadas-para-webinars-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas recomendadas para webinars en 2026&lt;/h3&gt;
&lt;p&gt;La elección de la plataforma de webinar correcta puede afectar significativamente la experiencia del participante y, por tanto, las tasas de inscripción y asistencia futuras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plataformás principales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zoom Webinars&lt;/strong&gt;: La más conocida, buena integración con herramientas de marketing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clickmeeting&lt;/strong&gt;: Interfaz intuitiva, ideal para audiencias internacionales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demio&lt;/strong&gt;: Enfocada en marketing, excelente para automatización&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Livestorm&lt;/strong&gt;: Moderna, con buenas analíticas integradas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebinarJam&lt;/strong&gt;: Económica, buena para audiencias grandes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Herramientas complementarias:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zapier&lt;/strong&gt;: Para automatizar la conexión entre la plataforma de webinar y tu CRM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mautic&lt;/strong&gt;: Para automatización de correos de seguimiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Analytics&lt;/strong&gt;: Para rastrear conversiones y fuentes de tráfico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hotjar&lt;/strong&gt;: Para analizar el comportamiento en la landing page&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;construyendo-una-comunidad-alrededor-de-tus-webinars&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construyendo-una-comunidad-alrededor-de-tus-webinars&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construyendo una comunidad alrededor de tus webinars&lt;/h3&gt;
&lt;p&gt;El verdadero poder de los webinars no está en eventos individuales, sino en construir una comunidad de seguidores que asistan regularmente. Para lograr esto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Establece una programación regular (ej., cada martes a las 14:00)&lt;/li&gt;
&lt;li&gt;Crea un grupo privado (Facebook, Slack, Discord) donde los asistentes puedan interactuar entre webinars&lt;/li&gt;
&lt;li&gt;Involucra a la comunidad en la elección de temas futuros&lt;/li&gt;
&lt;li&gt;Reconoce y premia a los asistentes frecuentes&lt;/li&gt;
&lt;li&gt;Ofrece contenido exclusivo para miembros de la comunidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoría de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>seo</category><category>Social Media</category><category domain="tag">seo</category><category domain="tag">webinar</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Correccion de errores de dimensiones de imagen y CLS en WordPress (guía 2026)</title><link>https://wppoland.com/es/fixing-image-dimension-errors-cls-guide/</link><guid isPermaLink="true">https://wppoland.com/es/fixing-image-dimension-errors-cls-guide/</guid><description>Google Search Console le advierte sobre &apos;Tamaño de imagen menor al recomendado&apos;? O su puntuacion CLS esta en rojo? Aprenda a corregir problemas modernos de imágenes.</description><pubDate>Tue, 15 Jan 2019 17:13:09 GMT</pubDate><content:encoded>&lt;h2 id=&quot;entendiendo-los-errores-de-dimensiones-de-imagen-y-cls&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-los-errores-de-dimensiones-de-imagen-y-cls&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo los errores de dimensiones de imagen y CLS&lt;/h2&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Cumulative Layout Shift (CLS) es uno de los tres Core Web Vitals de Google y mide la estabilidad visual de su página durante la carga. Las imágenes sin dimensiones explicitas son una de las causas más comunes de un CLS deficiente.&lt;/p&gt;
&lt;p&gt;Cuando un navegador no sabe el tamaño de una imagen antes de cargarla, no puede reservar el espacio correcto en el diseño. Cuando la imagen finalmente se carga, todo el contenido debajo se desplaza, creando una experiencia frustrante para el usuario.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-fundamental&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-fundamental&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema fundamental&lt;/h3&gt;
&lt;p&gt;Sin atributos &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt; en las etiquetas &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt;, el navegador pasa por este proceso:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Renderiza el HTML y CSS&lt;/li&gt;
&lt;li&gt;Encuentra una etiqueta &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt; sin dimensiones&lt;/li&gt;
&lt;li&gt;No sabe cuanto espacio reservar, asigna 0px&lt;/li&gt;
&lt;li&gt;La imagen se descarga y el navegador ahora conoce las dimensiones reales&lt;/li&gt;
&lt;li&gt;Todo el contenido debajo se desplaza para hacer espacio&lt;/li&gt;
&lt;li&gt;CLS aumenta, la puntuacion de Core Web Vitals empeora&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;la-solución-atributos-de-dimension-explicitos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-atributos-de-dimension-explicitos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Atributos de dimension explicitos&lt;/h3&gt;
&lt;p&gt;Siempre incluya &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt; en sus etiquetas de imagen:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Correcto: dimensiones explicitas --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;foto.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;800&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;600&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Descripcion de la foto&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Incorrecto: sin dimensiones --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;foto.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Descripcion de la foto&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;WordPress moderno (6.0+) agrega automáticamente estos atributos a las imágenes insertadas a través de la biblioteca de medios. Sin embargo, las imágenes agregadas manualmente en HTML personalizado, bloques de código o plantillas de tema a menudo carecen de estas dimensiones.&lt;/p&gt;
&lt;h2 id=&quot;css-aspect-ratio-la-solución-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-aspect-ratio-la-solución-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS aspect-ratio: La solución moderna&lt;/h2&gt;
&lt;p&gt;La propiedad CSS &lt;code&gt;aspect-ratio&lt;/code&gt; es la forma moderna de reservar espacio para imágenes responsivas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Reservar espacio manteniendo la responsividad */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  aspect-ratio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* O específicar directamente */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.hero-image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  aspect-ratio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  object-fit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;por-que-aspect-ratio-es-superior-al-truco-del-padding&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-aspect-ratio-es-superior-al-truco-del-padding&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que aspect-ratio es superior al truco del padding&lt;/h3&gt;
&lt;p&gt;Antes de &lt;code&gt;aspect-ratio&lt;/code&gt;, los desarrolladores usaban el truco del padding-bottom para reservar espacio:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Metodo antiguo (padding hack) */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;relative&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  padding-bottom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;56.25&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* 16:9 */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  object-fit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Metodo moderno (aspect-ratio) */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  aspect-ratio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  object-fit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El método moderno es más limpio, más fácil de mantener y funciona nativamente en todos los navegadores modernos.&lt;/p&gt;
&lt;h2 id=&quot;requisitos-de-imagen-para-google-discover&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-de-imagen-para-google-discover&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos de imagen para Google Discover&lt;/h2&gt;
&lt;p&gt;Google Discover es una fuente significativa de tráfico para muchos sitios. Para ser elegible para tarjetas de alta visibilidad en Discover, sus imágenes destacadas deben cumplir ciertos requisitos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ancho minimo&lt;/strong&gt;: 1200px&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relación de aspecto&lt;/strong&gt;: Preferiblemente 16:9 o 4:3&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formato&lt;/strong&gt;: JPEG, PNG, WebP (AVIF con soporte creciente)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad&lt;/strong&gt;: Alta calidad sin compresion excesiva&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;verificación-en-google-search-console&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-en-google-search-console&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación en Google Search Console&lt;/h3&gt;
&lt;p&gt;Si ve advertencias de “Imagen de tamaño menor al recomendado” en GSC:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vaya a Search Console &gt; Mejoras &gt; Páginas AMP o Discover&lt;/li&gt;
&lt;li&gt;Identifique las páginas con advertencias&lt;/li&gt;
&lt;li&gt;Re-suba las imágenes destacadas con al menos 1200px de ancho&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;wp_get_attachment_image_src()&lt;/code&gt; para verificar tamaños programaticamente&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificar tamaño de imagen destacada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$featured_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_thumbnail_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$image_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_attachment_image_src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($featured_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;full&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($image_data) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $image_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Imagen demasiado pequena para Google Discover&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        error_log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Imagen destacada del post {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;} es solo {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}px de ancho&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;auditoria-de-lazy-loading-y-lcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-de-lazy-loading-y-lcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria de lazy loading y LCP&lt;/h2&gt;
&lt;p&gt;El lazy loading es excelente para imágenes debajo del pliegue, pero puede ser devastador para el rendimiento si se aplica a la imagen LCP (Largest Contentful Paint):&lt;/p&gt;
&lt;h3 id=&quot;identificar-la-imagen-lcp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#identificar-la-imagen-lcp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Identificar la imagen LCP&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Abra Chrome DevTools (F12)&lt;/li&gt;
&lt;li&gt;Vaya a la pestana Performance&lt;/li&gt;
&lt;li&gt;Recargue la página con grabacion&lt;/li&gt;
&lt;li&gt;Busque el marcador LCP - identifica que elemento es el LCP&lt;/li&gt;
&lt;li&gt;Si es una imagen, asegurese de que NO tenga &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;correccion-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#correccion-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Correccion en WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Asegurar que la imagen hero nunca tenga lazy loading&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_img_tag_add_loading_attr&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($value, $image, $context) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Detectar imagen hero por clase CSS o posicion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($image, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero-image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// No agregar loading attr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar fetchpriority=&apos;high&apos; a la imagen hero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_image_attributes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr, $attachment, $size) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($size &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;hero&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fetchpriority&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;high&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;eager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;herramientas-de-diagnóstico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-diagnóstico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de diagnóstico&lt;/h2&gt;
&lt;h3 id=&quot;pagespeed-insights&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pagespeed-insights&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PageSpeed Insights&lt;/h3&gt;
&lt;p&gt;Ejecute PageSpeed Insights en sus páginas principales y busque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Avoid large layout shifts” (CLS)&lt;/li&gt;
&lt;li&gt;“Image elements do not have explicit width and height”&lt;/li&gt;
&lt;li&gt;“Largest Contentful Paint image was lazily loaded”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;chrome-devtools---layout-shift-regions&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#chrome-devtools---layout-shift-regions&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Chrome DevTools - Layout Shift Regions&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Abra DevTools &gt; Rendering (tres puntos &gt; More tools &gt; Rendering)&lt;/li&gt;
&lt;li&gt;Active “Layout Shift Regions”&lt;/li&gt;
&lt;li&gt;Recargue la página&lt;/li&gt;
&lt;li&gt;Las regiones que cambian se resaltaran en azul&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;web-vitals-extension&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#web-vitals-extension&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Web Vitals Extension&lt;/h3&gt;
&lt;p&gt;La extensión Web Vitals para Chrome muestra metricas en tiempo real mientras navega, incluyendo CLS con detalles de que elementos causaron los saltos.&lt;/p&gt;
&lt;h2 id=&quot;correccion-masiva-de-imágenes-existentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#correccion-masiva-de-imágenes-existentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Correccion masiva de imágenes existentes&lt;/h2&gt;
&lt;p&gt;Para sitios con muchas imágenes sin dimensiones, use este enfoque sistematico:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar dimensiones a imagenes en contenido existente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Buscar imagenes sin width/height&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $pattern &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;img(?![^&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;width)[^&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/i&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_replace_callback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($pattern, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($matches) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $img &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $matches[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Extraer src&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;src=[&quot;\&apos;]([^&quot;\&apos;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;)[&quot;\&apos;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/i&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $img, $src_match);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$src_match) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $img;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Obtener dimensiones del archivo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attachment_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; attachment_url_to_postid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($src_match[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$attachment_id) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $img;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $metadata &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_attachment_metadata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attachment_id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$metadata) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $img;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $metadata[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;width&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $height &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $metadata[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;height&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Insertar dimensiones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&amp;#x3C;img&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;img width=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; height=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $img);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }, $content);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Los errores de dimensiones de imagen y CLS son problemas comunes pero fácilmente soluciónables:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Siempre incluya &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt;&lt;/strong&gt; en etiquetas &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;aspect-ratio&lt;/code&gt; en CSS&lt;/strong&gt; para contenedores de imágenes responsivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suba imágenes de al menos 1200px&lt;/strong&gt; para elegibilidad en Google Discover&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nunca aplique lazy loading&lt;/strong&gt; a la imagen LCP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audite regularmente&lt;/strong&gt; con PageSpeed Insights y Chrome DevTools&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Estas correcciones son de las más impactantes que puede hacer para mejorar sus &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Core Web Vitals&lt;/a&gt; y la experiencia del usuario.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de SEO WordPress&lt;/a&gt; y el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>seo</category><category>performance</category><category domain="tag">amp</category><category domain="tag">core-web-vitals</category><category domain="tag">cls</category><category domain="tag">imágenes</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>La guía definitiva para migrar URLs de la base de datos WordPress (edicion 2026)</title><link>https://wppoland.com/es/how-to-change-wordpress-domain-database-url-update/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-change-wordpress-domain-database-url-update/</guid><description>Mudando tu sitio a un nuevo dominio? NO uses consultas SQL! Una guía completa sobre Serializacion, WP-CLI y estrategias de migración seguras.</description><pubDate>Sat, 24 Nov 2018 15:25:29 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Conoce más sobre la &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración de sitios web a Astro y Next.js&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Cambiar el dominio de un sitio WordPress parece simple en teoria: solo reemplaza la URL vieja con la nueva en la base de datos. En la práctica, un enfoque ingenuo puede destruir tu sitio completamente. Esta guía explica por que y como hacerlo correctamente.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-serializacion-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-serializacion-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema: Serializacion PHP&lt;/h3&gt;
&lt;p&gt;WordPress almacena muchas configuraciónes como datos serializados en la base de datos. La serializacion PHP incluye la longitud de cada cadena de texto:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;s:26:&quot;https://viejo-dominio.com&quot;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El &lt;code&gt;s:26&lt;/code&gt; significa “cadena de 26 caracteres”. Si simplemente haces un &lt;code&gt;REPLACE&lt;/code&gt; SQL para cambiar la URL:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- PELIGRO: NUNCA hagas esto!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;UPDATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; REPLACE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(option_value, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;viejo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nuevo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La longitud de la cadena cambia pero el prefijo &lt;code&gt;s:26&lt;/code&gt; no se actualiza. WordPress no puede leer los datos corruptos y el resultado es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tema restablecido&lt;/strong&gt; al predeterminado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Widgets desaparecidos&lt;/strong&gt; de todas las barras laterales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opciones del Customizer perdidas&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuraciónes de plugins rotas&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menús de navegación destruidos&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-solución-herramientas-conscientes-de-serializacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-herramientas-conscientes-de-serializacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Herramientas conscientes de serializacion&lt;/h3&gt;
&lt;p&gt;Las herramientas correctas deserializan los datos, hacen el reemplazo, recalculan la longitud de la cadena y vuelven a serializar. Esto preserva la integridad de los datos.&lt;/p&gt;
&lt;h2 id=&quot;método-1-wp-cli-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-wp-cli-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: WP-CLI (Recomendado)&lt;/h2&gt;
&lt;p&gt;WP-CLI es la herramienta de linea de comandos oficial de WordPress. Su comando &lt;code&gt;search-replace&lt;/code&gt; es consciente de la serializacion por defecto.&lt;/p&gt;
&lt;h3 id=&quot;paso-1-backup-pre-vuelo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-backup-pre-vuelo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Backup pre-vuelo&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar base de datos completa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysqldump&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -u&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; nombre_bd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# O usar WP-CLI para el backup&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup-pre-migración.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-2-dry-run-simulacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-dry-run-simulacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Dry run (simulacion)&lt;/h3&gt;
&lt;p&gt;Siempre ejecuta primero un dry run para ver que se cambiaria:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://viejo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://nuevo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --precise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La salida te mostrara cuantos reemplazos se harian en cada tabla:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;+-------------------+---------+---------+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| Table             | Column  | Replace |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;+-------------------+---------+---------+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| wp_options        | 43      | 43      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| wp_posts          | 156     | 156     |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| wp_postmeta       | 89      | 89      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| wp_comments       | 12      | 12      |&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;+-------------------+---------+---------+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-3-ejecutar-el-reemplazo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-ejecutar-el-reemplazo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Ejecutar el reemplazo&lt;/h3&gt;
&lt;p&gt;Si el dry run se ve correcto:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://viejo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://nuevo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --precise&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-4-no-olvides-http-vs-https&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-no-olvides-http-vs-https&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: No olvides HTTP vs HTTPS&lt;/h3&gt;
&lt;p&gt;Si también estas cambiando de HTTP a HTTPS, necesitas un segundo paso:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;http://viejo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://nuevo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --precise&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-5-limpieza-post-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-limpieza-post-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Limpieza post-migración&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Regenerar permalinks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Limpiar cache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; flush&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Verificar que el sitio carga correctamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; siteurl&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; home&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;método-2-better-search-replace-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-better-search-replace-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Better Search Replace (Plugin)&lt;/h2&gt;
&lt;p&gt;Si no tienes acceso SSH o WP-CLI, el plugin “Better Search Replace” hace lo mismo desde el panel de WordPress.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instala y activa el plugin&lt;/li&gt;
&lt;li&gt;Ve a Herramientas &gt; Better Search Replace&lt;/li&gt;
&lt;li&gt;Ingresa la URL vieja en “Buscar”&lt;/li&gt;
&lt;li&gt;Ingresa la URL nueva en “Reemplazar con”&lt;/li&gt;
&lt;li&gt;Selecciona TODAS las tablas&lt;/li&gt;
&lt;li&gt;Marca “Ejecutar como simulacion” primero&lt;/li&gt;
&lt;li&gt;Revisa los resultados&lt;/li&gt;
&lt;li&gt;Desmarca “Ejecutar como simulacion” y ejecuta&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ventajas-de-better-search-replace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-de-better-search-replace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas de Better Search Replace&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;No requiere acceso SSH&lt;/li&gt;
&lt;li&gt;Interfaz visual fácil de usar&lt;/li&gt;
&lt;li&gt;Soporta serializacion&lt;/li&gt;
&lt;li&gt;Modo de simulacion integrado&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;desventajas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desventajas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desventajas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Mas lento para bases de datos grandes&lt;/li&gt;
&lt;li&gt;Puede causar timeout en servidores con limites estrictos&lt;/li&gt;
&lt;li&gt;Requiere acceso al panel de WordPress (que puede no funcionar si las URLs estan rotas)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;método-3-interconnectit-search-replace-db&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-interconnectit-search-replace-db&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Interconnect/it Search Replace DB&lt;/h2&gt;
&lt;p&gt;Para emergencias cuando ni WP-CLI ni el panel de WordPress estan disponibles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Descarga el script desde interconnectit.com&lt;/li&gt;
&lt;li&gt;Subelo a la raiz de tu sitio WordPress via FTP&lt;/li&gt;
&lt;li&gt;Accede via navegador: &lt;code&gt;https://tusitio.com/Search-Replace-DB-master/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ingresa la URL vieja y la nueva&lt;/li&gt;
&lt;li&gt;Ejecuta el dry run, luego el reemplazo real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ELIMINA EL SCRIPT INMEDIATAMENTE&lt;/strong&gt; despues de usarlo (es un riesgo de seguridad crítico)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;configuración-temporal-de-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-temporal-de-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración temporal de wp-config.php&lt;/h2&gt;
&lt;p&gt;Si tu sitio no carga despues de mover la base de datos al nuevo servidor (porque las URLs todavia apuntan al dominio viejo), agrega estas lineas a &lt;code&gt;wp-config.php&lt;/code&gt; temporalmente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_HOME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://nuevo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_SITEURL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://nuevo-dominio.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto te permite acceder al panel para ejecutar el search-replace. Despues de completar el reemplazo, &lt;strong&gt;elimina estas lineas&lt;/strong&gt; para que WordPress use los valores de la base de datos.&lt;/p&gt;
&lt;h2 id=&quot;checklist-completa-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-completa-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist completa de migración&lt;/h2&gt;
&lt;h3 id=&quot;antes-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#antes-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Antes de la migración&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Backup completo de la base de datos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Backup de todos los archivos (wp-content completo)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Documentar todas las URLs actuales&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar que el nuevo dominio tiene SSL&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Informar a los motores de búsqueda del cambio (GSC)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;durante-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#durante-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Durante la migración&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Importar base de datos en el nuevo servidor&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar wp-config.php con nuevas credenciales&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Ejecutar WP-CLI search-replace (con dry-run primero)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar HTTP y HTTPS por separado&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Comprobar que el sitio carga correctamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;despues-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despues-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despues de la migración&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Regenerar permalinks (Ajustes &gt; Enlaces permanentes &gt; Guardar)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Limpiar todo el cache&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar que robots.txt no bloquea la indexacion&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar redirecciones 301 del dominio viejo al nuevo&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar la propiedad en Google Search Console&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualizar sitemaps&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verificar que todos los formularios funcionan&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Comprobar que las imágenes cargan correctamente&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Probar el checkout si tienes WooCommerce&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Monitorear GSC durante 30 dias para errores&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;errores-comunes-que-debes-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-que-debes-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes que debes evitar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Usar SQL REPLACE directamente&lt;/strong&gt;: Corrompe datos serializados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Olvidar HTTP vs HTTPS&lt;/strong&gt;: URLs mixtas causan contenido no seguro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No hacer backup&lt;/strong&gt;: Sin red de seguridad si algo sale mal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dejar el script Search-Replace-DB&lt;/strong&gt;: Cualquiera puede acceder y modificar tu base de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No actualizar wp-config.php&lt;/strong&gt;: Credenciales viejas impiden la conexión.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Olvidar las redirecciones 301&lt;/strong&gt;: Pierdes todo el SEO acumulado en el dominio viejo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No verificar media uploads&lt;/strong&gt;: Las rutas de imágenes pueden necesitar actualización adicional.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;migración-y-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-y-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración y SEO&lt;/h2&gt;
&lt;p&gt;Cambiar de dominio es una de las operaciones más riesgosas para el SEO. Para minimizar el impacto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Redirecciones 301&lt;/strong&gt;: Cada URL del dominio viejo debe redirigir a su equivalente en el nuevo dominio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;: Usa la herramienta de “Cambio de dirección” para informar a Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitemaps&lt;/strong&gt;: Envia los nuevos sitemaps inmediatamente despues de la migración.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo&lt;/strong&gt;: Vigila de cerca el tráfico organico durante 30-60 dias post-migración.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con la migración de tu sitio WordPress? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; tiene amplia experiencia en migraciones seguras. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>migration</category><category domain="tag">sql</category><category domain="tag">wp-cli</category><category domain="tag">serializacion</category><category domain="tag">base-de-datos</category><category domain="tag">devops</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Lógica condicional de WordPress para taxonomías</title><link>https://wppoland.com/es/check-if-post-belongs-to-category-children/</link><guid isPermaLink="true">https://wppoland.com/es/check-if-post-belongs-to-category-children/</guid><description>Deja de escribir sentencias if desordenadas. Aprende la diferencia entre in_category y has_term, como manejar categorías hijas recursivas eficientemente y optimizar tus etiquetas condicionales.</description><pubDate>Thu, 03 May 2018 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;La lógica es el cerebro de tu tema.&lt;/strong&gt;
En 2026, con Full Site Editing (FSE) y Block Themes complejos, podrias pensar que la lógica PHP es obsoleta. No lo es.
La lógica del backend determina &lt;em&gt;que&lt;/em&gt; renderizar antes de que el Editor de Bloques siquiera se cargue.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.
Un error comun que cometen los desarrolladores es confundir &lt;code&gt;in_category()&lt;/code&gt; (para la taxonomía nativa ‘category’) con &lt;code&gt;has_term()&lt;/code&gt; (para taxonomías personalizadas).
Esta guía establece los &lt;strong&gt;Procedimientos Operativos Estándar&lt;/strong&gt; para la lógica condicional en el desarrollo moderno de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-los-fundamentos---comprobando-categorías&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-los-fundamentos---comprobando-categorías&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: Los fundamentos - Comprobando categorías&lt;/h2&gt;
&lt;h3 id=&quot;1-in_category&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-in_category&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. &lt;code&gt;in_category()&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Usa esto ESTRICTAMENTE para la taxonomía integrada “Category”.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;in_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;news&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Esta es una entrada de Noticias.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Advertencia&lt;/strong&gt;: Comprueba el &lt;em&gt;slug&lt;/em&gt; o &lt;em&gt;ID&lt;/em&gt;. NO comprueba taxonomías personalizadas (como ‘product_cat’ en WooCommerce).&lt;/p&gt;
&lt;h3 id=&quot;2-has_term-la-herramienta-universal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-has_term-la-herramienta-universal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. &lt;code&gt;has_term()&lt;/code&gt; (la herramienta universal)&lt;/h3&gt;
&lt;p&gt;En 2026, casí siempre deberias preferir &lt;code&gt;has_term()&lt;/code&gt;. Funciona para todo: Categorías, Etiquetas y Taxonomías Personalizadas.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Comprobar si la entrada actual esta en el termino &apos;jeans&apos; de la taxonomia &apos;product_cat&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jeans&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product_cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Es un par de vaqueros.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-2-la-complejidad-de-la-jerarquía-hijos-y-padres&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-la-complejidad-de-la-jerarquía-hijos-y-padres&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: La complejidad de la jerarquía (hijos y padres)&lt;/h2&gt;
&lt;p&gt;Las funciones nativas de WordPress comprueban &lt;strong&gt;coincidencias exactas&lt;/strong&gt;.
Si compruebas &lt;code&gt;in_category(&apos;fruta&apos;)&lt;/code&gt;, pero la entrada solo esta en la categoría hija &lt;code&gt;manzana&lt;/code&gt;, la comprobacion devuelve &lt;strong&gt;FALSE&lt;/strong&gt;.
Esta es la fuente #1 de errores logicos.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-post_is_in_descendant_category&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-post_is_in_descendant_category&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: &lt;code&gt;post_is_in_descendant_category()&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;WordPress todavia no tiene una función de comprobacion recursiva integrada en el nucleo (ni siquiera en 2026). Debes implementar una función auxiliar.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Comprueba si una entrada pertenece a una categoria o a cualquiera de sus descendientes.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Optimizado para rendimiento usando cache de get_term_children.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $field Clase/Slug/ID de la categoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $post_id Opcional. ID de la entrada.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; bool&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_post_is_in_descendant_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cats, $_post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $_post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $_post );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_post ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $term_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; is_numeric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cats) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cats &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cat_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cats);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $term_id) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $descendants &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_term_children&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $descendants[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $term_id; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Incluir el padre mismo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; in_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $descendants, $_post );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-3-etiquetas-condicionales-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-etiquetas-condicionales-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Etiquetas condicionales en 2026&lt;/h2&gt;
&lt;p&gt;La lógica moderna de WordPress a menudo se maneja en &lt;code&gt;theme.json&lt;/code&gt; o plugins de Block Logic, pero las condiciones PHP codificadas siguen siendo vitales para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cargar assets&lt;/strong&gt;: “Solo cargar el JavaScript pesado del Mapa en entradas de la categoría ‘Ubicaciones’.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filtrar contenido&lt;/strong&gt;: “Anadir automáticamente un aviso legal a todas las entradas en ‘Consejos Medicos’.”&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ejemplo-carga-inteligente-de-assets&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-carga-inteligente-de-assets&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo: Carga inteligente de assets&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;marketing&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_page_template&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;landing.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;conversión-tracking&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-4-operadores-logicos-y-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-operadores-logicos-y-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Operadores logicos y rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;is_object_in_term&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#is_object_in_term&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;is_object_in_term&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Si ejecutas lógica fuera del loop (p. ej., en un trabajo en segundo plano o endpoint REST API), usa &lt;code&gt;is_object_in_term()&lt;/code&gt;. Evita configurar el objeto post global.&lt;/p&gt;
&lt;h3 id=&quot;impacto-en-la-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-la-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en la base de datos&lt;/h3&gt;
&lt;p&gt;Cada llamada a &lt;code&gt;has_term&lt;/code&gt; desencadena una búsqueda en cache. Es rápida (&lt;code&gt;O(1)&lt;/code&gt;), porque los terminos se almacenan en memoria (Object Cache).
Sin embargo, &lt;code&gt;get_term_children&lt;/code&gt; puede ser costoso en taxonomías masivas (10,000+ terminos) si no se cachea correctamente via Redis/Memcached.&lt;/p&gt;
&lt;h2 id=&quot;parte-5-especificidades-de-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-especificidades-de-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Especificidades de WooCommerce&lt;/h2&gt;
&lt;p&gt;WooCommerce tiene sus propios condicionales logicos.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;is_product()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;is_shop()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;is_product_category()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Error comun&lt;/strong&gt;: Intentar usar &lt;code&gt;is_product_category()&lt;/code&gt; dentro de un Loop estándar.
Si estas iterando sobre productos en una consulta de Entradas del Blog, &lt;code&gt;is_product_category()&lt;/code&gt; devolvera false (porque la &lt;em&gt;página&lt;/em&gt; no es un archivo de categoría). Debes usar &lt;code&gt;has_term( $term, &apos;product_cat&apos;, $post_id )&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;parte-6-patrones-avanzados-para-temas-block-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-patrones-avanzados-para-temas-block-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Patrones avanzados para temas Block en 2026&lt;/h2&gt;
&lt;h3 id=&quot;condicionales-en-bloques-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#condicionales-en-bloques-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Condicionales en bloques personalizados&lt;/h3&gt;
&lt;p&gt;Con la llegada de los bloques personalizados y Full Site Editing, la lógica condicional se ha movido parcialmente al editor. Sin embargo, la lógica del servidor sigue siendo fundamental para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pre-renderizado de bloques&lt;/strong&gt;: Determinar que variacion de bloque mostrar basandose en la taxonomía&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalización de consultas&lt;/strong&gt;: Modificar WP_Query basandose en relaciones taxonomicas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API REST personalizada&lt;/strong&gt;: Filtrar respuestas según terminos asignados&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo: Filtrar bloques dinamicos según la categoria del post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;render_block&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $block_content, $block ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $block[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;blockName&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;core/group&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;premium&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;membership_level&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $block_content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ocultar para usuarios no premium&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $block_content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;taxonomías-jerarquicas-vs-planas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#taxonomías-jerarquicas-vs-planas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Taxonomías jerarquicas vs planas&lt;/h3&gt;
&lt;p&gt;Es importante distinguir entre taxonomías jerarquicas (como categorías) y planas (como etiquetas):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Taxonomia jerarquica - necesita comprobacion recursiva&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$taxonomy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_taxonomy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product_cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $taxonomy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;hierarchical ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Usar función auxiliar con get_term_children()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_in_term_tree&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;electronics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product_cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Comprobacion directa es suficiente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;electronics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;optimización-con-object-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-con-object-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización con Object Cache&lt;/h3&gt;
&lt;p&gt;Para sitios de alto tráfico, almacena en cache los resultados de las comprobaciones de taxonomía:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_cached_term_check&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term, $taxonomy, $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;term_check_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$taxonomy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;term_checks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term, $taxonomy, $post_id ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $result, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;term_checks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) $result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-7-depuracion-de-condicionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-depuracion-de-condicionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Depuracion de condicionales&lt;/h2&gt;
&lt;h3 id=&quot;usando-query-monitor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usando-query-monitor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usando Query Monitor&lt;/h3&gt;
&lt;p&gt;El plugin Query Monitor es invaluable para depurar lógica condicional:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar comprobaciones de terminos en el log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;defined&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;QM_LOG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    do_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;qm/debug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;sprintf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Post %d: has_term(%s, %s) = %s&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;news&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;news&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;true&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;false&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;errores-comunes-y-soluciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-y-soluciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes y soluciones&lt;/h3&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Error&lt;/th&gt;&lt;th&gt;Causa&lt;/th&gt;&lt;th&gt;Solución&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;in_category()&lt;/code&gt; devuelve false para subcategorias&lt;/td&gt;&lt;td&gt;No comprueba descendientes&lt;/td&gt;&lt;td&gt;Usar función auxiliar recursiva&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;is_tax()&lt;/code&gt; devuelve false en single posts&lt;/td&gt;&lt;td&gt;Comprueba contexto de página, no del post&lt;/td&gt;&lt;td&gt;Usar &lt;code&gt;has_term()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;has_term()&lt;/code&gt; lento en bucles grandes&lt;/td&gt;&lt;td&gt;Consultas repetidas&lt;/td&gt;&lt;td&gt;Implementar Object Cache&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Taxonomía no reconocida&lt;/td&gt;&lt;td&gt;Registrada despues de la comprobacion&lt;/td&gt;&lt;td&gt;Mover registro a &lt;code&gt;init&lt;/code&gt; con prioridad baja&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Usa &lt;code&gt;has_term()&lt;/code&gt; para robustez en todas las taxonomías.&lt;/li&gt;
&lt;li&gt;Usa funciones auxiliares personalizadas para comprobaciones &lt;strong&gt;recursivas/jerarquicas&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Optimiza el rendimiento confiando en Object Cache.&lt;/li&gt;
&lt;li&gt;Distingue entre &lt;strong&gt;Contexto de página&lt;/strong&gt; (&lt;code&gt;is_category()&lt;/code&gt;) y &lt;strong&gt;Datos del post&lt;/strong&gt; (&lt;code&gt;in_category()&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La lógica es binaria. Asegurate de que la tuya sea &lt;code&gt;TRUE&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>development</category><category>backend</category><category domain="tag">taxonomy</category><category domain="tag">php</category><category domain="tag">logic</category><category domain="tag">hierarchy</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>WordPress 4.9 en retrospectiva: la versión anterior a Gutenberg</title><link>https://wppoland.com/es/wordpress-4-9-whats-new/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-4-9-whats-new/</guid><description>WordPress 4.9 Tipton fue la última versión importante antes de Gutenberg. Esto es lo que cambió y por qué sigue siendo relevante en retrospectiva.</description><pubDate>Thu, 16 Nov 2017 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;WordPress 4.9 “Tipton” (lanzado en 2017) fue una versión especial. Fue la última versión importante antes de la &lt;strong&gt;Revolución 5.0&lt;/strong&gt;, que introdujo el editor Gutenberg.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Visto desde 2026, la versión 4.9 fue el momento en que WordPress “maduró” como plataforma para desarrolladores, introduciendo características que ahora damos por sentadas.&lt;/p&gt;
&lt;p&gt;Si quieres la versión corta, WordPress 4.9 importa porque mejoró los flujos de trabajo reales de editores y desarrolladores justo antes de que Gutenberg cambiara por completo el modelo de edición.&lt;/p&gt;
&lt;h2 id=&quot;el-contexto-histórico-wordpress-49-como-punto-de-inflexión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-contexto-histórico-wordpress-49-como-punto-de-inflexión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El contexto histórico: WordPress 4.9 como punto de inflexión&lt;/h2&gt;
&lt;p&gt;WordPress 4.9 “Tipton” (nombrado en honor al músico de jazz Billy Tipton) fue lanzado el 16 de noviembre de 2017. Representó la culminación de la era “clásica” de WordPress - la última versión antes de que Gutenberg cambiara fundamentalmente la forma en que construimos sitios WordPress.&lt;/p&gt;
&lt;p&gt;Para entender la importancia de WordPress 4.9, hay que situarlo en el contexto de su época. En 2017, WordPress alimentaba aproximadamente el 29% de todos los sitios web en Internet. La plataforma había evolucionado enormemente desde sus humildes orígenes como herramienta de blogging en 2003, convirtiéndose en un Sistema de Gestión de Contenidos (CMS) completo utilizado por empresas, medios de comunicación, gobiernos y organizaciónes de todo el mundo.&lt;/p&gt;
&lt;p&gt;El ecosistema de WordPress en ese momento era vibrante y maduro. Miles de temas y plugins estaban disponibles, y una comunidad global de desarrolladores contribuía activamente al core. Sin embargo, el editor de contenido no había cambiado fundamentalmente desde los primeros días de WordPress. Seguía siendo un editor WYSIWYG basado en TinyMCE que, aunque funcional, no reflejaba las expectativas modernas de los usuarios en cuanto a interfaces de edición de contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por qué 4.9 importa:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fue la versión final del editor “clásico” de WordPress&lt;/li&gt;
&lt;li&gt;Introdujo herramientas para desarrolladores que seguimos usando hoy&lt;/li&gt;
&lt;li&gt;Sentó las bases para la revolución del editor de bloques&lt;/li&gt;
&lt;li&gt;Marcó la transición de WordPress de “plataforma de blogging” a “CMS completo”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La versión 4.9 fue liderada por Weston Ruter y Mel Choyce, y contó con contribuciones de más de 400 desarrolladores de todo el mundo. Fue un esfuerzo colaborativo que perfeccionó las herramientas existentes en lugar de intentar reinventar la rueda - una filosofía que contrastaba marcadamente con lo que vendría después con Gutenberg.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-trajo-wordpress-49-perspectiva-de-un-desarrollador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-trajo-wordpress-49-perspectiva-de-un-desarrollador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que trajo WordPress 4.9: perspectiva de un desarrollador&lt;/h2&gt;
&lt;h3 id=&quot;1-borradores-y-cambios-programados-del-personalizador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-borradores-y-cambios-programados-del-personalizador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Borradores y cambios programados del Personalizador&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;La función:&lt;/strong&gt;
Por primera vez, podíamos hacer cambios de diseño (colores, CSS), guardarlos como “Borrador” y enviar un enlace de vista previa a un clientes - sin publicar los cambios en vivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por qué fue importante:&lt;/strong&gt;
Antes de 4.9, hacer cambios de diseño significaba:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editar el sitio en vivo (arriesgado)&lt;/li&gt;
&lt;li&gt;Usar entornos de staging (complejo)&lt;/li&gt;
&lt;li&gt;Inyección manual de CSS (chapucero)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos métodos eran problemáticos por diferentes razones. Editar el sitio en vivo significaba que cualquier error sería visible instantáneamente para todos los visitantes. Los entornos de staging, aunque más seguros, requerían configuración técnica que muchos propietarios de sitios no podían gestionar por sí mismos. Y la inyección manual de CSS era propensa a errores y difícil de revertir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo funcionaba:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// El Personalizador ahora soporta cambios en borrador&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wp_customize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_setting&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;header_color&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;default&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;#0073aa&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;transport&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;postMessage&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;theme_mod&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Los cambios se guardan como borradores, no se publican inmediatamente&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El sistema de borradores del Personalizador funcionaba creando “changesets” - conjuntos de cambios que se almacenaban como entradas de tipo personalizado en la base de datos. Estos changesets podían tener diferentes estados: borrador, programado o publicado. Esto significaba que podías trabajar en múltiples conjuntos de cambios de diseño simultáneamente sin que ninguno afectara al sitio en vivo.&lt;/p&gt;
&lt;p&gt;La funcionalidad de programación permitía establecer una fecha y hora futuras para que los cambios se aplicaran automáticamente. Esto era especialmente útil para lanzamientos de campaña, cambios estacionales en el diseño o actualizaciones de branding coordinadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Impacto:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El flujo de aprobación del clientes se convirtió en estándar&lt;/li&gt;
&lt;li&gt;Se redujeron los errores de “ups, publiqué demasiado pronto”&lt;/li&gt;
&lt;li&gt;Proceso de diseño profesional&lt;/li&gt;
&lt;li&gt;Mayor confianza para experimentar con cambios de diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Perspectiva 2026:&lt;/strong&gt;
Aunque Gutenberg reemplazó gran parte de la funcionalidad del Personalizador, el concepto de borrador/programación vive en el sistema de revisiones del editor de bloques. La idea de poder preparar cambios, revisarlos y programar su publicación se ha convertido en una expectativa fundamental de cualquier CMS moderno.&lt;/p&gt;
&lt;h3 id=&quot;2-integración-de-codemirror&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-integración-de-codemirror&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Integración de CodeMirror&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;La función:&lt;/strong&gt;
Los editores de código en el panel de administración (por ejemplo, en el “Editor de temas” o “CSS adicional”) finalmente recibieron resaltado de sintaxis y numeración de líneas. Se acabó romper el sitio por un punto y coma que faltaba.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por qué fue importante:&lt;/strong&gt;
Antes de 4.9, editar código en WordPress significaba:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editores de texto plano (sin resaltado de sintaxis)&lt;/li&gt;
&lt;li&gt;Sin números de línea (difícil depurar)&lt;/li&gt;
&lt;li&gt;Sin detección de errores&lt;/li&gt;
&lt;li&gt;Alto riesgo de romper sitios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para los desarrolladores que trabajaban directamente en el panel de administración de WordPress, esta era una experiencia frustrante. Un simple error tipográfico en un archivo de tema podía hacer que todo el sitio dejara de funcionar, y sin resaltado de sintaxis ni detección de errores, encontrar el problema podía llevar horas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lo que añadió CodeMirror:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resaltado de sintaxis&lt;/strong&gt;: PHP, CSS, JavaScript, HTML - cada lenguaje con su propio esquema de colores que facilitaba la lectura y comprensión del código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Números de línea&lt;/strong&gt;: Fácilidad para reportar errores y navegar archivos grandes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plegado de código&lt;/strong&gt;: Colapsar funciones y bloques para obtener una vista general del archivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coincidencia de paréntesis&lt;/strong&gt;: Encontrar paréntesis coincidentes visualmente, evitando errores comunes de sintaxis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoindentación&lt;/strong&gt;: Formato de código adecuado que se aplicaba automáticamente al escribir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buscar y reemplazar&lt;/strong&gt;: Encontrar código rápidamente dentro del editor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Antes de 4.9: Editor de texto plano&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; my_function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;hello&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Después de 4.9: CodeMirror muestra errores de sintaxis&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; my_function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;hello&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Indentación adecuada resaltada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Además del resaltado visual, CodeMirror incorporaba una función de seguridad crucial: la detección de errores de sintaxis antes de guardar. Si el código contenía un error que podría romper el sitio, WordPress mostraba una advertencia y ofrecía la opción de no guardar los cambios. Esta característica por sí sola salvó probablemente miles de sitios de quedar inaccesibles por errores de código.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Impacto:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se redujeron los errores de código en el panel&lt;/li&gt;
&lt;li&gt;WordPress se volvió más amigable para desarrolladores&lt;/li&gt;
&lt;li&gt;Se estableció un estándar para la edición de código en CMS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Perspectiva 2026:&lt;/strong&gt;
CodeMirror sigue utilizándose en WordPress 6.x para la edición de temas y plugins, aunque el editor de bloques de Gutenberg ha reducido la dependencia de la edición directa de código. La versión de CodeMirror se ha actualizado varias veces, mejorando el rendimiento y añadiendo soporte para nuevas características de los lenguajes.&lt;/p&gt;
&lt;h3 id=&quot;3-mejoras-del-widget-de-galería&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-mejoras-del-widget-de-galería&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Mejoras del widget de galería&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;La función:&lt;/strong&gt;
Añadir galerías de fotos a la barra lateral se convirtió en algo nativo y más intuitivo. Antes de esta versión, crear una galería en un widget requería plugins adicionales o conocimientos de HTML.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Antes de 4.9:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se necesitaban plugins para galerías avanzadas&lt;/li&gt;
&lt;li&gt;Opciones de personalización limitadas&lt;/li&gt;
&lt;li&gt;Interfaz torpe y poco intuitiva&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Después de 4.9:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Widget de galería nativo integrado en el core&lt;/li&gt;
&lt;li&gt;Selección de imágenes con arrastrar y soltar&lt;/li&gt;
&lt;li&gt;Mejor soporte móvil&lt;/li&gt;
&lt;li&gt;Rendimiento mejorado&lt;/li&gt;
&lt;li&gt;Integración completa con la Biblioteca de Medios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impacto:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las galerías se hicieron accesibles para no desarrolladores&lt;/li&gt;
&lt;li&gt;Se redujo la necesidad de plugins de galería para funcionalidades básicas&lt;/li&gt;
&lt;li&gt;La experiencia de usuario mejoró significativamente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Perspectiva 2026:&lt;/strong&gt;
Los widgets de galería han sido reemplazados por los bloques de galería de Gutenberg, pero las mejoras de 4.9 prepararon el camino para una mejor gestión de medios. La filosofía de hacer que las funcionalidades comunes sean accesibles sin plugins se mantiene como un principio central del desarrollo de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;características-adicionales-de-wordpress-49&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#características-adicionales-de-wordpress-49&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Características adicionales de WordPress 4.9&lt;/h2&gt;
&lt;h3 id=&quot;4-instalación-de-temas-mejorada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-instalación-de-temas-mejorada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Instalación de temas mejorada&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Qué cambió:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mejor vista previa de temas con información más detallada&lt;/li&gt;
&lt;li&gt;Funcionalidad de búsqueda mejorada con filtros más granulares&lt;/li&gt;
&lt;li&gt;Visualización de información de temas más completa, incluyendo compatibilidad con versiones de PHP y WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La mejora en la instalación de temas reflejaba el reconocimiento de WordPress de que la selección de un tema es una de las decisiones más importantes que toma un propietario de sitio. Al hacer que este proceso fuera más informado y visual, se reducían las probabilidades de elegir un tema inadecuado.&lt;/p&gt;
&lt;h3 id=&quot;5-mejoras-en-widgets&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-mejoras-en-widgets&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Mejoras en widgets&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Qué cambió:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mejor gestión de widgets con una interfaz más clara&lt;/li&gt;
&lt;li&gt;Vista previa mejorada que mostraba los cambios en tiempo real&lt;/li&gt;
&lt;li&gt;Opciones de personalización ampliadas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los widgets eran en 2017 una parte fundamental de la personalización de un sitio WordPress. Las mejoras en 4.9 los hicieron más potentes y fáciles de usar, aunque irónicamente estarían destinados a ser reemplazados por bloques pocos años después.&lt;/p&gt;
&lt;h3 id=&quot;6-mejoras-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-mejoras-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Mejoras de seguridad&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Qué cambió:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Detección mejorada de tipos de archivo que prevenía la subida de archivos potencialmente maliciosos&lt;/li&gt;
&lt;li&gt;Mejor sanitización de datos de entrada&lt;/li&gt;
&lt;li&gt;Headers de seguridad mejorados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La seguridad fue una prioridad constante para el equipo de desarrollo de WordPress, y cada versión incorporaba mejoras incrementales. Las mejoras de 4.9 eran especialmente relevantes dado que WordPress, como el CMS más popular del mundo, era un objetivo constante de ataques.&lt;/p&gt;
&lt;h2 id=&quot;el-camino-a-wordpress-50-la-revolución-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-camino-a-wordpress-50-la-revolución-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El camino a WordPress 5.0: la revolución Gutenberg&lt;/h2&gt;
&lt;h3 id=&quot;línea-temporal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#línea-temporal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Línea temporal&lt;/h3&gt;
&lt;p&gt;La transición de WordPress 4.9 a 5.0 fue uno de los momentos más significativos en la historia de la plataforma. Para entenderla completamente, es útil ver la línea temporal completa:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2017 (4.9):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Última versión “clásica” de WordPress&lt;/li&gt;
&lt;li&gt;Fundamentos para Gutenberg ya se estaban desarrollando en paralelo&lt;/li&gt;
&lt;li&gt;La comunidad se preparaba para el cambio, aunque con opiniones divididas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2018 (5.0):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El editor Gutenberg fue introducido como el editor predeterminado&lt;/li&gt;
&lt;li&gt;El plugin Classic Editor fue lanzado inmediatamente como alternativa&lt;/li&gt;
&lt;li&gt;La comunidad se dividió entre entusiastas y escépticos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2019-2021:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gutenberg maduró con cada actualización&lt;/li&gt;
&lt;li&gt;Los patrones de bloques fueron introducidos, ampliando las posibilidades de diseño&lt;/li&gt;
&lt;li&gt;El desarrollo de Full Site Editing (FSE) comenzó a tomar forma&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2022-2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FSE se convirtió en estándar para nuevos temas&lt;/li&gt;
&lt;li&gt;Los temas de bloques dominaron el directorio de temas&lt;/li&gt;
&lt;li&gt;El uso del Classic Editor comenzó a declinar, aunque se mantuvo significativo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;la-división-de-la-comunidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-división-de-la-comunidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La división de la comunidad&lt;/h3&gt;
&lt;p&gt;Apenas un año después de 4.9, WordPress 5.0 llegó con &lt;strong&gt;Gutenberg&lt;/strong&gt;. La comunidad se dividió en dos campos, una división que en muchos aspectos persiste hasta hoy:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tradicionalistas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se mantuvieron con el plugin “Classic Editor”&lt;/li&gt;
&lt;li&gt;Continuaron usando temas basados en PHP&lt;/li&gt;
&lt;li&gt;Prefirieron constructores de páginas (Elementor, Divi, WPBakery)&lt;/li&gt;
&lt;li&gt;El plugin Classic Editor todavía tiene millones de instalaciones activas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los tradicionalistas argumentaban que Gutenberg fue lanzado prematuramente, que rompía flujos de trabajo establecidos y que añadía complejidad innecesaria para sitios simples. Muchos desarrolladores de temas y plugins se resistieron inicialmente a la migración, y algunos continúan manteniendo productos basados exclusivamente en el editor clásico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creadores modernos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abrazaron el modelo de &lt;strong&gt;Full Site Editing (FSE)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Todo - incluyendo cabecera y pie de página - construido con bloques&lt;/li&gt;
&lt;li&gt;Adoptaron temas de bloques como Twenty Twenty-Three y Twenty Twenty-Four&lt;/li&gt;
&lt;li&gt;Aprovecharon los patrones de bloques y las plantillas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los creadores modernos vieron en Gutenberg una oportunidad para democratizar el diseño web, permitiendo a los usuarios crear diseños complejos sin necesidad de código o plugins de terceros. La visión de largo plazo de Matt Mullenweg era que Gutenberg eventualmente reemplazaría todos los aspectos de la personalización del sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los números (2026):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;~40% de los sitios aún usan el plugin Classic Editor&lt;/li&gt;
&lt;li&gt;~60% han adoptado Gutenberg en algún grado&lt;/li&gt;
&lt;li&gt;Temás de bloques: ~15% de cuota de mercado (en crecimiento)&lt;/li&gt;
&lt;li&gt;Temás clásicos: ~85% de cuota de mercado (en declive)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos números revelan que la transición, aunque inevitable, es más lenta de lo que muchos predijeron. La inercia de millones de sitios existentes, la inversión en temas y plugins clásicos, y la curva de aprendizaje de Gutenberg han contribuido a esta gradualidad.&lt;/p&gt;
&lt;h2 id=&quot;el-legado-de-wordpress-49&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-legado-de-wordpress-49&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El legado de WordPress 4.9&lt;/h2&gt;
&lt;h3 id=&quot;lo-que-aprendimos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-aprendimos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que aprendimos&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Las mejoras incrementales importan&lt;/strong&gt;
4.9 demostró que las mejoras pequeñas y enfocadas pueden tener un gran impacto. La integración de CodeMirror, aunque aparentemente menor, hizo que WordPress fuera significativamente más amigable para desarrolladores. No siempre se necesitan revoluciones para avanzar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. La experiencia del desarrollador es importante&lt;/strong&gt;
Características como los borradores del Personalizador y CodeMirror mostraron que WordPress se preocupaba por los desarrolladores, no solo por los usuarios finales. Este enfoque dual ha sido clave para el éxito continuo de la plataforma.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Fundamentos para el cambio&lt;/strong&gt;
Las mejoras de 4.9 sentaron las bases para Gutenberg. El sistema de borrador/programación en el Personalizador influyó en el sistema de revisiones de Gutenberg. La filosofía de hacer las cosas más seguras y más fáciles de previsualizar se trasladó directamente al nuevo editor.&lt;/p&gt;
&lt;h3 id=&quot;lo-que-sigue-importando-hoy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-sigue-importando-hoy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que sigue importando hoy&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;CodeMirror:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sigue utilizándose en los editores de temas y plugins&lt;/li&gt;
&lt;li&gt;Sigue siendo el estándar para la edición de código en WordPress&lt;/li&gt;
&lt;li&gt;Mejorado en versiones posteriores con mejor rendimiento y más funcionalidades&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Borradores del Personalizador:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El concepto vive en las revisiones de Gutenberg&lt;/li&gt;
&lt;li&gt;Los cambios programados siguen disponibles&lt;/li&gt;
&lt;li&gt;Los enlaces de vista previa siguen utilizándose para aprobación de clientes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Herramientas para desarrolladores:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El enfoque de 4.9 en la experiencia del desarrollador continúa&lt;/li&gt;
&lt;li&gt;WordPress moderno prioriza las herramientas para desarrolladores&lt;/li&gt;
&lt;li&gt;Mejor depuración, mejores APIs, mejor documentación&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;comparando-wordpress-49-con-wordpress-moderno-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparando-wordpress-49-con-wordpress-moderno-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparando WordPress 4.9 con WordPress moderno (2026)&lt;/h2&gt;
&lt;h3 id=&quot;entonces-49-vs-ahora-6x&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entonces-49-vs-ahora-6x&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entonces (4.9) vs Ahora (6.x)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Desarrollo de temas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4.9&lt;/strong&gt;: Plantillas PHP, functions.php, hooks y filtros&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026&lt;/strong&gt;: Temás de bloques, theme.json, Full Site Editing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La diferencia es fundamental. En la era de 4.9, construir un tema requería profundos conocimientos de PHP, la jerarquía de plantillas de WordPress y el sistema de hooks. En 2026, los temas de bloques se definen principalmente a través de archivos JSON y plantillas HTML, con PHP relegado a funcionalidades específicas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edición de contenido:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4.9&lt;/strong&gt;: Editor clásico, shortcodes, widgets&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026&lt;/strong&gt;: Bloques Gutenberg, patrones, plantillas reutilizables&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los shortcodes, que eran la principal forma de añadir funcionalidad rica al contenido en la era 4.9, han sido en gran parte reemplazados por bloques nativos que ofrecen edición visual en tiempo real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Personalización:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4.9&lt;/strong&gt;: Personalizador, opciones de tema, páginas de configuración personalizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026&lt;/strong&gt;: Editor de Sitio, configuración de bloques, theme.json&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Herramientas para desarrolladores:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4.9&lt;/strong&gt;: CodeMirror, depuración básica con WP_DEBUG&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026&lt;/strong&gt;: Depuración avanzada, React DevTools, herramientas de desarrollo de bloques, wp-scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;lo-que-ha-cambiado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-ha-cambiado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que ha cambiado&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Eliminado (u opcional):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editor clásico (disponible como plugin opcional)&lt;/li&gt;
&lt;li&gt;Muchas funciones del Personalizador (reemplazadas por el Editor de Sitio)&lt;/li&gt;
&lt;li&gt;Sistema de widgets (reemplazado por bloques en áreas de widgets)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mejorado:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edición de código (sigue siendo CodeMirror, pero mejorado)&lt;/li&gt;
&lt;li&gt;APIs para desarrolladores (más hooks, mejor documentación, REST API más completa)&lt;/li&gt;
&lt;li&gt;Rendimiento (más rápido, más eficiente, mejor manejo de caché)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nuevo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editor de bloques Gutenberg&lt;/li&gt;
&lt;li&gt;Full Site Editing&lt;/li&gt;
&lt;li&gt;Patrones de bloques&lt;/li&gt;
&lt;li&gt;Theme.json para configuración de temas&lt;/li&gt;
&lt;li&gt;Desarrollo basado en React para el editor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lecciones-para-desarrolladores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lecciones-para-desarrolladores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lecciones para desarrolladores&lt;/h2&gt;
&lt;h3 id=&quot;1-abraza-el-cambio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-abraza-el-cambio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Abraza el cambio&lt;/h3&gt;
&lt;p&gt;La transición de WordPress 4.9 a 5.0 demostró que los cambios importantes son posibles y, a veces, necesarios. Como desarrollador, mantenerse actualizado es esencial. Los que se adaptaron temprano a Gutenberg se posicionaron como expertos cuando la demanda creció.&lt;/p&gt;
&lt;h3 id=&quot;2-la-compatibilidad-hacia-atrás-importa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-la-compatibilidad-hacia-atrás-importa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. La compatibilidad hacia atrás importa&lt;/h3&gt;
&lt;p&gt;WordPress mantuvo la compatibilidad hacia atrás incluso a través de cambios importantes. El plugin Classic Editor asegura que los sitios antiguos sigan funcionando. Esta filosofía de no romper lo existente mientras se avanza hacia lo nuevo es una lección valiosa para cualquier proyecto de software.&lt;/p&gt;
&lt;h3 id=&quot;3-las-herramientas-para-desarrolladores-son-esenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-las-herramientas-para-desarrolladores-son-esenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Las herramientas para desarrolladores son esenciales&lt;/h3&gt;
&lt;p&gt;La integración de CodeMirror demostró que la experiencia del desarrollador importa. WordPress moderno continúa esta tendencia con mejores herramientas de depuración, documentación más completa y APIs más potentes.&lt;/p&gt;
&lt;h3 id=&quot;4-la-retroalimentación-de-la-comunidad-moldea-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-la-retroalimentación-de-la-comunidad-moldea-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. La retroalimentación de la comunidad moldea WordPress&lt;/h3&gt;
&lt;p&gt;La división entre tradicionalistas y creadores modernos demuestra que WordPress escucha a su comunidad, incluso cuando toma decisiones controvertidas. El mantenimiento del plugin Classic Editor durante años después de Gutenberg es prueba de este compromiso.&lt;/p&gt;
&lt;h2 id=&quot;el-futuro-qué-viene-después-de-los-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-qué-viene-después-de-los-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro: qué viene después de los bloques&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tendencias actuales (2026):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integración de IA en WordPress para generación de contenido y diseño asistido&lt;/li&gt;
&lt;li&gt;Crecimiento del WordPress headless para aplicaciones modernas&lt;/li&gt;
&lt;li&gt;Enfoque en optimización de rendimiento con Core Web Vitals&lt;/li&gt;
&lt;li&gt;Mejoras de accesibilidad como prioridad de desarrollo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Lo que podemos aprender de 4.9:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las mejoras incrementales se acumulan para producir cambios importantes&lt;/li&gt;
&lt;li&gt;Las herramientas para desarrolladores importan tanto como las funciones para usuarios&lt;/li&gt;
&lt;li&gt;La experiencia del usuario es primordial en cada decisión de diseño&lt;/li&gt;
&lt;li&gt;La compatibilidad hacia atrás es crucial para una plataforma con millones de usuarios&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resumen-el-lugar-de-wordpress-49-en-la-historia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-el-lugar-de-wordpress-49-en-la-historia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen: el lugar de WordPress 4.9 en la historia&lt;/h2&gt;
&lt;p&gt;WordPress 4.9 “Tipton” fue más que otra versión - fue la última versión del WordPress “clásico” antes de la revolución Gutenberg.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Logros clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introdujo borradores del Personalizador (flujo de trabajo con clientes)&lt;/li&gt;
&lt;li&gt;Integró CodeMirror (experiencia del desarrollador)&lt;/li&gt;
&lt;li&gt;Mejoró los widgets de galería (experiencia del usuario)&lt;/li&gt;
&lt;li&gt;Sentó las bases para Gutenberg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Significado histórico:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Última versión importante antes del editor de bloques&lt;/li&gt;
&lt;li&gt;Culminación de la era clásica de WordPress&lt;/li&gt;
&lt;li&gt;Puente entre el WordPress antiguo y el nuevo&lt;/li&gt;
&lt;li&gt;Prueba de que las mejoras incrementales importan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Perspectiva 2026:&lt;/strong&gt;
Hoy, en 2026, el debate entre clásico y bloques es en gran parte historia. Los bloques ganaron. Pero vale la pena recordar la versión 4.9 como el “último bastión” del enfoque clásico de construcción de temas PHP - una versión que perfeccionó la forma antigua antes de que la nueva forma tomara el relevo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Para desarrolladores:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estudia 4.9 para entender el WordPress clásico&lt;/li&gt;
&lt;li&gt;Aprecia las mejoras que trajo&lt;/li&gt;
&lt;li&gt;Aprende de la transición a Gutenberg&lt;/li&gt;
&lt;li&gt;Aplica las lecciones a futuros cambios de WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WordPress 4.9 representa un momento en el tiempo - la calma antes de la tormenta, la perfección de lo antiguo antes de la introducción de lo nuevo. Es una versión que vale la pena estudiar, no solo por el contexto histórico, sino para entender cómo evoluciona WordPress y cómo se gestionan los cambios importantes en una plataforma global.&lt;/p&gt;</content:encoded><category>wordpress</category><category>history</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-4-9-whats-new.jpg" type="image/jpeg"/></item><item><title>Una guía práctica de WP_Query y el Loop (edición de rendimiento 2026)</title><link>https://wppoland.com/es/the-definitive-guide-to-wpquery-the-loop-2026-performance-edition/</link><guid isPermaLink="true">https://wppoland.com/es/the-definitive-guide-to-wpquery-the-loop-2026-performance-edition/</guid><description>Notas prácticas sobre WP_Query: cuándo get_posts gana a new WP_Query, por qué meta_query sobre claves no indexadas colapsa a escala, y cómo paginar loops personalizados sin caer en 404.</description><pubDate>Fri, 15 Sep 2017 12:00:00 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;`WP_Query` es el constructor SQL detrás de cada petición frontal: archivos, posts individuales, endpoints REST y bucles de tienda WooCommerce. Cuando una página va lenta, la causa suele ser una de tres cosas: un `meta_query` contra una `meta_key` sin índice, un `posts_per_page` sin límite, o `SQL_CALC_FOUND_ROWS` ejecutándose en cada carga cuando la página no muestra ningún total.&lt;/p&gt;
&lt;p&gt;Orden de magnitud sobre un caso real de una tienda WooCommerce alojada en Webempresa con 50.000 productos: un &lt;code&gt;meta_query&lt;/code&gt; contra &lt;code&gt;_stock_status&lt;/code&gt; sin índice sobre &lt;code&gt;(meta_key, post_id)&lt;/code&gt; se mantiene entre 1,5 y 3 segundos. Tras añadir el índice compuesto, la misma consulta baja a 50–200 ms. La consulta es idéntica; lo único que cambió fue el índice.&lt;/p&gt;
&lt;p&gt;El resto de esta guía es la memoria muscular para evitar esos tres modos de fallo y para recuperar el control cuando heredas un tema que ya los tiene cableados.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-1-arquitectura-de-una-solicitud&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-arquitectura-de-una-solicitud&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: Arquitectura de una solicitud&lt;/h2&gt;
&lt;p&gt;Para dominar &lt;code&gt;WP_Query&lt;/code&gt;, debes entender que sucede cuando lo instancias. WordPress ejecuta los siguientes pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Análisis de argumentos&lt;/strong&gt;: Convirtiendo tu array de argumentos en un formato estandarizado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación SQL&lt;/strong&gt;: Construyendo una sentencia SQL SELECT compleja&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ejecucion de consulta&lt;/strong&gt;: Enviando la solicitud a la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Llenado del objeto&lt;/strong&gt;: Poblando el objeto &lt;code&gt;WP_Query&lt;/code&gt; con objetos de publicación y metadatos&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;dentro-del-objeto-wp_query&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dentro-del-objeto-wp_query&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dentro del objeto WP_Query&lt;/h3&gt;
&lt;p&gt;Cuando ejecutas &lt;code&gt;$query = new WP_Query($args)&lt;/code&gt;, no solo obtienes un array de publicaciónes. Obtienes un objeto masivo con propiedades criticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$query-&gt;posts&lt;/code&gt;: Array de objetos &lt;code&gt;WP_Post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$query-&gt;post_count&lt;/code&gt;: Número de publicaciónes en la página actual&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$query-&gt;found_posts&lt;/code&gt;: Total de publicaciónes que coinciden con los criterios&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$query-&gt;max_num_pages&lt;/code&gt;: Total de páginas de resultados&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$query-&gt;query_vars&lt;/code&gt;: Los argumentos que WordPress realmente uso&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;1-el-loop-principal-contexto-global&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-loop-principal-contexto-global&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El Loop principal (contexto global)&lt;/h3&gt;
&lt;p&gt;Es el loop activado por la solicitud de URL. WordPress maneja la instanciacion; tu solo iteras:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) : &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        get_template_part&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template-parts/content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-el-loop-secundario-consultas-personalizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-loop-secundario-consultas-personalizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El Loop secundario (consultas personalizadas)&lt;/h3&gt;
&lt;p&gt;Se usa para listas tipo “Posts relacionados”, widgets de últimas noticias o cualquier sección que muestre contenido fuera de la consulta principal. En catálogos reales conviven tres constructores que no son intercambiables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;new WP_Query( $args )&lt;/code&gt;, objeto completo, expone &lt;code&gt;found_posts&lt;/code&gt;, &lt;code&gt;max_num_pages&lt;/code&gt; y soporta iteración con &lt;code&gt;the_post()&lt;/code&gt;. Úsalo cuando necesites paginación o acceso completo a las template tags.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_posts( $args )&lt;/code&gt;, envoltorio ligero que devuelve un array de objetos &lt;code&gt;WP_Post&lt;/code&gt;. Por defecto fija &lt;code&gt;&apos;suppress_filters&apos; =&gt; true&lt;/code&gt; y &lt;code&gt;&apos;no_found_rows&apos; =&gt; true&lt;/code&gt;, lo que es más rápido pero salta los filtros &lt;code&gt;posts_*&lt;/code&gt;. Idóneo para listas cortas y de tamaño fijo en barras laterales.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;query_posts()&lt;/code&gt;, destructivo: sobrescribe la consulta principal global, rompe los condicionales &lt;code&gt;is_*()&lt;/code&gt; del resto de la página y obliga a reconstruir la consulta principal con &lt;code&gt;wp_reset_query()&lt;/code&gt;. El core lo desaconseja desde 2010 (sigue presente solo por retrocompatibilidad). No lo uses. Si lo encuentras en un tema heredado, sustitúyelo por &lt;code&gt;pre_get_posts&lt;/code&gt; para la consulta principal y &lt;code&gt;new WP_Query&lt;/code&gt; para todo lo demás.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;no_found_rows&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// CRITICO PARA EL RENDIMIENTO&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $args );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Renderizar título, extracto, etc.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// OBLIGATORIO para restaurar el objeto global $post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-asesinos-de-rendimiento-los-no-hagas-de-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-asesinos-de-rendimiento-los-no-hagas-de-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: Asesinos de rendimiento (los “no hagas” de 2026)&lt;/h2&gt;
&lt;h3 id=&quot;1-posts_per_page---1-es-un-disparo-en-el-pie&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-posts_per_page---1-es-un-disparo-en-el-pie&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. &lt;code&gt;posts_per_page =&gt; -1&lt;/code&gt; es un disparo en el pie&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;-1&lt;/code&gt; indica a WP_Query que cargue cada fila coincidente como objeto &lt;code&gt;WP_Post&lt;/code&gt; hidratado y, a continuación, ejecute &lt;code&gt;update_post_meta_cache&lt;/code&gt; y &lt;code&gt;update_post_term_cache&lt;/code&gt; sobre todas. En un CPT que pasó de 50 entradas a 5.000 en dos años, el código que tardaba 80 ms ahora reserva más de 200 MB de memoria PHP y agota el &lt;code&gt;memory_limit&lt;/code&gt; típico de los planes compartidos de Raiola Networks o Webempresa.&lt;/p&gt;
&lt;p&gt;La solución es un límite duro alineado con la superficie renderizada:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Widget lateral con cinco elementos → &lt;code&gt;&apos;posts_per_page&apos; =&gt; 5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Generador de sitemap que sí necesita todas las filas → procesa por lotes con &lt;code&gt;paged&lt;/code&gt; dentro de un bucle, no con &lt;code&gt;-1&lt;/code&gt;. 200 IDs por lote es un techo seguro en hosting habitual.&lt;/li&gt;
&lt;li&gt;Herramientas internas de exportación donde aceptas presión de memoria → aun así, fija &lt;code&gt;&apos;fields&apos; =&gt; &apos;ids&apos;&lt;/code&gt; para no hidratar objetos completos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-sql_calc_found_rows-corre-incluso-cuando-nadie-lee-el-total&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-sql_calc_found_rows-corre-incluso-cuando-nadie-lee-el-total&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. &lt;code&gt;SQL_CALC_FOUND_ROWS&lt;/code&gt; corre incluso cuando nadie lee el total&lt;/h3&gt;
&lt;p&gt;Sin &lt;code&gt;no_found_rows&lt;/code&gt;, WP_Query añade &lt;code&gt;SQL_CALC_FOUND_ROWS&lt;/code&gt; al SELECT y emite un &lt;code&gt;SELECT FOUND_ROWS()&lt;/code&gt; adicional. MySQL sigue contando después del LIMIT, y sobre una tabla &lt;code&gt;wp_posts&lt;/code&gt; de 200.000 filas con un JOIN de &lt;code&gt;tax_query&lt;/code&gt; esto suele añadir 80–250 ms por petición, dependiendo del estado de la caché.&lt;/p&gt;
&lt;p&gt;Si la página no muestra “Página 3 de 47” ni un total, fija &lt;code&gt;&apos;no_found_rows&apos; =&gt; true&lt;/code&gt;. La pregunta natural (“pero quiero paginación con enlaces siguiente y anterior”) tiene respuesta sin &lt;code&gt;found_posts&lt;/code&gt;: pide &lt;code&gt;posts_per_page + 1&lt;/code&gt; y renderiza &lt;code&gt;posts_per_page&lt;/code&gt;; la fila extra señala que existe una página siguiente. Es exactamente el patrón de paginación de Twitter y de Hacker News.&lt;/p&gt;
&lt;p&gt;Para archivos paginados que sí muestran un total real (“Mostrando 1–10 de 4.200 artículos”), conserva el conteo, pero guárdalo en un transient de cinco minutos con clave compuesta por la firma de filtros. El total raramente cambia en esa ventana; el escaneo del JOIN no necesita repetirse en cada carga.&lt;/p&gt;
&lt;h3 id=&quot;3-ordenar-por-aleatorio-orderby--rand&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-ordenar-por-aleatorio-orderby--rand&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Ordenar por aleatorio (&lt;code&gt;orderby =&gt; rand&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;La operación más costosa en MySQL. La base de datos crea una tabla temporal, asigna un número aleatorio a cada fila y luego las ordena.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obtener IDs de las últimás 50 publicaciónes&lt;/li&gt;
&lt;li&gt;Seleccionar 5 IDs aleatorios en PHP&lt;/li&gt;
&lt;li&gt;Ejecutar segunda consulta con &lt;code&gt;post__in =&gt; $random_ids&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;4-meta_query-contra-meta_key-sin-indexar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-meta_query-contra-meta_key-sin-indexar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. &lt;code&gt;meta_query&lt;/code&gt; contra &lt;code&gt;meta_key&lt;/code&gt; sin indexar&lt;/h3&gt;
&lt;p&gt;Es la causa más frecuente de archivos lentos en WooCommerce heredados, sobre todo en catálogos textiles españoles tipo Adolfo Domínguez o casos similares con miles de SKU. &lt;code&gt;wp_postmeta&lt;/code&gt; solo trae un índice sobre &lt;code&gt;meta_key&lt;/code&gt;, demasiado poco selectivo cuando WordPress filtra por &lt;code&gt;meta_key = &apos;_stock_status&apos; AND meta_value = &apos;instock&apos;&lt;/code&gt;: MySQL sigue recorriendo todas las filas con esa clave.&lt;/p&gt;
&lt;p&gt;Caso real: una tienda alojada en Stackscale con 50.000 productos. La página de catálogo enganchaba &lt;code&gt;pre_get_posts&lt;/code&gt; para añadir un &lt;code&gt;meta_query&lt;/code&gt; por &lt;code&gt;_stock_status&lt;/code&gt; y un campo personalizado &lt;code&gt;_marca&lt;/code&gt;. El TTFB P95 era de 4,1 segundos. SAVEQUERIES mostraba que el 80% del tiempo se quemaba en un JOIN contra &lt;code&gt;wp_postmeta&lt;/code&gt;. La corrección:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ALTER&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; TABLE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ADD&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; idx_meta_key_post_id (meta_key(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), post_id);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tras el índice, la misma consulta bajó a 180 ms. No tocó ni una línea de PHP. Para valores que sí participan en comparaciones de rango (&lt;code&gt;&apos;compare&apos; =&gt; &apos;&gt;&apos;&lt;/code&gt;, &lt;code&gt;&apos;compare&apos; =&gt; &apos;BETWEEN&apos;&lt;/code&gt;), también necesitas índice sobre &lt;code&gt;meta_value&lt;/code&gt;, normalmente un índice de prefijo, porque la columna es &lt;code&gt;LONGTEXT&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Cuando el espacio de valores es fijo (tallas, colores, slugs de marca), no uses &lt;code&gt;meta_query&lt;/code&gt; en absoluto. Registra una taxonomía personalizada. &lt;code&gt;wp_term_relationships&lt;/code&gt; ya está indexada por &lt;code&gt;object_id&lt;/code&gt; y &lt;code&gt;term_taxonomy_id&lt;/code&gt;, así que el mismo filtro que tardaba 1,8 s como &lt;code&gt;meta_query&lt;/code&gt; corre en 30–60 ms como &lt;code&gt;tax_query&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;5-los-join-de-tax_query-se-acumulan-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-los-join-de-tax_query-se-acumulan-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Los JOIN de &lt;code&gt;tax_query&lt;/code&gt; se acumulan a escala&lt;/h3&gt;
&lt;p&gt;Un &lt;code&gt;tax_query&lt;/code&gt; con una sola taxonomía añade un JOIN contra &lt;code&gt;wp_term_relationships&lt;/code&gt; y otro contra &lt;code&gt;wp_term_taxonomy&lt;/code&gt;. Por encima de 200.000 posts, cada taxonomía adicional en la misma consulta añade 50–200 ms. Las páginas de filtros facetados que combinan seis taxonomías (talla + color + marca + temporada + material + rango de precio) suelen quedarse entre 800 ms y 2 s. Las opciones razonables son: desnormalizar en una única taxonomía de facetas, pasar a FacetWP o SearchWP (que indexan fuera de tabla), o llevar las facetas a un motor de búsqueda, ElasticPress sobre Elasticsearch o Algolia para catálogos de solo lectura como los que usan Mango y otras tiendas de moda en España.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-lógica-de-consulta-avanzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-lógica-de-consulta-avanzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Lógica de consulta avanzada&lt;/h2&gt;
&lt;h3 id=&quot;1-relaciones-con-tax_query&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-relaciones-con-tax_query&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Relaciones con &lt;code&gt;tax_query&lt;/code&gt;&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;product&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;tax_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;relation&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;taxonomy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;color&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;field&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;terms&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rojo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;azul&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;operator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;IN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;taxonomy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;talla&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;field&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;terms&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;grande&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-consultas-de-fecha-rango-dinámico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-consultas-de-fecha-rango-dinámico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Consultas de fecha (rango dinámico)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;date_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;after&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;1 de enero de 2025&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;before&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;year&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2026&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;month&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;day&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 31&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;inclusive&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-cache---el-secreto-de-la-velocidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-cache---el-secreto-de-la-velocidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Cache - El secreto de la velocidad&lt;/h2&gt;
&lt;p&gt;En 2026, un sitio de alto tráfico raramente deberia tocar la base de datos para listas estaticas.&lt;/p&gt;
&lt;h3 id=&quot;1-usando-la-api-de-transients&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-usando-la-api-de-transients&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Usando la API de Transients&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;home_trending_jobs&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $results ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $results &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( [ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Args complejos */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ] );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $results, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-desactivar-el-priming-de-caché-en-una-consulta-concreta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-desactivar-el-priming-de-caché-en-una-consulta-concreta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Desactivar el priming de caché en una consulta concreta&lt;/h3&gt;
&lt;p&gt;Tras obtener los IDs, WP_Query llama a &lt;code&gt;update_post_meta_cache()&lt;/code&gt; y &lt;code&gt;update_post_term_cache()&lt;/code&gt; para cargar en bloque cada fila de meta y de términos en el object cache. Es la opción correcta para un loop de plantilla normal que va a llamar a &lt;code&gt;get_post_meta()&lt;/code&gt; y &lt;code&gt;get_the_terms()&lt;/code&gt;. No lo es para un loop que solo renderiza título y permalink.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;update_post_meta_cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;update_post_term_cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;no_found_rows&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;          =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                 =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ids&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para un archivo de 50 posts con 30 filas de meta cada uno, saltarse el priming de meta evita leer y cachear 1.500 filas en una sola petición. Combinado con &lt;code&gt;&apos;fields&apos; =&gt; &apos;ids&apos;&lt;/code&gt;, ni siquiera hidratas objetos &lt;code&gt;WP_Post&lt;/code&gt;, útil para generadores de sitemap, listas de IDs de relacionados en barra lateral, o widgets del dashboard administrativo. Importante para cumplimiento AEPD: cuando registras campos de auditoría sobre quién consulta qué (logs RGPD por consulta), evita que ese hook engorde con &lt;code&gt;get_post_meta()&lt;/code&gt; adicionales por fila renderizada, el coste se multiplica por el tamaño de la página.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-5-páginación-en-loops-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-páginación-en-loops-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Páginación en loops personalizados&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Por que la páginación devuelve 404&lt;/strong&gt;: WordPress no sabe en que página estas para un &lt;code&gt;WP_Query&lt;/code&gt; personalizado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$paged &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_query_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_query_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_front_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $paged &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_query_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_query_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;          =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $paged,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-6-wp_query-en-stacks-modernos-rest-y-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-wp_query-en-stacks-modernos-rest-y-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: WP_Query en stacks modernos (REST y headless)&lt;/h2&gt;
&lt;p&gt;Si construyes un frontend React usando WordPress headless, no usas &lt;code&gt;WP_Query&lt;/code&gt; directamente en JS, pero la REST API lo usa en el backend.&lt;/p&gt;
&lt;h3 id=&quot;personalizando-resultados-de-rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#personalizando-resultados-de-rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Personalizando resultados de REST API:&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_post_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $args, $request ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $exclude &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;exclude_ids&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $exclude ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $args[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post__not_in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; explode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;,&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $exclude );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $args;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-7-depurando-consultas-lentas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-depurando-consultas-lentas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Depurando consultas lentas&lt;/h2&gt;
&lt;p&gt;Las cuatro herramientas que de verdad encuentran la respuesta:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Query Monitor&lt;/strong&gt; (John Blackbourn). Instálalo en staging, nunca en producción. El panel “Queries” agrupa por componente, así que ves enseguida si el TTFB de 2 segundos venía de tu tema, del core de WooCommerce o de un plugin de terceros que enganchó &lt;code&gt;pre_get_posts&lt;/code&gt;. La pestaña de “duplicate queries” caza los bucles N+1 donde una template tag dentro de &lt;code&gt;the_post()&lt;/code&gt; vuelve a consultar la base de datos por cada fila.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;SAVEQUERIES&lt;/code&gt;&lt;/strong&gt;. Define &lt;code&gt;define( &apos;SAVEQUERIES&apos;, true );&lt;/code&gt; en &lt;code&gt;wp-config.php&lt;/code&gt; solo en staging, duplica el uso de memoria. WordPress llena entonces &lt;code&gt;$wpdb-&gt;queries&lt;/code&gt; con tripletas &lt;code&gt;[ sql, duración, callstack ]&lt;/code&gt;. &lt;code&gt;error_log( print_r( $wpdb-&gt;queries, true ) )&lt;/code&gt; en &lt;code&gt;shutdown&lt;/code&gt; produce la traza canónica de “qué corrió y cuánto tardó”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$query-&gt;request&lt;/code&gt; con &lt;code&gt;EXPLAIN&lt;/code&gt;&lt;/strong&gt;. Después de &lt;code&gt;new WP_Query()&lt;/code&gt;, &lt;code&gt;echo $query-&gt;request;&lt;/code&gt; imprime el SQL real generado por WordPress. Pasa esa cadena por &lt;code&gt;EXPLAIN&lt;/code&gt; en TablePlus o &lt;code&gt;mysql -e&lt;/code&gt;. Busca &lt;code&gt;type: ALL&lt;/code&gt; (escaneo completo de tabla), &lt;code&gt;Using filesort&lt;/code&gt; o &lt;code&gt;Using temporary&lt;/code&gt;, son las filas que necesitan índice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP-CLI&lt;/strong&gt;. En entornos de hosting español como Webempresa con LiteSpeed, Raiola Networks con PHP-FPM o Stackscale dedicado, WP-CLI suele estar disponible por SSH: &lt;code&gt;wp db query --skip-column-names &quot;EXPLAIN $SQL&quot;&lt;/code&gt; ejecuta &lt;code&gt;EXPLAIN&lt;/code&gt; contra la BD viva sin la sobrecarga del navegador. &lt;code&gt;wp post list --post_type=product --fields=ID --posts_per_page=10&lt;/code&gt; reproduce la lógica de consulta desde un entorno determinista, útil cuando la página lenta queda detrás de un paywall o login.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Heurística para priorizar: cualquier consulta por encima de 50 ms es sospechosa con caché caliente, cualquier cosa sobre 200 ms está rota. El presupuesto total para una página WordPress renderizada en servidor dentro del rango “Bueno” de Core Web Vitals es de unos 600 ms de TTFB; si una sola WP_Query se come 250 ms, te has salido del presupuesto antes de que la plantilla empiece a renderizar. La comunidad WordPress Madrid y WordPress Barcelona suele compartir capturas de Query Monitor exactamente con este patrón en sus meetups mensuales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;checklist-operativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-operativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist operativa&lt;/h2&gt;
&lt;p&gt;Cuando una página va lenta, recorre la lista en orden, los tres primeros puntos explican la mayoría de las lentitudes de WP_Query en sitios WordPress en producción.&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Lanza Query Monitor sobre la URL lenta. Ordena por tiempo. La consulta más larga es casi siempre la que hay que arreglar.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Comprueba si los filtros &lt;code&gt;meta_query&lt;/code&gt; apuntan a una &lt;code&gt;meta_key&lt;/code&gt; sin indexar. Si es así, añade &lt;code&gt;INDEX (meta_key(32), post_id)&lt;/code&gt; sobre &lt;code&gt;wp_postmeta&lt;/code&gt;.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Añade &lt;code&gt;&apos;no_found_rows&apos; =&gt; true&lt;/code&gt; a cada loop secundario que no muestre un total real.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Sustituye &lt;code&gt;posts_per_page =&gt; -1&lt;/code&gt; por un límite duro o procesa por lotes con &lt;code&gt;paged&lt;/code&gt;.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Reemplaza &lt;code&gt;query_posts()&lt;/code&gt; por &lt;code&gt;pre_get_posts&lt;/code&gt; (consulta principal) o &lt;code&gt;new WP_Query&lt;/code&gt; (loops secundarios).&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; En loops que solo renderizan título y enlace, usa &lt;code&gt;&apos;fields&apos; =&gt; &apos;ids&apos;&lt;/code&gt; y &lt;code&gt;update_post_meta_cache =&gt; false&lt;/code&gt;.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Después de loops personalizados, llama a &lt;code&gt;wp_reset_postdata()&lt;/code&gt; para restaurar el &lt;code&gt;$post&lt;/code&gt; global.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Si el mismo WP_Query corre en cada carga y los datos cambian poco, envuélvelo en un transient con clave por la firma de los args.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lectura relacionada: &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Por qué importa esto en 2026 no es abstracto. El informe de Cloudflare 2025 sobre peso de página sitúa el TTFB mediano de e-commerce sobre WordPress en hosting compartido en 1,4 s, frente al umbral “Bueno” de Google de 800 ms. Las correcciones a nivel de consulta de este documento suelen ser la vía más barata para recuperar ese presupuesto, más barata que cambiar a un plan dedicado en Stackscale, más barata que añadir CDN, y mucho más barata que rehacer el sitio en headless.&lt;/p&gt;
&lt;p&gt;¿Necesitas ayuda con &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; o &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt;? &lt;a href=&quot;/es/contacto/&quot;&gt;Contáctanos&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category><category>performance</category><category domain="tag">development</category><category domain="tag">database</category><category domain="tag">php</category><category domain="tag">sql</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Historia de WordPress, de la versión 4.9 a la era Gutenberg</title><link>https://wppoland.com/es/wordpress-evolution-4-9-gutenberg-era/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-evolution-4-9-gutenberg-era/</guid><description>WordPress 4.9 fue &quot;la calma antes de la tormenta&quot;. Analizamos este momento pivotal en la historia de WP que preparo el terreno para el editor de bloques. Que cambio desde entonces? Como evoluciono el ecosistema?</description><pubDate>Thu, 14 Sep 2017 14:14:09 GMT</pubDate><content:encoded>&lt;h2 id=&quot;la-calma-antes-de-la-tormenta-wordpress-49-tipton&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-calma-antes-de-la-tormenta-wordpress-49-tipton&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La calma antes de la tormenta: WordPress 4.9 “Tipton”&lt;/h2&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;WordPress 4.9 “Tipton”, lanzado en noviembre de 2017, ocupa un lugar único en la historia de WordPress como la última versión principal antes del revolucionario WordPress 5.0, que introdujo el editor de bloques Gutenberg. Esta versión represento un momento de madurez para WordPress como plataforma de desarrollo, introduciendo comodidades que ahora consideramos estándar pero que fueron innovadoras en su momento.&lt;/p&gt;
&lt;p&gt;Mirando desde nuestra perspectiva de 2026, la versión 4.9 se erige como un fascinante artefacto histórico - una instantanea de WordPress al borde de su transformación más significativa desde la creación de la plataforma. Los desarrolladores y diseñadores que construyeron sitios en 4.9 presenciaron una era donde los archivos de plantillas PHP todavia reinaban supremos, donde las areas de widgets se gestionaban a través de interfaces de arrastrar y soltar, y donde el concepto de “bloques” se asociaba principalmente con bloques multimedia en el contenido en lugar del elemento fundamental de construccion de páginas enteras.&lt;/p&gt;
&lt;p&gt;El ciclo de desarrollo de WordPress 4.9 introdujo varias mejoras clave que aumentaron el atractivo de la plataforma tanto para desarrolladores como para administradores de sitios. El enfoque en la calidad del código, la optimización del rendimiento y los refinamientos en la experiencia del usuario demostraron el compromiso de WordPress con la mejora continua incluso mientras el equipo se preparaba para la enorme empresa que se convertiria en Gutenberg.&lt;/p&gt;
&lt;h3 id=&quot;caracteristicas-clave-introducidas-en-wordpress-49&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caracteristicas-clave-introducidas-en-wordpress-49&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caracteristicas clave introducidas en WordPress 4.9&lt;/h3&gt;
&lt;p&gt;WordPress 4.9 trajo varias características transformadoras que moldearon el panorama del desarrollo durante años. Las mejoras más significativas se centraron en el Customizer, las capacidades de edicion de código y la gestión de widgets, cada una abordando puntos de dolor que desarrolladores y administradores de sitios habian expresado frustracion durante mucho tiempo.&lt;/p&gt;
&lt;p&gt;Las mejoras del Customizer en 4.9 representaron un gran paso adelante en el viaje de la plataforma hacia una experiencia de edicion de sitios más dinámica y amigable para el usuario. Estas mejoras sentaron bases importantes para la vision de Full Site Editing que surgiria en versiones posteriores, demostrando el compromiso del equipo de WordPress con la evolucion del Customizer como centro principal de personalización del sitio.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo de mejoras del Customizer en WordPress 4.9&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregando un nuevo control con vista previa en tiempo real&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wp_customize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_setting&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;theme_options[accent_color]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;default&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;#0073aa&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;transport&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;postMessage&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;sanitize_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;sanitize_hex_color&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wp_customize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_control&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Customize_Color_Control&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $wp_customize,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;theme_options[accent_color]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;label&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; __&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Color de acento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my-theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;section&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;colors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;priority&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La integración de CodeMirror en el nucleo de WordPress para la edicion de temas y plugins fue otra mejora histórica. Antes de 4.9, editar archivos de temas o agregar CSS personalizado significaba trabajar con un textarea básico que no ofrecia resaltado de sintaxis, números de linea o deteccion de errores. Los desarrolladores que accidentalmente introducian errores de sintaxis a menudo rompian sus sitios, llevando a la infame “pantalla blanca de la muerte” y requiriendo acceso FTP para soluciónar el problema.&lt;/p&gt;
&lt;h2 id=&quot;la-revolucion-codemirror-experiencia-del-desarrollador-transformada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-revolucion-codemirror-experiencia-del-desarrollador-transformada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La revolucion CodeMirror: Experiencia del desarrollador transformada&lt;/h2&gt;
&lt;p&gt;La introduccion de editores basados en CodeMirror en WordPress 4.9 cambio fundamentalmente como los desarrolladores interactuaban con las capacidades de edicion de código de la plataforma. El resaltado de sintaxis, la numeracion de lineas, la coincidencia de parentesis y la deteccion de errores se convirtieron en características estándar, reduciendo dramaticamente la probabilidad de errores que rompieran sitios y mejorando la productividad general del desarrollador.&lt;/p&gt;
&lt;p&gt;Esta mejora fue particularmente significativa para los administradores de sitios que frecuentemente necesitaban agregar CSS personalizado o modificar archivos de temas. La retroalimentacion visual proporcionada por el resaltado de sintaxis fácilito mucho la identificacion de errores tipograficos, puntos y comás faltantes y otros errores de codificacion comunes antes de que pudieran causar problemas en el sitio en vivo. Los números de linea también facilitaron la colaboración al trabajar con equipos de desarrollo o al buscar ayuda de la comunidad de WordPress.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Ejemplo de CSS con resaltado de sintaxis - soporte CodeMirror en WordPress 4.9 */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.site-header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#ffffff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    box-shadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.site-header.scrolled&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f8f9fa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Diseño responsive con media queries */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; screen&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; and&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;768&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .site-header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .main-navigation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La integración de CodeMirror también mejoro la sección “CSS Adicional” en el Customizer, convirtiendola en una opción más viable para almacenar reglas CSS personalizadas. Esto fue particularmente valioso para los usuarios de la función gratuita del Customizer en el entorno de WordPress.com, donde el acceso directo a archivos no estaba disponible.&lt;/p&gt;
&lt;h2 id=&quot;mejoras-en-widgets-soporte-de-galerias-y-gestión-mejorada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejoras-en-widgets-soporte-de-galerias-y-gestión-mejorada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejoras en widgets: Soporte de galerias y gestión mejorada&lt;/h2&gt;
&lt;p&gt;WordPress 4.9 introdujo soporte nativo de galerias para widgets, abordando una necesidad comun entre los administradores de sitios que querian mostrar galerias fotograficas en barras laterales y otras areas de widgets sin requerir código personalizado o soluciones de terceros. Esta caracteristica se baso en las mejoras de la biblioteca multimedia que se habian introducido en versiones anteriores, demostrando el compromiso de WordPress de hacer las tareas comunes más accesibles.&lt;/p&gt;
&lt;p&gt;Las mejoras del sistema de widgets en 4.9 también incluyeron refinamientos en la interfaz de arrastrar y soltar, facilitando la organización y configuración de widgets en multiples areas. Estas mejoras, aunque no tan dramaticas como la introduccion del editor de bloques seria despues, representaron mejoras incrementales significativas en la experiencia de gestión del sitio.&lt;/p&gt;
&lt;h2 id=&quot;la-transicion-a-gutenberg-una-comunidad-dividida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-transicion-a-gutenberg-una-comunidad-dividida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La transicion a Gutenberg: Una comunidad dividida&lt;/h2&gt;
&lt;p&gt;WordPress 5.0, lanzado en diciembre de 2018, introdujo el editor de bloques Gutenberg y cambio fundamentalmente como los usuarios crean y editan contenido en WordPress. La reaccion de la comunidad ante este cambio fue, por decirlo suavemente, polarizada. La transicion del editor clásico basado en TinyMCE a un enfoque basado en bloques represento el cambio más significativo en la experiencia de edicion de WordPress en la historia de la plataforma.&lt;/p&gt;
&lt;p&gt;La comunidad se dividio en dos campos distintos tras la introduccion de Gutenberg. Los tradicionalistas, incluyendo muchos desarrolladores experimentados y administradores de sitios, expresaron preocupacion por la curva de aprendizaje, las implicaciones de rendimiento y la perdida de flujos de trabajo familiares. Este grupo adopto abrumadoramente el plugin “Classic Editor”, que ha mantenido millones de instalaciones activas hasta el dia de hoy y continua recibiendo actualizaciones para los usuarios que prefieren la experiencia de edicion tradicional.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Plugin Classic Editor - manteniendo la experiencia tradicional de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// El plugin ha sido instalado por millones que prefieren el enfoque clasico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Caracteristicas clave preservadas:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// - Edicion de contenido basada en TinyMCE&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// - No se requieren bloques&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// - Atajos de teclado familiares&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// - Flujo de trabajo de metabox tradicional&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los creadores modernos, por otro lado, abrazaron el enfoque basado en bloques, reconociendo su potencial para la flexibilidad del contenido y la consistencia del diseño. El editor de bloques introdujo un nuevo paradigma donde el contenido se construye a partir de componentes reutilizables y configurables en lugar de un único campo de texto enriquecido. Este enfoque se alineo con tendencias más amplias de la industria hacia la arquitectura basada en componentes e hizo más fácil crear diseños consistentes y responsivos sin código personalizado.&lt;/p&gt;
&lt;h2 id=&quot;full-site-editing-la-evolucion-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#full-site-editing-la-evolucion-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Full Site Editing: La evolucion continua&lt;/h2&gt;
&lt;p&gt;Tras la introduccion del editor de bloques, el equipo de WordPress continuo empujando los limites de lo posible con bloques. El concepto de Full Site Editing (FSE) surgio como la siguiente evolucion lógica, extendiendo el paradigma de bloques desde la edicion de contenido hasta la personalización de temas. Con FSE, todo - desde encabezados y pies de página hasta barras laterales y partes de plantillas - podia construirse con bloques.&lt;/p&gt;
&lt;p&gt;WordPress 5.8, lanzado en 2021, marco un hito significativo en el viaje FSE al introducir widgets basados en bloques. Este cambio reemplazo el sistema tradicional de widgets con un enfoque basado en bloques, permitiendo a los usuarios agregar y configurar widgets usando la misma interfaz que usaban para el contenido. Aunque este cambio inicialmente encontro resistencia de usuarios acostumbrados al sistema clásico de widgets, represento un paso crucial hacia la vision de edicion completa del sitio.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo de plantilla de bloques - WordPress 5.0+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Definiendo un patron de bloques personalizado para un tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; my_theme_register_block_patterns&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_block_pattern&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;my-theme/hero-section&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; __&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Seccion Hero&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my-theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; __&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Una seccion hero de ancho completo con título y boton&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my-theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;categories&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;featured&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;!-- wp:cover {&quot;overlayColor&quot;:&quot;primary&quot;,&quot;minHeight&quot;:600,&quot;isDark&quot;:true} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;div class=&quot;wp-block-cover is-dark&quot; style=&quot;min-height:600px&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &amp;#x3C;span aria-hidden=&quot;true&quot; class=&quot;wp-block-cover__background has-primary-background-color has-background-dim-100 has-background-dim&quot;&gt;&amp;#x3C;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &amp;#x3C;div class=&quot;wp-block-cover__inner-container&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- wp:heading {&quot;level&quot;:1,&quot;style&quot;:{&quot;typography&quot;:{&quot;fontSize&quot;:48}}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;h1 class=&quot;wp-block-heading&quot; style=&quot;font-size:48px&quot;&gt;Bienvenido a nuestro sitio&amp;#x3C;/h1&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- /wp:heading --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- wp:paragraph {&quot;style&quot;:{&quot;typography&quot;:{&quot;fontSize&quot;:20}}} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;p style=&quot;font-size:20px&quot;&gt;Descubre contenido y servicios increibles.&amp;#x3C;/p&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- /wp:paragraph --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- wp:button {&quot;backgroundColor&quot;:&quot;secondary&quot;} --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;div class=&quot;wp-block-button&quot;&gt;&amp;#x3C;a class=&quot;wp-block-button__link has-secondary-background-color has-background&quot;&gt;Comenzar&amp;#x3C;/a&gt;&amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                        &amp;#x3C;!-- /wp:button --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &amp;#x3C;!-- /wp:cover --&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my_theme_register_block_patterns&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El Editor de Sitios, introducido en WordPress 5.9, represento la culminacion de la vision FSE hasta ese punto. Esta caracteristica proporcionaba una interfaz unificada para editar cada aspecto de un sitio usando bloques, incluyendo plantillas, partes de plantillas y estilos globales. Para los desarrolladores de temas, esto significo aprender nuevos enfoques para el desarrollo de temas, incluyendo temas de bloques que aprovechan el archivo de configuración theme.json para estilos y configuraciónes.&lt;/p&gt;
&lt;h2 id=&quot;el-panorama-moderno-de-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-panorama-moderno-de-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El panorama moderno de WordPress en 2026&lt;/h2&gt;
&lt;p&gt;Avanzando rápido a 2026, la disputa entre la edicion clásica y basada en bloques se ha resuelto en gran medida a favor de los bloques, aunque el plugin Classic Editor mantiene una base de usuarios significativa para casos de uso específicos. El ecosistema WordPress ha evolucionado dramaticamente, con los temas de bloques convirtiendose en el estándar para el nuevo desarrollo de temas, y el proyecto Gutenberg continuando introduciendo nuevas características y mejoras.&lt;/p&gt;
&lt;p&gt;Los patrones de bloques han surgido como una herramienta poderosa para los constructores de sitios, permitiendo diseños de página reutilizables que pueden insertarse y personalizarse fácilmente. El Directorio de Patrones, integrado directamente en el administrador de WordPress, proporciona un repositorio centralizado de patrones contribuidos por la comunidad que cubren todo, desde secciones hero hasta cuadriculas de testimonios y tablas de precios.&lt;/p&gt;
&lt;p&gt;El Editor de Sitios ha madurado hasta convertirse en una herramienta robusta de creación de sitios, permitiendo a los usuarios construir sitios completos sin escribir una sola linea de código PHP. Theme.json se ha convertido en el mecanismo estándar para definir configuraciónes y estilos de temas, proporcionando una alternativa más mantenible y eficiente a la personalización tradicional de temas basada en PHP.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo de theme.json - WordPress 5.9+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Configuración centralizada del tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;versión&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;settings&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;palette&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#0073aa&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Primario&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;secondary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#23282d&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Secundario&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;duotone&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;colors&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#000000&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#ffffff&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;escala-de-grises&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;typography&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;fontFamilies&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;fontFamily&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;-apple-system, BlinkMacSystemFont, &apos;Segoe UI&apos;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &apos;Helvetica Neue&apos;, sans-serif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                    &quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;system&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;spacing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;units&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;px&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;em&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;rem&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;%&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;vw&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;styles&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;background&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#ffffff&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            &quot;text&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#333333&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;preservando-el-legado-recordando-wordpress-49&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preservando-el-legado-recordando-wordpress-49&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preservando el legado: Recordando WordPress 4.9&lt;/h2&gt;
&lt;p&gt;A medida que la plataforma WordPress continua evolucionando, vale la pena recordar la versión 4.9 como el “último bastion” del enfoque clásico de construccion de temas PHP. Para los desarrolladores y diseñadores que construyeron sus carreras trabajando con jerarquías de plantillas, personalización de functions.php y la API del Customizer, 4.9 representa un panorama familiar que en gran parte ha dado paso a nuevos paradigmas.&lt;/p&gt;
&lt;p&gt;La transicion de WordPress 4.9 a la era Gutenberg no estuvo exenta de desafios y controversias. Los problemas de compatibilidad de plugins, los requisitos de adaptacion de temas y las necesidades de capacitacion de usuarios demandaron atención de la comunidad WordPress. Sin embargo, los beneficios a largo plazo del enfoque basado en bloques - consistencia del contenido, flexibilidad de diseño y reduccion de la dependencia del código personalizado - han demostrado ser ventajas significativas para la plataforma.&lt;/p&gt;
&lt;p&gt;Para contexto histórico y propósitos educativos, comprender WordPress 4.9 sigue siendo valioso. Muchos sitios existentes continuan funcionando con temas construidos usando plantillas PHP tradicionales, y las habilidades requeridas para mantener y extender estos sitios siguen siendo relevantes. Además, comprender la arquitectura pre-Gutenberg ayuda a los desarrolladores a apreciar las decisiones de diseño que dieron forma al editor de bloques y las capacidades de Full Site Editing.&lt;/p&gt;
&lt;h2 id=&quot;conclusion-abrazando-la-evolucion-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-abrazando-la-evolucion-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Abrazando la evolucion en WordPress&lt;/h2&gt;
&lt;p&gt;El viaje de WordPress 4.9 a la era Gutenberg representa una de las transiciones más significativas en la historia de la plataforma. Aunque el cambio fue recibido inicialmente con resistencia y division, la comunidad WordPress ha abrazado en gran medida el enfoque basado en bloques, reconociendo su potencial para la flexibilidad del contenido, la consistencia del diseño y la reduccion de la complejidad del desarrollo.&lt;/p&gt;
&lt;p&gt;WordPress 4.9 será recordado como un momento pivotal - una plataforma sofisticada que habia alcanzado un alto nivel de madurez mientras se encontraba en el umbral de la transformación. Las características introducidas en esa versión, desde la integración de CodeMirror hasta las mejoras del Customizer, representaron la culminacion de años de mejora incremental que habian convertido a WordPress en el sistema de gestión de contenidos más popular del mundo.&lt;/p&gt;
&lt;p&gt;A medida que WordPress continua evolucionando, con el proyecto Gutenberg introduciendo regularmente nuevas características y mejoras, la plataforma mantiene su compromiso con el empoderamiento del usuario y la flexibilidad del desarrollador. Ya sea construyendo sitios usando temas PHP tradicionales, enfoques hibridos o temas de bloques completos, los desarrolladores y diseñadores continuan teniendo opciones que se adaptan a sus necesidades y preferencias.&lt;/p&gt;
&lt;p&gt;El legado de WordPress 4.9 vive no solo en los sitios que continuan funcionando sobre su base, sino en las lecciones aprendidas durante la transicion a la era de bloques - lecciones sobre comunidad, cambio y la búsqueda continua de democratizar la publicación en la web.&lt;/p&gt;</content:encoded><category>wordpress</category><category>history</category><category>gutenberg</category><category domain="tag">wordpress</category><category domain="tag">gutenberg</category><category domain="tag">editor-de-bloques</category><category domain="tag">historia-wordpress</category><category domain="tag">customizer</category><category domain="tag">desarrollo-web</category><enclosure url="https://wppoland.com/images/og/wordpress-49-whats-new.jpg" type="image/jpeg"/></item><item><title>Gestión de medios y optimización de imágenes en WordPress</title><link>https://wppoland.com/es/wordpress-media-management-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-media-management-guide/</guid><description>Domine la gestión de la biblioteca de medios de WordPress. Aprenda a desactivar páginas de adjuntos, optimizar imágenes para Core Web Vitals e implementar carga diferida para mejor rendimiento.</description><pubDate>Thu, 27 Jul 2017 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Las imágenes son el asesino #1 del rendimiento en sitios WordPress.&lt;/strong&gt;
En 2026, con Core Web Vitals como factor de ranking, un sitio lento significa perdida de ingresos.
Sin embargo, la mayoria de los sitios WordPress aun sirven JPEGs inflados y crean páginas de “adjuntos” inutiles para cada imagen subida.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.
Esta guía de ingenieria cubre la pila completa de optimización de medios para WordPress moderno.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-el-problema-de-las-páginas-de-adjuntos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-el-problema-de-las-páginas-de-adjuntos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: El problema de las páginas de adjuntos&lt;/h2&gt;
&lt;p&gt;Por defecto, WordPress crea una página dedicada para cada imagen que sube.
Ejemplo: &lt;code&gt;susitio.com/nombre-imagen/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por que esto es malo:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Confusion SEO&lt;/strong&gt;: Google indexa estas páginas vacias en lugar de su contenido real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presupuesto de rastreo desperdiciado&lt;/strong&gt;: Googlebot pierde tiempo en páginas inutiles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experiencia de usuario&lt;/strong&gt;: Los usuarios que hacen clic en imágenes llegan a páginas sin salida&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;la-solución-desactivar-páginas-de-adjuntos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-desactivar-páginas-de-adjuntos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Desactivar páginas de adjuntos&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Método 1: Redirigir al post padre&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_attachment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_parent ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_parent ), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Método 2: Devolver 404&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_attachment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wp_query;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $wp_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set_404&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        status_header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;404&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-2-formatos-de-imagen-modernos-avif-y-webp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-formatos-de-imagen-modernos-avif-y-webp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: Formatos de imagen modernos (AVIF y WebP)&lt;/h2&gt;
&lt;p&gt;JPEG es de 1992. Es hora de avanzar.&lt;/p&gt;
&lt;h3 id=&quot;comparación-de-formatos-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-formatos-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de formatos 2026:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JPEG&lt;/strong&gt;: 100KB linea base&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebP&lt;/strong&gt;: 60KB (40% más pequeño, buen soporte de navegadores)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AVIF&lt;/strong&gt;: 40KB (60% más pequeño, excelente calidad)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;habilitando-avif-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#habilitando-avif-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Habilitando AVIF en WordPress&lt;/h3&gt;
&lt;p&gt;WordPress 6.5+ soporta la subida de AVIF nativamente, pero necesita habilitarlo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_image_editors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $editors ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    array_unshift&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $editors, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_Image_Editor_Imagick&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $editors;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image_editor_output_format&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $formats ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $formats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image/jpeg&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;image/avif&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $formats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image/png&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;image/avif&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $formats;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Advertencia&lt;/strong&gt;: Esto convierte TODAS las subidas. Pruebe exhaustivamente.&lt;/p&gt;
&lt;h3 id=&quot;ventajas-de-avif-sobre-webp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-de-avif-sobre-webp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas de AVIF sobre WebP&lt;/h3&gt;
&lt;p&gt;AVIF no es solo un formato más pequeño: ofrece ventajas técnicas significativas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mejor compresion de gradientes&lt;/strong&gt;: Los degradados suaves se mantienen limpios sin artefactos de banda&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte de HDR&lt;/strong&gt;: Soporta contenido High Dynamic Range de forma nativa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejor rendimiento en imágenes con texto&lt;/strong&gt;: El texto superpuesto en imágenes se mantiene nítido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparencia&lt;/strong&gt;: Soporta canal alfa como PNG pero con compresion superior&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-3-carga-diferida-nativa-y-avanzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-carga-diferida-nativa-y-avanzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Carga diferida (nativa y avanzada)&lt;/h2&gt;
&lt;p&gt;WordPress 5.5+ agrega &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; automáticamente.
Pero puede optimizar aun mas.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-con-la-carga-diferida-nativa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-con-la-carga-diferida-nativa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema con la carga diferida nativa&lt;/h3&gt;
&lt;p&gt;Carga imágenes cuando estan en el viewport + un margen.
Para imágenes hero, esto causa Layout Shift (mala puntuacion CLS).&lt;/p&gt;
&lt;h3 id=&quot;la-solución-excluir-imágenes-above-the-fold&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-excluir-imágenes-above-the-fold&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Excluir imágenes above-the-fold&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_lazy_loading_enabled&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $default, $tag_name, $context ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;img&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tag_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $context ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // No hacer lazy load de la primera imagen&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        static&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $first_image ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $first_image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $default;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;prioridad-de-carga-con-fetchpriority&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prioridad-de-carga-con-fetchpriority&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prioridad de carga con fetchpriority&lt;/h3&gt;
&lt;p&gt;En 2026, el atributo &lt;code&gt;fetchpriority&lt;/code&gt; es esencial para indicar al navegador que imágenes cargar primero:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar fetchpriority=&quot;high&quot; a la imagen hero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_image_attributes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $attr, $attachment, $size ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $thumbnail_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_thumbnail_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $attachment&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $thumbnail_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fetchpriority&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;high&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar lazy para imagen hero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-4-imágenes-responsivas-srcset&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-imágenes-responsivas-srcset&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Imágenes responsivas (srcset)&lt;/h2&gt;
&lt;p&gt;WordPress genera multiples tamaños de imagen automáticamente.
Asegurese de usarlos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En su tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;large&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;sizes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;(max-width: 600px) 100vw, 50vw&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto le dice al navegador:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En móvil: usar ancho completo&lt;/li&gt;
&lt;li&gt;En escritorio: usar 50% del ancho&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El navegador descarga el tamaño optimo.&lt;/p&gt;
&lt;h2 id=&quot;parte-5-cdn-y-servicios-de-optimización-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-cdn-y-servicios-de-optimización-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: CDN y servicios de optimización de imágenes&lt;/h2&gt;
&lt;p&gt;Para sitios de alto tráfico, descargue el procesamiento de imágenes a un CDN.&lt;/p&gt;
&lt;h3 id=&quot;opciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opciones:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Images&lt;/strong&gt;: $5/mes por 100K imágenes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudinary&lt;/strong&gt;: Nivel gratuito disponible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;imgix&lt;/strong&gt;: Manipulación de imágenes en tiempo real via parametros URL&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ejemplo-integración-con-cloudinary&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-integración-con-cloudinary&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo: Integración con Cloudinary&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $url, $post_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cloudinary_base &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://res.cloudinary.com/sunube/image/upload/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $path &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_attachment_metadata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id )[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;file&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cloudinary_base &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;f_auto,q_auto/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $path;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-6-limpieza-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-limpieza-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Limpieza de base de datos&lt;/h2&gt;
&lt;p&gt;Con el tiempo, su biblioteca de medios se llena de imágenes no utilizadas.&lt;/p&gt;
&lt;h3 id=&quot;encontrar-medios-huerfanos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encontrar-medios-huerfanos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encontrar medios huerfanos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_posts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; post_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;attachment&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ID &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; IN&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    SELECT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    WHERE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; meta_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_thumbnail_id&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Recomendacion de plugin&lt;/strong&gt;: Media Cleaner de Jordy Meow&lt;/p&gt;
&lt;h2 id=&quot;parte-7-mejores-prácticas-de-compresion-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-mejores-prácticas-de-compresion-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Mejores prácticas de compresion de imágenes&lt;/h2&gt;
&lt;p&gt;La compresion no se trata solo del tamaño de archivo: se trata de encontrar el equilibrio entre calidad y rendimiento.&lt;/p&gt;
&lt;h3 id=&quot;entendiendo-la-calidad-de-compresion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-la-calidad-de-compresion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo la calidad de compresion&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Configuraciónes de calidad JPEG:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;90-100&lt;/strong&gt;: Casí sin compresion, archivos grandes (no recomendado)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;80-89&lt;/strong&gt;: Alta calidad, compresion moderada (bueno para fotos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;70-79&lt;/strong&gt;: Equilibrio calidad/tamaño (recomendado para la mayoria de imágenes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;60-69&lt;/strong&gt;: Perdida de calidad notable, archivos pequeños (usar con moderación)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debajo de 60&lt;/strong&gt;: Artefactos significativos (evitar)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Para WordPress, apunte a calidad 75-85&lt;/strong&gt; dependiendo del tipo de imagen.&lt;/p&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-compresion-automatizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-compresion-automatizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de compresion automatizada&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Comprimir automáticamente imagenes subidas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_handle_upload_prefilter&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($file) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($file[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;image/jpeg&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $file[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;image/png&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_image_editor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($file[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;file&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($image)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set_quality&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;82&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;save&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($file[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;file&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $file;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;herramientas-de-compresion-por-lotes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-compresion-por-lotes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de compresion por lotes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Linea de comandos (ImageMagick):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Comprimir todos los JPEG en un directorio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; magick&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -quality&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 82&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Convertir a AVIF&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;magick&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; input.jpg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -quality&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 80&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; output.avif&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Plugins de WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ShortPixel&lt;/strong&gt; - Optimización automática, soporta AVIF&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EWWW Image Optimizer&lt;/strong&gt; - Gratuito, código abierto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imagify&lt;/strong&gt; - Basado en la nube, nivel gratuito disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-8-organización-de-la-biblioteca-de-medios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-8-organización-de-la-biblioteca-de-medios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 8: Organización de la biblioteca de medios&lt;/h2&gt;
&lt;p&gt;Una biblioteca de medios desordenada ralentiza su sitio y dificulta la gestión de contenido.&lt;/p&gt;
&lt;h3 id=&quot;convenciones-de-nombres&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#convenciones-de-nombres&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Convenciones de nombres&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Malo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;IMG_1234.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;screenshot-2026-01-15.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;foto(1).jpg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Bueno:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hero-página-inicio-2026.avif&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;producto-laptop-dell-xps-15.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;equipo-miembro-juan-perez-retrato.jpg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;renombrado-automático-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#renombrado-automático-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Renombrado automático de archivos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Renombrar archivos subidos basandose en el título del post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_handle_upload_prefilter&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($file) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $pathinfo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; pathinfo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($file[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $extensión &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $pathinfo[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;extensión&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Obtener título del post si se sube a un post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $post_title &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $sanitized &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_file_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_title);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $file[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $sanitized &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $extensión;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $file;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-9-monitorización-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-9-monitorización-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 9: Monitorización del rendimiento&lt;/h2&gt;
&lt;p&gt;No puede optimizar lo que no mide.&lt;/p&gt;
&lt;h3 id=&quot;metricas-clave-a-rastrear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-clave-a-rastrear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas clave a rastrear&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tamaño total de la biblioteca de medios&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tamaño promedio de imagen&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conteo de medios no utilizados&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;herramientas-de-monitorización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-monitorización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de monitorización&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Google PageSpeed Insights:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mide Core Web Vitals&lt;/li&gt;
&lt;li&gt;Muestra oportunidades de optimización de imágenes&lt;/li&gt;
&lt;li&gt;Proporciona recomendaciónes específicas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;GTmetrix:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Graficos detallados de cascada&lt;/li&gt;
&lt;li&gt;Muestra tiempos de carga de imágenes&lt;/li&gt;
&lt;li&gt;Identifica oportunidades de optimización&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-10-técnicas-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-10-técnicas-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 10: Técnicas avanzadas&lt;/h2&gt;
&lt;h3 id=&quot;fallback-webp-para-navegadores-antiguos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fallback-webp-para-navegadores-antiguos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fallback WebP para navegadores antiguos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Servir WebP con fallback JPEG&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; serve_webp_with_fallback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($html, $post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $webp_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_attachment_image_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;full&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;format&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;webp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $jpeg_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_attachment_image_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;full&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($webp_url) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $html &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;picture&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &amp;#x3C;source srcset=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($webp_url) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot; type=&quot;image/webp&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &amp;#x3C;img src=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($jpeg_url) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot; alt=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_wp_attachment_image_alt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &amp;#x3C;/picture&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $html;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;serve_webp_with_fallback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;imágenes-responsivas-con-dirección-de-arte&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-responsivas-con-dirección-de-arte&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes responsivas con dirección de arte&lt;/h3&gt;
&lt;p&gt;A veces necesita diferentes recortes para diferentes tamaños de pantalla:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar tamanos de imagen personalizados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero-mobile&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero-tablet&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero-desktop&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1920&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1080&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-11-errores-comunes-y-como-evitarlos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-11-errores-comunes-y-como-evitarlos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 11: Errores comunes y como evitarlos&lt;/h2&gt;
&lt;h3 id=&quot;error-1-subir-imágenes-a-resolución-completa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-1-subir-imágenes-a-resolución-completa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 1: Subir imágenes a resolución completa&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Subir imágenes de 4000x3000px cuando solo necesita 1200x900px.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Redimensione antes de subir o use los tamaños de imagen de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;error-2-no-usar-imágenes-destacadas-correctamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-2-no-usar-imágenes-destacadas-correctamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 2: No usar imágenes destacadas correctamente&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Usar imágenes de &lt;code&gt;the_content()&lt;/code&gt; en lugar de imágenes destacadas para compartir en redes sociales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Siempre establezca imágenes destacadas y use Open Graph:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En header.php o via plugin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$og_image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_post_thumbnail_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;large&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;meta property=&quot;og:image&quot; content=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($og_image) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;error-3-ignorar-el-texto-alternativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-3-ignorar-el-texto-alternativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 3: Ignorar el texto alternativo&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Texto alt faltante o generico danina el SEO y la accesibilidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Siempre agregue texto alt descriptivo.&lt;/p&gt;
&lt;h2 id=&quot;resumen-lista-de-verificación-completa-de-optimización-de-medios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-lista-de-verificación-completa-de-optimización-de-medios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen: Lista de verificación completa de optimización de medios&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Desactivar páginas de adjuntos&lt;/strong&gt; (redireccion 301 o 404)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usar AVIF/WebP&lt;/strong&gt; para archivos 60% más pequeños&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carga diferida inteligente&lt;/strong&gt; (excluir imágenes hero)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aprovechar srcset&lt;/strong&gt; para imágenes responsivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usar un CDN&lt;/strong&gt; para optimización automática&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comprimir imágenes&lt;/strong&gt; (calidad 75-85)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organizar la biblioteca de medios&lt;/strong&gt; (convenciones de nombres, estructura de carpetas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorizar rendimiento&lt;/strong&gt; (PageSpeed Insights, GTmetrix)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agregar texto alt apropiado&lt;/strong&gt; (SEO y accesibilidad)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpiar medios huerfanos&lt;/strong&gt; (mantenimiento regular)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;objetivos-de-rendimiento-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#objetivos-de-rendimiento-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Objetivos de rendimiento para 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Largest Contentful Paint (LCP)&lt;/strong&gt;: &amp;#x3C; 2.5s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumulative Layout Shift (CLS)&lt;/strong&gt;: &amp;#x3C; 0.1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;First Input Delay (FID)&lt;/strong&gt;: &amp;#x3C; 100ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiempo de carga de imagen&lt;/strong&gt;: &amp;#x3C; 1s en conexión 3G&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peso total de página&lt;/strong&gt;: &amp;#x3C; 2MB (incluyendo imágenes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las imágenes deben cargar rápido, no primero. En 2026, con Core Web Vitals como factores de ranking, la optimización de imágenes no es opcional: es esencial para el SEO y la experiencia del usuario.&lt;/p&gt;</content:encoded><category>development</category><category>performance</category><category domain="tag">media</category><category domain="tag">images</category><category domain="tag">optimization</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/jak-usunac-automatyczny-link-do-dodawanych-zdjec.jpg" type="image/jpeg"/></item><item><title>Google AMP esta muerto en 2026? (Y que usar en su lugar)</title><link>https://wppoland.com/es/amp-accelerated-mobile-pages/</link><guid isPermaLink="true">https://wppoland.com/es/amp-accelerated-mobile-pages/</guid><description>Accelerated Mobile Pages (AMP) causo una revolucion en 2016, pero en 2026 esta practicamente obsoleto. Descubre por que Google elimino la insignia del rayo y como lograr Core Web Vitals perfectos sin frameworks propietarios.</description><pubDate>Sun, 23 Oct 2016 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;El rayo se ha apagado.&lt;/strong&gt;
En 2016, Google introdujo AMP (Accelerated Mobile Pages), un framework HTML simplificado disenado para cargar páginas web instantaneamente en dispositivos móviles. Durante unos años, fue obligatorio para los editores de noticias que querian aparecer en el carrusel de “Noticias destacadas”.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;la-ascension-y-caida-de-amp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-ascension-y-caida-de-amp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La ascension y caida de AMP&lt;/h2&gt;
&lt;h3 id=&quot;por-que-se-creo-amp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-se-creo-amp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que se creo AMP&lt;/h3&gt;
&lt;p&gt;En 2015-2016, la web móvil era un desastre. Las páginas tardaban 10+ segundos en cargar, los anuncios intrusivos arruinaban la experiencia del usuario y Google necesitaba una solución rápida. AMP fue esa solución: un subconjunto restrictivo de HTML que forzaba la simplicidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lo que AMP imponia:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sin JavaScript personalizado (solo componentes AMP aprobados)&lt;/li&gt;
&lt;li&gt;CSS inline limitado a 75KB&lt;/li&gt;
&lt;li&gt;Imágenes con carga diferida obligatoria&lt;/li&gt;
&lt;li&gt;Layout predefinido para evitar desplazamientos de contenido&lt;/li&gt;
&lt;li&gt;Cache de Google que servia las páginas desde sus propios servidores&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;por-que-amp-fallo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-amp-fallo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que AMP fallo&lt;/h3&gt;
&lt;p&gt;A pesar de su adopcion inicial masiva, AMP encontro resistencia significativa:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Monopolio de Google&lt;/strong&gt;: Las páginas se servian desde el cache de Google (google.com/amp/…), robando el tráfico y la identidad de los editores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitaciones técnicas&lt;/strong&gt;: Sin JavaScript personalizado significaba sin funcionalidades interactivas complejas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosistema fragmentado&lt;/strong&gt;: Mantener dos versiones de cada página (AMP + normal) duplicaba el trabajo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controversia anticompetitiva&lt;/strong&gt;: Documentos internos revelaron que AMP fue disenado para beneficiar el ecosistema publicitario de Google&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core Web Vitals&lt;/strong&gt;: Google finalmente creo una metrica neutral que no requeria un framework propietario&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;la-linea-temporal-de-la-muerte-de-amp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-linea-temporal-de-la-muerte-de-amp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La linea temporal de la muerte de AMP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2016&lt;/strong&gt;: Lanzamiento de AMP, adopcion masiva&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2018&lt;/strong&gt;: AMP Stories, AMP Email (expansion ambiciosa)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2020&lt;/strong&gt;: Google anuncia Core Web Vitals como factor de ranking&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2021&lt;/strong&gt;: Google elimina el requisito de AMP para Top Stories&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2022&lt;/strong&gt;: El tráfico AMP cae un 60% globalmente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024&lt;/strong&gt;: La mayoria de editores principales abandonan AMP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026&lt;/strong&gt;: AMP es efectivamente un proyecto zombie - mantenido pero no recomendado&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;core-web-vitals-la-alternativa-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#core-web-vitals-la-alternativa-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Core Web Vitals: La alternativa moderna&lt;/h2&gt;
&lt;p&gt;En lugar de un framework propietario, Google ahora mide el rendimiento real de tu sitio con tres metricas:&lt;/p&gt;
&lt;h3 id=&quot;lcp-largest-contentful-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lcp-largest-contentful-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;LCP (Largest Contentful Paint)&lt;/h3&gt;
&lt;p&gt;Mide cuanto tarda en renderizarse el elemento más grande visible. Objetivo: menos de 2.5 segundos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como optimizar LCP en WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precarga la imagen hero con &lt;code&gt;&amp;#x3C;link rel=&quot;preload&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Usa formatos modernos (AVIF, WebP)&lt;/li&gt;
&lt;li&gt;Implementa un CDN para servir assets globalmente&lt;/li&gt;
&lt;li&gt;Optimiza el TTFB (Time to First Byte) con cache de servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;inp-interaction-to-next-paint&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inp-interaction-to-next-paint&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;INP (Interaction to Next Paint)&lt;/h3&gt;
&lt;p&gt;Reemplazo de FID en marzo de 2024. Mide la latencia de las interacciones del usuario. Objetivo: menos de 200ms.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como optimizar INP en WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Minimiza el JavaScript del hilo principal&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;defer&lt;/code&gt; y &lt;code&gt;async&lt;/code&gt; para scripts no críticos&lt;/li&gt;
&lt;li&gt;Implementa Web Workers para tareas pesadas&lt;/li&gt;
&lt;li&gt;Elimina plugins innecesarios que bloquean la renderizacion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cls-cumulative-layout-shift&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cls-cumulative-layout-shift&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CLS (Cumulative Layout Shift)&lt;/h3&gt;
&lt;p&gt;Mide la estabilidad visual de la página. Objetivo: menos de 0.1.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como optimizar CLS en WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Define dimensiones explicitas para imágenes y videos&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;aspect-ratio&lt;/code&gt; en CSS para contenedores multimedia&lt;/li&gt;
&lt;li&gt;Precarga fuentes web con &lt;code&gt;font-display: swap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reserva espacio para anuncios y embeds dinámicos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;guia-de-migración-eliminando-amp-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-migración-eliminando-amp-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de migración: Eliminando AMP de WordPress&lt;/h2&gt;
&lt;p&gt;Si tu sitio todavia usa AMP, aquí esta el proceso seguro para eliminarlo:&lt;/p&gt;
&lt;h3 id=&quot;paso-1-verificar-el-tráfico-amp-actual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-verificar-el-tráfico-amp-actual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Verificar el tráfico AMP actual&lt;/h3&gt;
&lt;p&gt;Antes de eliminar nada, comprueba en Google Analytics cuanto tráfico recibe tu versión AMP. Si es significativo, planifica la migración cuidadosamente.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-optimizar-las-páginas-canonicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-optimizar-las-páginas-canonicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Optimizar las páginas canonicas&lt;/h3&gt;
&lt;p&gt;Asegurate de que tus páginas normales (no-AMP) cumplen con Core Web Vitals antes de eliminar AMP. Usa PageSpeed Insights para verificar.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-desactivar-el-plugin-amp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-desactivar-el-plugin-amp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Desactivar el plugin AMP&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Desactiva el plugin desde el panel de administración&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Plugins &gt; Plugins instalados &gt; AMP &gt; Desactivar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O mediante WP-CLI:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// wp plugin deactivate amp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-4-redirigir-urls-amp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-redirigir-urls-amp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Redirigir URLs AMP&lt;/h3&gt;
&lt;p&gt;Anade redirecciones 301 de las URLs AMP a las canonicas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# En .htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.+)/amp/?$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /$1/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-5-actualizar-google-search-console&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-actualizar-google-search-console&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Actualizar Google Search Console&lt;/h3&gt;
&lt;p&gt;Solicita una nueva indexacion de las páginas afectadas y monitoriza los errores de rastreo durante las siguientes semanas.&lt;/p&gt;
&lt;h3 id=&quot;paso-6-monitorizar-el-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-6-monitorizar-el-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 6: Monitorizar el rendimiento&lt;/h3&gt;
&lt;p&gt;Vigila las metricas de Core Web Vitals y el tráfico organico durante 30 dias despues de la migración para detectar cualquier problema.&lt;/p&gt;
&lt;h2 id=&quot;estrategia-de-rendimiento-móvil-en-2026-sin-amp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-rendimiento-móvil-en-2026-sin-amp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de rendimiento móvil en 2026 sin AMP&lt;/h2&gt;
&lt;h3 id=&quot;arquitectura-de-rendimiento-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#arquitectura-de-rendimiento-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Arquitectura de rendimiento moderna&lt;/h3&gt;
&lt;p&gt;En lugar de AMP, implementa estas prácticas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hosting de calidad&lt;/strong&gt;: Servidores con TTFB inferior a 200ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN global&lt;/strong&gt;: Cloudflare, Fastly o similar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache de página&lt;/strong&gt;: Nginx FastCGI Cache o plugin de cache&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache de objetos&lt;/strong&gt;: Redis o Memcached para WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imágenes optimizadas&lt;/strong&gt;: AVIF con fallback WebP, responsive srcset&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS crítico inline&lt;/strong&gt;: Solo los estilos above-the-fold en el HTML&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript diferido&lt;/strong&gt;: Carga async/defer para todo el JS no crítico&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;comparación-amp-vs-core-web-vitals-nativos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-amp-vs-core-web-vitals-nativos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación: AMP vs Core Web Vitals nativos&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Aspecto&lt;/th&gt;&lt;th&gt;AMP&lt;/th&gt;&lt;th&gt;Core Web Vitals nativos&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Control creativo&lt;/td&gt;&lt;td&gt;Limitado&lt;/td&gt;&lt;td&gt;Total&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JavaScript personalizado&lt;/td&gt;&lt;td&gt;Prohibido&lt;/td&gt;&lt;td&gt;Permitido (optimizado)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Propiedad del contenido&lt;/td&gt;&lt;td&gt;Cache de Google&lt;/td&gt;&lt;td&gt;Tu servidor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mantenimiento&lt;/td&gt;&lt;td&gt;Doble versión&lt;/td&gt;&lt;td&gt;Versión única&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Rendimiento móvil&lt;/td&gt;&lt;td&gt;Excelente&lt;/td&gt;&lt;td&gt;Excelente (con optimización)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Compatibilidad con plugins&lt;/td&gt;&lt;td&gt;Muy limitada&lt;/td&gt;&lt;td&gt;Completa&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Experiencia de usuario&lt;/td&gt;&lt;td&gt;Restringida&lt;/td&gt;&lt;td&gt;Personalizable&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;plugins-recomendados-para-rendimiento-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-recomendados-para-rendimiento-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins recomendados para rendimiento en 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP Rocket&lt;/strong&gt;: Cache de página, CSS crítico, defer JS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfmatters&lt;/strong&gt;: Desactivar scripts innecesarios por página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ShortPixel/Imagify&lt;/strong&gt;: Conversión automática a AVIF/WebP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FlyingPress&lt;/strong&gt;: Alternativa ligera a WP Rocket&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;el-futuro-que-viene-despues-de-amp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-que-viene-despues-de-amp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro: Que viene despues de AMP&lt;/h2&gt;
&lt;h3 id=&quot;speculation-rules-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#speculation-rules-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Speculation Rules API&lt;/h3&gt;
&lt;p&gt;Chrome ahora soporta la API de Speculation Rules que permite precargar páginas antes de que el usuario haga clic. Esto logra tiempos de carga “instantaneos” sin las restricciones de AMP.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;speculationrules&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &quot;prerender&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    {&quot;where&quot;: {&quot;href_matches&quot;: &quot;/*&quot;}, &quot;eagerness&quot;: &quot;moderate&quot;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;view-transitions-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#view-transitions-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;View Transitions API&lt;/h3&gt;
&lt;p&gt;Las transiciones de página nativas del navegador proporcionan la sensacion de “app nativa” que AMP prometia, pero sin las limitaciones.&lt;/p&gt;
&lt;h3 id=&quot;progressive-web-apps-pwa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#progressive-web-apps-pwa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Progressive Web Apps (PWA)&lt;/h3&gt;
&lt;p&gt;Las PWAs ofrecen funcionalidad offline, notificaciones push y experiencia de app sin necesidad de frameworks restrictivos.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;AMP cumplio su propósito en un momento en que la web móvil estaba rota. Pero en 2026, con Core Web Vitals, CDNs modernos, formatos de imagen avanzados y APIs del navegador como Speculation Rules, simplemente no hay razon para usar un framework restrictivo que limita tu creatividad y cede el control de tu contenido a Google.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plan de accion:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Audita tu rendimiento actual con PageSpeed Insights&lt;/li&gt;
&lt;li&gt;Optimiza LCP, INP y CLS en tus páginas canonicas&lt;/li&gt;
&lt;li&gt;Desactiva y elimina AMP si todavia lo usas&lt;/li&gt;
&lt;li&gt;Implementa cache, CDN e imágenes modernas&lt;/li&gt;
&lt;li&gt;Monitoriza Core Web Vitals mensualmente&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La velocidad ya no requiere sacrificar la flexibilidad. Construye sitios rápidos &lt;em&gt;y&lt;/em&gt; ricos en funcionalidades.&lt;/p&gt;</content:encoded><category>seo</category><category>performance</category><category domain="tag">amp</category><category domain="tag">core web vitals</category><category domain="tag">google</category><category domain="tag">mobile optimization</category><enclosure url="https://wppoland.com/images/og/ampproject.jpg" type="image/jpeg"/></item><item><title>¿Está muerto Google AMP en 2026? (Y qué deberías usar en su lugar)</title><link>https://wppoland.com/es/esta-muerto-google-amp-en-2026-que-usar-en-su-lugar/</link><guid isPermaLink="true">https://wppoland.com/es/esta-muerto-google-amp-en-2026-que-usar-en-su-lugar/</guid><description>Las Accelerated Mobile Pages (AMP) crearon una revolución en 2016, pero hoy están obsoletas. Aprende por qué Google eliminó el rayo y cómo lograr Core Web Vitals perfectos.</description><pubDate>Thu, 13 Oct 2016 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;El rayo se ha desvanecido.&lt;/strong&gt;
En 2016, Google lanzó AMP.
En 2026, el requisito para “Top Stories” ha desaparecido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Está muerto AMP? Sí.&lt;/strong&gt;
¿Deberías usarlo en tu sitio WordPress? &lt;strong&gt;No.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En este análisis de 1500 palabras explicamos el auge y la caída de AMP.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-por-qué-amp-fracasó&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-por-qué-amp-fracasó&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: por qué AMP fracasó&lt;/h2&gt;
&lt;p&gt;El objetivo era la velocidad. La solución fue prohibir JavaScript.&lt;/p&gt;
&lt;h3 id=&quot;el-compromiso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-compromiso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El compromiso&lt;/h3&gt;
&lt;p&gt;El coste fue alto:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Dilución de marca&lt;/strong&gt;: &lt;code&gt;google.com/amp/tudominio.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asesino de conversiones&lt;/strong&gt;: Sin formularios complejos ni flujos de pago personalizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pesadilla de mantenimiento&lt;/strong&gt;: Dos versiones de cada plantilla.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;el-cambio-a-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-cambio-a-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El cambio a Core Web Vitals&lt;/h3&gt;
&lt;p&gt;En 2021, Google introdujo &lt;strong&gt;Core Web Vitals&lt;/strong&gt; (CWV).
El mensaje fue claro: &lt;em&gt;“No nos importa SI usas AMP. Solo nos importa que tu página sea RÁPIDA.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Esta fue la sentencia de muerte de AMP. Google desvinculó la velocidad del formato. Una página rápida sin AMP ahora clasifica igual que una página AMP rápida. El carrusel de Top Stories, antes exclusivo de AMP, se abrió a todas las páginas que cumplían los umbrales de CWV.&lt;/p&gt;
&lt;h2 id=&quot;parte-2-cómo-eliminar-amp-de-forma-segura-de-amping&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-cómo-eliminar-amp-de-forma-segura-de-amping&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: cómo eliminar AMP de forma segura (de-AMPing)&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-la-estrategia-de-redirección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-la-estrategia-de-redirección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: la estrategia de redirección&lt;/h3&gt;
&lt;p&gt;Las URLs de AMP como &lt;code&gt;/nombre-post/amp/&lt;/code&gt; deben redirigirse a la canónica (redirección 301). No hacerlo provoca que Google encuentre URLs muertas, lo que genera errores 404 y puede afectar temporalmente al ranking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Regla Nginx:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rewrite&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/(.*)/amp/?$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /$1/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;permanent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Regla Apache .htaccess:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.+)/amp/?$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /$1/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-2-válida-las-etiquetas-canónicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-válida-las-etiquetas-canónicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: válida las etiquetas canónicas&lt;/h3&gt;
&lt;p&gt;Antes de eliminar AMP, verifica que todas las páginas originales se apunten a sí mismás como canónicas. Abre Google Search Console y comprueba si hay problemas de cobertura relacionados con canónicas.&lt;/p&gt;
&lt;h3 id=&quot;paso-3-desactiva-y-monitoriza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-desactiva-y-monitoriza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: desactiva y monitoriza&lt;/h3&gt;
&lt;p&gt;Una vez que las redirecciones estén activas y las canónicas verificadas, desactiva el plugin de AMP. Monitoriza Search Console durante 30 días para detectar cualquier caída inesperada en impresiones o clics.&lt;/p&gt;
&lt;h2 id=&quot;parte-3-la-pila-de-rendimiento-moderna-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-la-pila-de-rendimiento-moderna-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: la pila de rendimiento moderna (2026)&lt;/h2&gt;
&lt;p&gt;En lugar de AMP, céntrate en los tres Core Web Vitals que Google mide realmente.&lt;/p&gt;
&lt;h3 id=&quot;1-optimización-de-imágenes-avif&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-optimización-de-imágenes-avif&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Optimización de imágenes (AVIF)&lt;/h3&gt;
&lt;p&gt;Los formatos de imagen modernos como AVIF ofrecen hasta un 50% menos de tamaño de archivo que WebP con calidad visual equivalente. Todos los sitios WordPress en 2026 deberían servir AVIF con respaldo WebP y JPEG.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen.avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Descripción&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-interaction-to-next-paint-inp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-interaction-to-next-paint-inp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Interaction to Next Paint (INP)&lt;/h3&gt;
&lt;p&gt;INP reemplazó a First Input Delay (FID) como Core Web Vital en 2024. Mide la capacidad de respuesta de todas las interacciones del usuario en una página. Aplaza JavaScript no crítico, divide las tareas largas y evita bloquear el hilo principal durante la interacción del usuario.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Aplazar scripts no críticos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DOMContentLoaded&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // Cargar analytics, widgets de chat, etc. solo después de que el contenido principal esté listo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  setTimeout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    loadNonCriticalScripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-caché-y-cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-caché-y-cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Caché y CDN&lt;/h3&gt;
&lt;p&gt;Usa Cloudflare Edge Cache para entregar HTML desde el borde de la red. Esto logra un TTFB inferior a 100ms globalmente sin ninguna de las restricciones de AMP. Combínalo con caché de página completa a nivel de servidor.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;El experimento de AMP ha terminado.
La web abierta ha ganado.
Desinstala el plugin.&lt;/p&gt;
&lt;p&gt;Céntrate en su lugar en lograr excelentes puntuaciones de Core Web Vitals mediante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servir imágenes AVIF&lt;/li&gt;
&lt;li&gt;Aplazar JavaScript no crítico&lt;/li&gt;
&lt;li&gt;Usar un CDN con caché en el borde&lt;/li&gt;
&lt;li&gt;Optimizar el tiempo de respuesta del servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un sitio WordPress bien optimizado sin AMP en 2026 supera en rendimiento y experiencia de usuario a cualquier página AMP.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/optimizar-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category>rendimiento</category><category domain="tag">amp</category><category domain="tag">core web vitals</category><category domain="tag">google</category><category domain="tag">optimización-móvil</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Optimización de medios WordPress con WebP y AVIF</title><link>https://wppoland.com/es/mastering-wordpress-media-optimization/</link><guid isPermaLink="true">https://wppoland.com/es/mastering-wordpress-media-optimization/</guid><description>Deje de depender únicamente de plugins. Una inmersion técnica profunda en el manejo nativo de imágenes de WordPress, regeneracion de miniaturas y uso de almacenamiento de objetos para medios.</description><pubDate>Mon, 15 Aug 2016 18:44:05 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategia-avanzada-de-optimización-de-medios-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-avanzada-de-optimización-de-medios-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia avanzada de optimización de medios en WordPress&lt;/h2&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Las imágenes representan tipicamente entre el 50% y el 70% del peso total de una página web. Optimizar como WordPress maneja los medios no es solo una mejora de rendimiento: es la palanca más grande que tiene para mejorar los Core Web Vitals y la experiencia del usuario.&lt;/p&gt;
&lt;p&gt;En esta guía, exploramos las técnicas nativas de WordPress para optimización de medios, desde filtros PHP hasta almacenamiento de objetos empresarial, sin depender de plugins pesados.&lt;/p&gt;
&lt;h3 id=&quot;soporte-nativo-de-formatos-modernos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soporte-nativo-de-formatos-modernos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soporte nativo de formatos modernos&lt;/h3&gt;
&lt;p&gt;WordPress ha evolucionado significativamente en su soporte de formatos de imagen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WordPress 5.8+&lt;/strong&gt;: Soporte nativo para subida y servicio de imágenes WebP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress 6.5+&lt;/strong&gt;: Soporte nativo para AVIF, ofreciendo compresion aun mejor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress 6.7+&lt;/strong&gt;: Generación automática de formatos multiples desde una sola subida&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Requisito del servidor:&lt;/strong&gt; Su instalación PHP debe tener las extensiónes GD o Imagick compiladas con soporte para estos formatos. Verifique en Herramientas &gt; Salud del sitio.&lt;/p&gt;
&lt;h3 id=&quot;control-de-calidad-de-compresion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#control-de-calidad-de-compresion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Control de calidad de compresion&lt;/h3&gt;
&lt;p&gt;WordPress comprime imágenes JPEG a una calidad del 82% por defecto. Para muchos casos de uso, especialmente miniaturas, esto es excesivo.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Reducir calidad JPEG a 75% para miniaturas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jpeg_quality&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($quality) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Control más granular por contexto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_editor_set_quality&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($quality, $mime_type) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($mime_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;image/jpeg&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($mime_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;image/webp&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 80&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $quality;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ahorro tipico:&lt;/strong&gt; Reducir la calidad JPEG de 82 a 75 ahorra un 15-25% de tamaño de archivo con diferencia visual minima.&lt;/p&gt;
&lt;h3 id=&quot;gestión-de-tamaños-de-imagen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-tamaños-de-imagen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de tamaños de imagen&lt;/h3&gt;
&lt;p&gt;Cada imagen subida a WordPress puede generar más de 10 variaciones de tamaño. La mayoria de los temas solo usan 3-4 de estos tamaños, desperdiciando espacio en disco y tiempo de procesamiento.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar tamanos de imagen no utilizados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;intermediate_image_sizes_advanced&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sizes) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar tamanos que su tema no usa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sizes[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;medium_large&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 768px - raramente usado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sizes[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;1536x1536&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);     &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Doble de large&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sizes[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;2048x2048&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);     &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Doble de 1536&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $sizes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar tamanos personalizados que su tema realmente necesita&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1920&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;card&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;avatar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;150&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;150&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;lazy-loading-inteligente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lazy-loading-inteligente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lazy loading inteligente&lt;/h3&gt;
&lt;p&gt;WordPress agrega automáticamente &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; a todas las imágenes desde la versión 5.5. Sin embargo, esto puede ser contraproducente para la imagen hero (LCP):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Desactivar lazy loading para la primera imagen (probable LCP)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_img_tag_add_loading_attr&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($value, $image, $context) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Si es la primera imagen en el contenido, cargar eager&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    static&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($first_image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $context &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $first_image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;eager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar fetchpriority a la imagen hero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_get_attachment_image_attributes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr, $attachment) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loading&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;eager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attr[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fetchpriority&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;high&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attr;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;responsive-images-con-srcset&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#responsive-images-con-srcset&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Responsive images con srcset&lt;/h3&gt;
&lt;p&gt;WordPress genera automáticamente el atributo &lt;code&gt;srcset&lt;/code&gt; para imágenes, permitiendo que el navegador elija el tamaño optimo. Asegurese de que su tema aprovecha esto correctamente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Personalizar los tamanos disponibles en srcset&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_calculate_image_srcset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sources, $size_array, $image_src) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Filtrar fuentes que sean demasiado pequenas o demasiado grandes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($sources &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $source) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $width &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sources[$width]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $sources;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;almacenamiento-de-objetos-para-sitios-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#almacenamiento-de-objetos-para-sitios-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Almacenamiento de objetos para sitios a escala&lt;/h3&gt;
&lt;p&gt;Cuando la biblioteca de medios supera los 10GB, es hora de considerar almacenamiento de objetos externo (Amazon S3, Google Cloud Storage, DigitalOcean Spaces):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escalado sin estado&lt;/strong&gt;: Los servidores web no almacenan archivos multimedia, facilitando el escalado horizontal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN integrado&lt;/strong&gt;: La mayoria de servicios de almacenamiento de objetos incluyen distribucion CDN&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respaldos automáticos&lt;/strong&gt;: Redundancia incorporada protege contra perdida de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Costos predecibles&lt;/strong&gt;: Pago por almacenamiento y transferencia usados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Plugins recomendados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP Offload Media&lt;/strong&gt; (Delicious Brains): La opción más robusta y probada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Media Cloud&lt;/strong&gt; (Interfacelab): Alternativa gratuita con buenas funcionalidades&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Configuración en wp-config.php para S3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AS3CF_SETTINGS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;serialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;provider&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;aws&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;access-key-id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; getenv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AWS_ACCESS_KEY_ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;secret-access-key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; getenv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AWS_SECRET_ACCESS_KEY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;regeneracion-de-miniaturas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#regeneracion-de-miniaturas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Regeneracion de miniaturas&lt;/h3&gt;
&lt;p&gt;Despues de cambiar tamaños de imagen o calidad de compresion, necesita regenerar las miniaturas existentes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Via WP-CLI (método recomendado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; regenerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --yes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Solo imagenes específicas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; regenerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --yes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --image_size=thumbnail&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Solo imagenes sin miniaturas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; regenerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --only-missing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --yes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;auditoria-de-la-biblioteca-de-medios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-de-la-biblioteca-de-medios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria de la biblioteca de medios&lt;/h3&gt;
&lt;p&gt;Periodicamente, audite su biblioteca de medios para identificar problemas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Encontrar imagenes huerfanas (en disco pero no en BD)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/wp-content/uploads/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver tamaño total de la biblioteca&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;du&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -sh&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/uploads/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Encontrar archivos grandes (&gt;1MB)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/uploads/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +1M&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;*.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;flujo-de-trabajo-de-optimización-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización completo&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Antes de subir&lt;/strong&gt;: Redimensione imágenes a un maximo de 2400px de ancho en su editor de imágenes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Durante la subida&lt;/strong&gt;: WordPress comprime y genera tamaños automáticamente con sus filtros personalizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;En la salida&lt;/strong&gt;: Los atributos &lt;code&gt;srcset&lt;/code&gt;, &lt;code&gt;loading&lt;/code&gt; y &lt;code&gt;fetchpriority&lt;/code&gt; aseguran carga optima&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo&lt;/strong&gt;: Verifique Core Web Vitals regularmente para detectar regresiones&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;metricas-de-rendimiento-esperadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-rendimiento-esperadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de rendimiento esperadas&lt;/h2&gt;
&lt;p&gt;Con optimización completa de medios, espere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reduccion del 40-60%&lt;/strong&gt; en tamaño de página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejora del 20-30%&lt;/strong&gt; en LCP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro del 30-50%&lt;/strong&gt; en espacio de disco&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduccion del 25%&lt;/strong&gt; en costos de ancho de banda&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La optimización de medios es la mejora de rendimiento con mejor retorno de inversión para la mayoria de sitios WordPress. Implemente estas técnicas y vera resultados inmediatos en sus &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;Core Web Vitals&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y el &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>performance</category><category>media</category><category domain="tag">webp</category><category domain="tag">avif</category><category domain="tag">imágenes</category><category domain="tag">optimización-carga</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Como bloquear el tráfico de bots en WordPress Analytics</title><link>https://wppoland.com/es/how-to-block-bots-wordpress-digital-ocean-google-analytics/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-block-bots-wordpress-digital-ocean-google-analytics/</guid><description>Aprenda a reducir el tráfico falso de bots en las analíticas de WordPress con reglas de servidor, revision de logs y prácticas de filtrado más seguras.</description><pubDate>Mon, 15 Aug 2016 12:38:33 GMT</pubDate><content:encoded>&lt;p&gt;Recientemente, Google Analytics no filtra todo el tráfico de bots del tráfico organico que vemos en el panel. Podemos remediar esto agregando una lista de IPs de bots al archivo .htaccess en nuestra carpeta principal que no deberian tener acceso a nuestro servidor.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.
Si desea la versión práctica primero, el objetivo no es bloquear cada bot. Es eliminar el tráfico claramente malicioso que contamina las analíticas sin bloquear accidentalmente rastreadores o usuarios legitimos.&lt;/p&gt;
&lt;h2 id=&quot;el-problema-con-el-tráfico-de-bots&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-con-el-tráfico-de-bots&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema con el tráfico de bots&lt;/h2&gt;
&lt;p&gt;El tráfico de bots puede distorsionar significativamente sus datos de Google Analytics, dificultando la comprension del comportamiento real de sus usuarios. Las fuentes comunes de tráfico de bots incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proveedores de hosting en la nube&lt;/strong&gt; (Digital Ocean, AWS, etc.) - los bots a menudo se ejecutan desde estos servidores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrapers de SEO&lt;/strong&gt; - herramientas que rastrean su sitio para recopilar datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bots de spam&lt;/strong&gt; - que intentan enviar formularios o dejar comentarios spam&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herramientas de análisis de competencia&lt;/strong&gt; - que revisan su contenido y palabras clave&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;por-que-el-tráfico-de-bots-afecta-sus-decisiones-de-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-tráfico-de-bots-afecta-sus-decisiones-de-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el tráfico de bots afecta sus decisiones de negocio&lt;/h2&gt;
&lt;p&gt;Cuando el tráfico de bots se mezcla con el tráfico real en Google Analytics, las metricas que utiliza para tomar decisiones empresariales se vuelven poco confiables. Esto tiene consecuencias directas en varias areas criticas de su estrategia digital.&lt;/p&gt;
&lt;h3 id=&quot;impacto-en-la-tasa-de-rebote&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-la-tasa-de-rebote&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en la tasa de rebote&lt;/h3&gt;
&lt;p&gt;Los bots tipicamente visitan una sola página y se van inmediatamente, lo que infla artificialmente su tasa de rebote. Si su tasa de rebote real es del 45% pero los bots la elevan al 72%, podria concluir erroneamente que su contenido no conecta con la audiencia. Esto lleva a cambios innecesarios en el diseño o contenido del sitio que no resuelven ningun problema real.&lt;/p&gt;
&lt;h3 id=&quot;distorsion-de-las-metricas-de-conversión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#distorsion-de-las-metricas-de-conversión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Distorsion de las metricas de conversión&lt;/h3&gt;
&lt;p&gt;Las sesiones de bots nunca convierten. Si tiene 10,000 sesiones mensuales y 2,000 son bots, su tasa de conversión aparente es un 20% más baja de lo que realmente es. Esto puede llevar a decisiones equivocadas sobre la efectividad de sus campanas publicitarias y páginas de destino.&lt;/p&gt;
&lt;h3 id=&quot;datos-geograficos-contaminados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#datos-geograficos-contaminados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Datos geograficos contaminados&lt;/h3&gt;
&lt;p&gt;Los bots operan desde centros de datos distribuidos globalmente. Esto puede hacer que parezca que tiene tráfico significativo de paises donde realmente no tiene audiencia, distorsionando sus estrategias de segmentacion geografica y decisiones sobre contenido localizado.&lt;/p&gt;
&lt;h2 id=&quot;solución-bloqueo-de-bots-en-htaccess&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-bloqueo-de-bots-en-htaccess&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución: bloqueo de bots en .htaccess&lt;/h2&gt;
&lt;p&gt;Agregue lo siguiente a su archivo &lt;code&gt;.htaccess&lt;/code&gt; para bloquear IPs de bots conocidos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Bloquear redes de bots conocidos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 78&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;139&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;228&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; amazonaws.com grapeshot.co.uk lipperhey.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Rangos de Digital Ocean&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 104&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;236&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 159&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;203&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 165&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;227&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Rangos de Amazon AWS (si los bots provienen de ahi)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 52&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;14&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 52&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;14&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 54&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;entendiendo-las-reglas-de-denegacion-de-htaccess&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-las-reglas-de-denegacion-de-htaccess&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo las reglas de denegacion de .htaccess&lt;/h2&gt;
&lt;p&gt;Las reglas &lt;code&gt;deny from&lt;/code&gt; en Apache funcionan a nivel de servidor, lo que significa que el tráfico se bloquea antes de que WordPress siquiera comience a cargar. Esto es significativamente más eficiente que cualquier solución basada en plugins, ya que no consume recursos de PHP ni genera consultas a la base de datos.&lt;/p&gt;
&lt;h3 id=&quot;como-funcionan-los-rangos-cidr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funcionan-los-rangos-cidr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funcionan los rangos CIDR&lt;/h3&gt;
&lt;p&gt;Los rangos de IP como &lt;code&gt;104.236.0.0/16&lt;/code&gt; utilizan notacion CIDR (Classless Inter-Domain Routing). El número despues de la barra indica cuantos bits del prefijo de red son fijos. Un &lt;code&gt;/16&lt;/code&gt; cubre 65,536 direcciones IP, mientras que un &lt;code&gt;/14&lt;/code&gt; cubre 262,144 direcciones. Es importante entender esto para no bloquear rangos demasiado amplios o demasiado estrechos.&lt;/p&gt;
&lt;h3 id=&quot;verificación-de-fuentes-antes-de-bloquear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#verificación-de-fuentes-antes-de-bloquear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Verificación de fuentes antes de bloquear&lt;/h3&gt;
&lt;p&gt;Antes de agregar cualquier regla de denegacion, verifique siempre la fuente del tráfico sospechoso. Use herramientas como &lt;code&gt;whois&lt;/code&gt; para confirmar que una IP pertenece realmente a un proveedor de nube y no a un ISP residencial. Un bloqueo equivocado podria eliminar tráfico real de clientes potenciales.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar propietario de una IP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;whois&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 104.236.52.100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;orgname\|netname&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;prefiera-el-bloqueo-a-nivel-de-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prefiera-el-bloqueo-a-nivel-de-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prefiera el bloqueo a nivel de servidor&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;.htaccess&lt;/code&gt;, su servidor web o una capa de firewall para bloquear bots confirmados. Para muchos sitios, el filtrado en el edge a través de un CDN o firewall del hosting es más seguro que mantener largas listas de denegacion manuales dentro de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;cloudflare-como-capa-de-protección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-como-capa-de-protección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cloudflare como capa de protección&lt;/h3&gt;
&lt;p&gt;Cloudflare ofrece varias ventajas sobre el bloqueo manual mediante &lt;code&gt;.htaccess&lt;/code&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bot Fight Mode&lt;/strong&gt;: Identifica y desafia automáticamente el tráfico de bots sospechosos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reglas de firewall&lt;/strong&gt;: Permite crear reglas granulares basadas en pais, ASN, User-Agent y mas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de amenazas&lt;/strong&gt;: Proporciona información detallada sobre el tráfico bloqueado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualización automática&lt;/strong&gt;: La base de datos de amenazas se actualiza continuamente&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para sitios en WordPress que reciben tráfico internacional, Cloudflare es frecuentemente la mejor primera linea de defensa. Su plan gratuito ya incluye protección básica contra bots que puede marcar una diferencia significativa.&lt;/p&gt;
&lt;h3 id=&quot;firewalls-a-nivel-de-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#firewalls-a-nivel-de-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Firewalls a nivel de hosting&lt;/h3&gt;
&lt;p&gt;Los proveedores de hosting modernos como Kinsta, WP Engine y SiteGround ofrecen firewalls integrados que filtran el tráfico malicioso antes de que llegue a su servidor. Estas soluciones son especialmente utiles porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No requieren configuración manual de &lt;code&gt;.htaccess&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Se actualizan automáticamente con nuevas amenazas&lt;/li&gt;
&lt;li&gt;Funcionan en conjunto con el cache del servidor para maxima eficiencia&lt;/li&gt;
&lt;li&gt;Proporcionan logs detallados del tráfico bloqueado&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;alternativas-al-bloqueo-por-ip&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativas-al-bloqueo-por-ip&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativas al bloqueo por IP&lt;/h2&gt;
&lt;p&gt;El bloqueo por IP tiene limitaciones inherentes. Los bots sofisticados rotan sus direcciones IP frecuentemente, haciendo que las listas estaticas queden obsoletas rápidamente. Considere estas alternativas complementarias.&lt;/p&gt;
&lt;h3 id=&quot;bloqueo-por-user-agent&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloqueo-por-user-agent&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloqueo por User-Agent&lt;/h3&gt;
&lt;p&gt;Muchos bots usan cadenas de User-Agent identificables. Puede bloquearlos en &lt;code&gt;.htaccess&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Bloquear bots por User-Agent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_USER_AGENT}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; (SemrushBot|AhrefsBot|MJ12bot|DotBot)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; .*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [F,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tenga cuidado de no bloquear bots de motores de búsqueda legitimos. Siempre verifique que un User-Agent pertenece realmente a un bot malicioso antes de bloquearlo.&lt;/p&gt;
&lt;h3 id=&quot;rate-limiting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rate-limiting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rate Limiting&lt;/h3&gt;
&lt;p&gt;En lugar de bloquear IPs específicas, limite la cantidad de solicitudes por minuto desde cualquier IP individual. Esto afecta a los bots que hacen muchas solicitudes rápidamente sin bloquear usuarios normales:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ejemplo con mod_evasive de Apache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_evasive20.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    DOSHashTableSize &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3097&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    DOSPageCount &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    DOSSiteCount &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    DOSPageInterval &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    DOSSiteInterval &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    DOSBlockingPeriod &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;60&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;javascript-challenge&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#javascript-challenge&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;JavaScript Challenge&lt;/h3&gt;
&lt;p&gt;Los bots simples no ejecutan JavaScript. Puede implementar un desafio de JavaScript que los usuarios reales completan automáticamente pero que detiene a los bots básicos. Cloudflare y servicios similares ofrecen esta funcionalidad como parte de sus herramientas de protección.&lt;/p&gt;
&lt;h2 id=&quot;monitorización-de-resultados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitorización-de-resultados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitorización de resultados&lt;/h2&gt;
&lt;p&gt;Despues de implementar el bloqueo de bots:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Revise su Google Analytics para verificar la reduccion del tráfico de bots&lt;/li&gt;
&lt;li&gt;Monitoree los logs del servidor en busca de solicitudes bloqueadas&lt;/li&gt;
&lt;li&gt;Ajuste las reglas según sea necesario para nuevas fuentes de bots&lt;/li&gt;
&lt;li&gt;Compare las metricas antes y despues para cuantificar la mejora&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;metricas-clave-a-monitorear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-clave-a-monitorear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas clave a monitorear&lt;/h3&gt;
&lt;p&gt;Establezca un periodo de referencia de al menos dos semanas antes de implementar cambios. Luego compare las siguientes metricas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tasa de rebote&lt;/strong&gt;: Deberia disminuir si los bots estaban inflando esta cifra&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duracion media de sesion&lt;/strong&gt;: Deberia aumentar al eliminar sesiones de bots de 0 segundos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas por sesion&lt;/strong&gt;: Deberia reflejar mejor el comportamiento real de los usuarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico por ubicacion geografica&lt;/strong&gt;: Los picos artificiales de paises con centros de datos deberian reducirse&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-de-monitorización-recomendadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-monitorización-recomendadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de monitorización recomendadas&lt;/h3&gt;
&lt;p&gt;Además de Google Analytics, utilice estas herramientas para una vision más completa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;: Revise los informes de rastreo para ver que bots acceden a su sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server Access Logs&lt;/strong&gt;: Analice los logs de acceso de Apache o Nginx directamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wordfence&lt;/strong&gt;: Ofrece estadísticas detalladas de tráfico y bloqueo en tiempo real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sucuri&lt;/strong&gt;: Proporciona monitorización de seguridad y análisis de tráfico malicioso&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;configuración-avanzada-bloqueo-geografico-selectivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-avanzada-bloqueo-geografico-selectivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración avanzada: bloqueo geografico selectivo&lt;/h2&gt;
&lt;p&gt;Si su negocio opera exclusivamente en ciertos mercados, puede considerar bloquear tráfico de paises donde no tiene audiencia real. Sin embargo, esto debe hacerse con extrema precaucion.&lt;/p&gt;
&lt;h3 id=&quot;cuando-tiene-sentido-el-bloqueo-geografico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-tiene-sentido-el-bloqueo-geografico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando tiene sentido el bloqueo geografico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Su sitio vende productos o servicios solo en una region específica&lt;/li&gt;
&lt;li&gt;Recibe ataques persistentes desde ubicaciones geograficas concretas&lt;/li&gt;
&lt;li&gt;Los costos de ancho de banda son una preocupacion y el tráfico no deseado es significativo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cuando-evitar-el-bloqueo-geografico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-evitar-el-bloqueo-geografico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando evitar el bloqueo geografico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Su contenido tiene audiencia internacional potencial&lt;/li&gt;
&lt;li&gt;Utiliza servicios de terceros que operan desde diferentes paises&lt;/li&gt;
&lt;li&gt;Tiene empleados o colaboradores remotos en diversas ubicaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;impacto-en-el-rendimiento-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-el-rendimiento-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en el rendimiento del servidor&lt;/h2&gt;
&lt;p&gt;El bloqueo de bots no solo mejora sus analíticas, sino que también reduce la carga del servidor. Un sitio WordPress tipico que recibe 50,000 visitas mensuales de bots esta procesando solicitudes innecesarias que consumen CPU, memoria RAM y ancho de banda.&lt;/p&gt;
&lt;h3 id=&quot;calculo-del-ahorro-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#calculo-del-ahorro-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Calculo del ahorro de recursos&lt;/h3&gt;
&lt;p&gt;Cada solicitud de bot que llega a WordPress activa la carga completa del CMS: conexión a la base de datos, ejecucion de PHP, consultas de plugins y generación de HTML. Bloquear estas solicitudes a nivel de &lt;code&gt;.htaccess&lt;/code&gt; o firewall elimina toda esta carga de procesamiento.&lt;/p&gt;
&lt;p&gt;Para un sitio con 1,000 solicitudes de bots diarias, esto puede significar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reduccion de consultas a la base de datos&lt;/strong&gt;: 5,000-10,000 consultas menos por dia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ahorro de CPU&lt;/strong&gt;: 15-25% menos de uso de procesador&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menor consumo de memoria&lt;/strong&gt;: Liberacion de recursos para usuarios reales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejores tiempos de respuesta&lt;/strong&gt;: Páginas que cargan más rápido para visitantes reales&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mantenimiento-continuo-de-las-reglas-de-bloqueo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mantenimiento-continuo-de-las-reglas-de-bloqueo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mantenimiento continuo de las reglas de bloqueo&lt;/h2&gt;
&lt;p&gt;Las listas de bloqueo de bots requieren actualización periodica. Los proveedores de nube asignan nuevos rangos de IP regularmente, y los bots cambian sus patrones de acceso constantemente.&lt;/p&gt;
&lt;h3 id=&quot;calendario-de-revision-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#calendario-de-revision-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Calendario de revision recomendado&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Semanal&lt;/strong&gt;: Revise los logs de acceso en busca de nuevos patrones sospechosos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mensual&lt;/strong&gt;: Actualice las reglas de &lt;code&gt;.htaccess&lt;/code&gt; con nuevos rangos de IP identificados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trimestral&lt;/strong&gt;: Realice una auditoria completa de todas las reglas de bloqueo para eliminar las obsoletas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despues de cada pico de tráfico inusual&lt;/strong&gt;: Investigue inmediatamente la fuente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;automatizacion-del-mantenimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-del-mantenimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion del mantenimiento&lt;/h3&gt;
&lt;p&gt;Para sitios con alto volumen de tráfico, considere automatizar la deteccion y bloqueo de bots:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Script básico para identificar IPs con exceso de solicitudes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;awk&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;{print $1}&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; access.log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sort&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; uniq&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sort&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -20&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este comando analiza su log de acceso y muestra las 20 IPs con más solicitudes, ayudandole a identificar rápidamente posibles bots.&lt;/p&gt;
&lt;h2 id=&quot;notas-importantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#notas-importantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Notas importantes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tenga cuidado&lt;/strong&gt; de no bloquear rastreadores legitimos como Googlebot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pruebe exhaustivamente&lt;/strong&gt; antes de implementar en producción&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantengase actualizado&lt;/strong&gt; ya que los rangos de IP de bots cambian frecuentemente&lt;/li&gt;
&lt;li&gt;Considere usar un &lt;strong&gt;CDN con protección contra bots&lt;/strong&gt; como Cloudflare&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documente todas las reglas&lt;/strong&gt; que implementa para facilitar el mantenimiento futuro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Haga una copia de seguridad&lt;/strong&gt; de su archivo &lt;code&gt;.htaccess&lt;/code&gt; antes de realizar cambios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Al reducir el ruido de bots cuidadosamente, termina con datos de analíticas más limpios y menos señales falsas en sus informes de tráfico. Esto le permite tomar decisiones de negocio basadas en datos reales, optimizar sus campanas de marketing con precision y entender verdaderamente como interactuan sus usuarios con su sitio web.&lt;/p&gt;
&lt;p&gt;La batalla contra los bots es continua, pero con las herramientas y estrategias adecuadas, puede mantener sus analíticas limpias y su servidor funcionando de manera eficiente. La clave esta en encontrar el equilibrio entre protección agresiva y accesibilidad para usuarios y rastreadores legitimos.&lt;/p&gt;</content:encoded><category>seo</category><category>wordpress</category><category domain="tag">seo</category><category domain="tag">guide</category><category domain="tag">wordpress</category><category domain="tag">analytics</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Como acceder al telefono Android con Total Commander</title><link>https://wppoland.com/es/acceder-al-telefono-android-con-total-commander/</link><guid isPermaLink="true">https://wppoland.com/es/acceder-al-telefono-android-con-total-commander/</guid><description>Aprende como acceder a tu telefono Android en Total Commander mediante USB con MTP, además de métodos de acceso inalambrico opcionales para transferir archivos desde Windows.</description><pubDate>Thu, 11 Jun 2015 14:08:16 GMT</pubDate><content:encoded>&lt;p&gt;Gestionar archivos en tu dispositivo Android desde tu PC Windows se puede simplificar usando Total Commander, una potente herramienta de gestión de archivos. Esta guía te llevara a través de los pasos para acceder a tu telefono Android con Total Commander, tanto si prefieres un acceso sencillo por USB como una alternativa inalambrica.&lt;/p&gt;
&lt;p&gt;Aprende más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.
Respuesta rápida: para la configuración más sencilla, conecta el telefono por USB, cambia Android al modo &lt;strong&gt;Transferencia de archivos (MTP)&lt;/strong&gt; y luego usa &lt;code&gt;cm_OpenDrives&lt;/code&gt; en Total Commander para abrir el dispositivo. El acceso inalambrico también es posible, pero generalmente necesita una app FTP o Samba en el telefono.&lt;/p&gt;
&lt;h2 id=&quot;pasos-para-acceder-al-telefono-android-con-total-commander&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pasos-para-acceder-al-telefono-android-con-total-commander&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pasos para acceder al telefono Android con Total Commander&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configurar el menú de inicio de Total Commander&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Abre Total Commander en tu PC Windows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Selecciona el &lt;strong&gt;menú Inicio&lt;/strong&gt; y haz clic en &lt;strong&gt;“Cambiar menú de inicio”&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haz clic en &lt;strong&gt;“Agregar elemento”&lt;/strong&gt; y ponle un nombre como “Mi telefono Android”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En la parte inferior, en el area &lt;strong&gt;“Comando:”&lt;/strong&gt;, introduce &lt;code&gt;cm_OpenDrives&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haz clic en &lt;strong&gt;Aceptar&lt;/strong&gt; para guardar los cambios.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conectar al dispositivo Android&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Prueba tu nuevo menú de inicio seleccionando &lt;strong&gt;“Mi telefono Android”&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se te presentara una lista de unidades en tu PC Windows. Busca tu dispositivo Android en la parte inferior de la lista.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haz doble clic en tu dispositivo Android para abrirlo en Total Commander. Esto te dara una vista de doble panel, que te permite copiar o mover archivos fácil entre tu PC y tu dispositivo Android.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;consejos-adicionales-para-el-acceso-inalambrico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consejos-adicionales-para-el-acceso-inalambrico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consejos adicionales para el acceso inalambrico&lt;/h2&gt;
&lt;p&gt;Puedes usar plugins como &lt;strong&gt;TotalAndDroid&lt;/strong&gt; o apps que creen un recurso compartido de red en tu dispositivo Android para el acceso inalambrico. Aqui te explicamos como configurar el acceso inalambrico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usar el plugin TotalAndDroid:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Descarga e instala el plugin &lt;strong&gt;TotalAndDroid&lt;/strong&gt; para Total Commander.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Este plugin te permite conectarte de forma inalambrica a tu dispositivo Android sin necesidad de montarlo por USB.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Admite conexiónes USB e inalambricas, lo que es conveniente para gestionar archivos de forma remota.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usar la app Samba Network Fileshare:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Instala una app de uso compartido de archivos Samba en tu dispositivo Android.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configura la app para crear un recurso compartido de archivos en red.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Accede a tu dispositivo Android desde tu PC usando rutas UNC (por ejemplo, &lt;code&gt;\\192.168.0.101\storage\DCIM\Camera\&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Acceder a tu telefono Android con Total Commander es sencillo y eficiente, ya sea mediante una conexión por cable o inalambrica. Siguiendo estos pasos, puedes gestionar fácilmente tus archivos Android desde tu PC Windows, mejorando la productividad y la comodidad.&lt;/p&gt;</content:encoded><category>tools</category><category>tutorials</category><category domain="tag">guide</category><category domain="tag">total-commander</category><category domain="tag">android</category><category domain="tag">mtp</category><enclosure url="https://wppoland.com/images/og/wordpress-reset-privillages-access-roles.jpg" type="image/jpeg"/></item><item><title>Como acceder a un telefono Android con Total Commander</title><link>https://wppoland.com/es/como-acceder-telefono-android-total-commander/</link><guid isPermaLink="true">https://wppoland.com/es/como-acceder-telefono-android-total-commander/</guid><description>Aprende como acceder a tu telefono Android en Total Commander por USB con MTP, además de métodos opcionales de acceso inalambrico para transferir archivos desde Windows.</description><pubDate>Thu, 11 Jun 2015 14:08:16 GMT</pubDate><content:encoded>&lt;p&gt;Gestionar archivos en tu dispositivo Android desde tu PC con Windows se puede simplificar usando Total Commander, una poderosa herramienta de gestión de archivos. Esta guía te llevara paso a paso para acceder a tu telefono Android usando Total Commander, ya sea que prefieras acceso simple por USB o una alternativa inalambrica.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.
Respuesta rápida: para la configuración más fácil, conecta el telefono por USB, cambia Android al modo &lt;strong&gt;Transferencia de archivos (MTP)&lt;/strong&gt;, luego usa &lt;code&gt;cm_OpenDrives&lt;/code&gt; en Total Commander para abrir el dispositivo. El acceso inalambrico también es posible, pero normalmente necesita una app FTP o Samba en el telefono.&lt;/p&gt;
&lt;h2 id=&quot;pasos-para-acceder-al-telefono-android-con-total-commander&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pasos-para-acceder-al-telefono-android-con-total-commander&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pasos para acceder al telefono Android con Total Commander&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configurar el menú de inicio de Total Commander&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Abre Total Commander en tu PC con Windows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Selecciona el menú &lt;strong&gt;Inicio&lt;/strong&gt; y luego haz clic en &lt;strong&gt;“Cambiar Menú de Inicio”&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haz clic en &lt;strong&gt;“Agregar elemento”&lt;/strong&gt; y nombralo algo como “Mi telefono con Android” o cualquier otro nombre que te convenga.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Busca en la parte inferior el area de &lt;strong&gt;“Comando:”&lt;/strong&gt; e introduce &lt;code&gt;cm_OpenDrives&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haz clic en el boton &lt;strong&gt;OK&lt;/strong&gt; para guardar los cambios.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conectar a tu dispositivo Android&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ahora, prueba tu nuevo menú de inicio seleccionando &lt;strong&gt;“Mi telefono con Android”&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se te presentara una lista de unidades en tu PC con Windows. Busca tu dispositivo Android en la parte inferior de la lista.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haz doble clic en tu dispositivo Android para abrirlo en Total Commander. Esto te dara una vista de doble panel, permitiendote copiar o mover archivos fácilmente entre tu PC y el dispositivo Android.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;consejos-adicionales-para-acceso-inalambrico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consejos-adicionales-para-acceso-inalambrico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consejos adicionales para acceso inalambrico&lt;/h2&gt;
&lt;p&gt;Puedes usar plugins como &lt;strong&gt;TotalAndDroid&lt;/strong&gt; o apps que crean un recurso compartido de red en tu dispositivo Android para acceso inalambrico. Aqui te mostramos como configurar el acceso inalambrico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usando el plugin TotalAndDroid:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Descarga e instala el plugin &lt;strong&gt;TotalAndDroid&lt;/strong&gt; para Total Commander.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Este plugin te permite conectarte de forma inalambrica a tu dispositivo Android sin necesidad de montarlo por USB.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Soporta conexiónes USB e inalambricas, lo que lo hace conveniente para gestionar archivos de forma remota.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usando la app Samba Network Fileshare:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Instala una app de comparticion de archivos Samba en tu dispositivo Android.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configura la app para crear un recurso compartido de red.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Accede a tu dispositivo Android desde tu PC usando rutas UNC (por ejemplo, &lt;code&gt;\\192.168.0.101\storage\DCIM\Camera\&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Acceder a tu telefono Android con Total Commander es directo y eficiente, ya sea que prefieras una conexión por cable o inalambrica. Siguiendo estos pasos, puedes gestionar fácilmente los archivos de tu Android desde tu PC con Windows, mejorando la productividad y la comodidad.&lt;/p&gt;</content:encoded><category>tools</category><category>tutorials</category><category domain="tag">guide</category><category domain="tag">total-commander</category><category domain="tag">android</category><category domain="tag">mtp</category><enclosure url="https://wppoland.com/images/og/wordpress-reset-privillages-access-roles.jpg" type="image/jpeg"/></item><item><title>El futuro de WordPress: Hoja de ruta 2026-2030 y más alla</title><link>https://wppoland.com/es/future-of-wordpress-roadmap-2026/</link><guid isPermaLink="true">https://wppoland.com/es/future-of-wordpress-roadmap-2026/</guid><description>WordPress esta evolucionando rápidamente. Descubre la hoja de ruta estrategica: Data Liberation, Colaboración en Tiempo Real y el Rediseño completo del Admin.</description><pubDate>Mon, 23 Mar 2015 10:43:08 GMT</pubDate><content:encoded>&lt;p&gt;En 2015, estabamos hablando de la REST API.
En 2026, la conversacion ha cambiado a &lt;strong&gt;Data Liberation&lt;/strong&gt; y &lt;strong&gt;Colaboración en Tiempo Real&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;WordPress impulsa más del 45% de la web, pero enfrenta una competencia feroz de plataformas cerradas (Webflow, Shopify, Wix).
Para sobrevivir y prosperar, el proyecto WordPress tiene una hoja de ruta audaz. Aqui esta lo que necesitas saber para mantenerte relevante como desarrollador.&lt;/p&gt;
&lt;p&gt;Si quieres la conclusion práctica primero, lee la hoja de ruta como un conjunto de señales sobre donde se dirige la inversión en WordPress, no como una lista de características garantizada con plazos fijos.&lt;/p&gt;
&lt;h2 id=&quot;fase-3-colaboración-la-era-google-docs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-colaboración-la-era-google-docs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Colaboración (la era Google Docs)&lt;/h2&gt;
&lt;p&gt;La colaboración ha sido una de las direcciones más visibles en las discusiones de la hoja de ruta de Gutenberg.
El objetivo es simple: hacer que la edicion multi-autor se sienta menos aislada y más como un flujo de trabajo compartido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Por que esto importa para los desarrolladores:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El almacen de bloques sincronizados&lt;/strong&gt;: Los cambios pueden depender más de patrones de coordinacion en tiempo real en lugar de flujos de edicion puramente de usuario único.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolución de conflictos&lt;/strong&gt;: Tus bloques personalizados deben manejar ediciones concurrentes sin romper la validez del JSON.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;fase-4-multilingue-integración-en-el-nucleo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-multilingue-integración-en-el-nucleo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: Multilingue (integración en el nucleo)&lt;/h2&gt;
&lt;p&gt;Durante 20 años, dependimos de plugins como WPML o Polylang.
El soporte multilingue nativo se discute frecuentemente como una dirección futura, aunque el camino de implementación exacto sigue siendo incierto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El impacto&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Schema estandarizado&lt;/strong&gt;: No más tablas de base de datos diferentes para traducciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API unificada&lt;/strong&gt;: El objetivo a largo plazo es una forma más estándar de manejar contenido traducido en herramientas conscientes del nucleo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autores de temas&lt;/strong&gt;: La configuración de temas y bloques eventualmente puede obtener primitivas de localización más fuertes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;data-liberation-la-web-abierta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#data-liberation-la-web-abierta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Data Liberation (la web abierta)&lt;/h2&gt;
&lt;p&gt;El proyecto “Data Liberation” es la iniciativa de Matt Mullenweg para asegurar que los usuarios puedan &lt;em&gt;alejarse&lt;/em&gt; de plataformas cerradas (Wix/Squarespace) y &lt;em&gt;entrar&lt;/em&gt; a WordPress más fácil que nunca.&lt;/p&gt;
&lt;p&gt;También significa que &lt;em&gt;salir&lt;/em&gt; de WordPress debe ser fluido.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Migración con un clic&lt;/strong&gt;: Formatos de exportacion estandarizados (JSON/ZIP) que incluyen medios, bloques y configuraciónes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins canonicos&lt;/strong&gt;: Un conjunto de plugins mantenidos por la comunidad que “simplemente funcionan” para migración.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre nuestra &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Next.js y Astro&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;el-rediseño-del-admin-mp6-v2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-rediseño-del-admin-mp6-v2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El rediseño del admin (MP6 v2)&lt;/h2&gt;
&lt;p&gt;El Admin de WordPress (&lt;code&gt;wp-admin&lt;/code&gt;) no ha cambiado fundamentalmente desde 2012 (MP6).
Un rediseño masivo esta en marcha para unificar el Editor de Sitios y el Dashboard.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React en todas partes&lt;/strong&gt;: Mas interfaces de administración se estan moviendo hacia componentes al estilo del editor de bloques, aunque no todas las pantallas se vuelvan puramente React.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema de diseño unificado&lt;/strong&gt;: Los componentes del Editor de Bloques estan tomando el control de la barra lateral del admin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;que-deberias-aprender&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-deberias-aprender&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que deberias aprender?&lt;/h2&gt;
&lt;p&gt;Si quieres ser un &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; en 2030:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Profundizacion en JavaScript&lt;/strong&gt;: JavaScript importa mucho más que antes para bloques, integraciones del editor y experiencias de administración más ricas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React y JSX&lt;/strong&gt;: Esencial para construir bloques e interfaces de administración.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conceptos Headless&lt;/strong&gt;: Desacoplar el CMS del frontend se esta volviendo más fácil con la API canonica.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;WordPress no esta desacelerando. Esta madurando hacia un framework de aplicaciones moderno.
Estas listo?&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;el-ecosistema-de-plugins-en-la-era-de-la-hoja-de-ruta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ecosistema-de-plugins-en-la-era-de-la-hoja-de-ruta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ecosistema de plugins en la era de la hoja de ruta&lt;/h2&gt;
&lt;p&gt;La hoja de ruta de WordPress no solo afecta al nucleo; transforma fundamentalmente como los plugins interactuan con la plataforma. Los desarrolladores de plugins que anticipen estos cambios estaran mejor posicionados para ofrecer soluciones que se integren de forma nativa con las nuevas capacidades del nucleo.&lt;/p&gt;
&lt;h3 id=&quot;colaboración-y-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#colaboración-y-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Colaboración y plugins&lt;/h3&gt;
&lt;p&gt;Cuando la edicion colaborativa se convierta en una realidad del nucleo, los plugins que manipulan contenido - editores de tablas, constructores de formularios, herramientas de SEO - necesitaran manejar estados compartidos. Esto significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bloqueo optimista&lt;/strong&gt;: En lugar de bloquear un post entero, los plugins deben permitir la edicion simultanea de diferentes secciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolución de conflictos&lt;/strong&gt;: Los plugins deben serializar sus datos de forma que permita fusiones automáticas sin perdida de información.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notificaciones en tiempo real&lt;/strong&gt;: Los cambios realizados por un usuario deben propagarse instantaneamente a otros editores activos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;multilingue-y-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multilingue-y-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multilingue y plugins&lt;/h3&gt;
&lt;p&gt;La integración multilingue nativa eliminara muchas de las soluciones alternativas que los desarrolladores de plugins han tenido que implementar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;APIs de traduccion estandarizadas&lt;/strong&gt;: Un único conjunto de funciones para manejar contenido traducido en cualquier plugin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Campos meta traducibles&lt;/strong&gt;: Los campos personalizados podran marcarse como traducibles de forma declarativa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flujos de trabajo de traduccion&lt;/strong&gt;: Integración directa con servicios de traduccion automática y equipos de traductores humanos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;rendimiento-y-arquitectura-del-futuro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-y-arquitectura-del-futuro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento y arquitectura del futuro&lt;/h2&gt;
&lt;p&gt;El rendimiento sigue siendo una prioridad crítica en la hoja de ruta. Las iniciativas clave incluyen:&lt;/p&gt;
&lt;h3 id=&quot;edge-computing-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#edge-computing-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Edge Computing para WordPress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Renderizado en el borde&lt;/strong&gt;: Servir contenido desde servidores cercanos al usuario final, reduciendo latencia dramaticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache inteligente&lt;/strong&gt;: Sistemas de cache que entienden la estructura de bloques y pueden invalidar selectivamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN nativo&lt;/strong&gt;: Integración más profunda con redes de distribucion de contenido directamente desde el nucleo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;base-de-datos-y-almacenamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#base-de-datos-y-almacenamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Base de datos y almacenamiento&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Objetos de contenido&lt;/strong&gt;: Mover de un modelo relacional puro hacia un modelo hibrido que soporte documentos JSON para contenido de bloques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento distribuido&lt;/strong&gt;: Preparacion para arquitecturas multi-region donde el contenido se replica automáticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indices de búsqueda&lt;/strong&gt;: Mejoras en la búsqueda nativa de WordPress para reducir la dependencia de soluciones externas como Elasticsearch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;ia-y-automatizacion-en-el-nucleo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ia-y-automatizacion-en-el-nucleo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IA y automatizacion en el nucleo&lt;/h2&gt;
&lt;p&gt;La inteligencia artificial esta transformando WordPress de multiples maneras:&lt;/p&gt;
&lt;h3 id=&quot;blueprint-ai&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#blueprint-ai&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Blueprint AI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generación de diseños&lt;/strong&gt;: Crear páginas completas basadas en descripciones textuales, respetando las guías de estilo del tema activo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de contenido&lt;/strong&gt;: Sugerencias en tiempo real para mejorar legibilidad, SEO y accesibilidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asistente de desarrollo&lt;/strong&gt;: Ayuda contextual para desarrolladores que construyen bloques y temas personalizados.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;automatizacion-inteligente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-inteligente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion inteligente&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones predictivas&lt;/strong&gt;: El sistema anticipa problemas de compatibilidad antes de aplicar actualizaciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo proactivo&lt;/strong&gt;: Deteccion automática de problemas de rendimiento y seguridad con sugerencias de correccion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalización dinámica&lt;/strong&gt;: Contenido que se adapta automáticamente basado en el contexto del visitante.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Explora nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; y &lt;a href=&quot;/es/comercio-ia-wordpress/&quot;&gt;comercio con IA en WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;seguridad-en-la-proxima-generación-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-en-la-proxima-generación-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad en la proxima generación de WordPress&lt;/h2&gt;
&lt;h3 id=&quot;autenticación-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autenticación-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autenticación moderna&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Passkeys y WebAuthn&lt;/strong&gt;: Eliminar contraseñas como método principal de autenticación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación de integridad&lt;/strong&gt;: Comprobaciones automáticas de que archivos del nucleo, temas y plugins no han sido modificados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permisos granulares&lt;/strong&gt;: Control más fino sobre que pueden hacer los diferentes roles de usuario.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;privacidad-por-diseño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#privacidad-por-diseño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Privacidad por diseño&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento automatizado&lt;/strong&gt;: Herramientas integradas para GDPR, CCPA y otras regulaciones de privacidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minimizacion de datos&lt;/strong&gt;: Recopilación solo de los datos estrictamente necesarios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portabilidad de datos&lt;/strong&gt;: Exportacion fácil de datos personales de los usuarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;comunidad-y-gobernanza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comunidad-y-gobernanza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comunidad y gobernanza&lt;/h2&gt;
&lt;p&gt;El futuro de WordPress no es solo tecnología - es también sobre como se organiza y gobierna el proyecto:&lt;/p&gt;
&lt;h3 id=&quot;toma-de-decisiones-distribuida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#toma-de-decisiones-distribuida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Toma de decisiones distribuida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Equipos autonomos&lt;/strong&gt;: Cada equipo de contribucion tiene más independencia para tomar decisiones técnicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparencia&lt;/strong&gt;: Todas las decisiones importantes se documentan publicamente con su razonamiento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inclusion&lt;/strong&gt;: Esfuerzos activos para ampliar la diversidad de contribuidores del proyecto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sostenibilidad-del-ecosistema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sostenibilidad-del-ecosistema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sostenibilidad del ecosistema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modelos de financiacion&lt;/strong&gt;: Nuevas formás de financiar el desarrollo del nucleo de forma sostenible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estándares de calidad&lt;/strong&gt;: Requisitos más estrictos para plugins y temas en el directorio oficial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Educación&lt;/strong&gt;: Programás formales de capacitacion para nuevos contribuidores y desarrolladores.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;preparacion-práctica-para-desarrolladores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preparacion-práctica-para-desarrolladores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preparacion práctica para desarrolladores&lt;/h2&gt;
&lt;p&gt;Para estar listo para el WordPress de 2030, los desarrolladores deben invertir en:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;: El ecosistema WordPress se esta moviendo gradualmente hacia TypeScript para mejor seguridad de tipos en el frontend.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;APIs de streaming&lt;/strong&gt;: Comprender WebSockets y Server-Sent Events para funcionalidades en tiempo real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura de microservicios&lt;/strong&gt;: Diseñar plugins que funciónen tanto en WordPress monolitico como en configuraciónes headless.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing automatizado&lt;/strong&gt;: Los plugins del futuro necesitaran suites de pruebas completas para ser aceptados en el ecosistema.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion-un-futuro-brillante-y-desafiante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-un-futuro-brillante-y-desafiante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Un futuro brillante y desafiante&lt;/h2&gt;
&lt;p&gt;La hoja de ruta de WordPress 2026-2030 es ambiciosa pero fundamentada en necesidades reales del ecosistema. Los desarrolladores que se preparen ahora - aprendiendo JavaScript moderno, entendiendo patrones de colaboración en tiempo real y abrazando la portabilidad de datos - estaran en la mejor posición para prosperar.&lt;/p&gt;
&lt;p&gt;WordPress no esta simplemente evolucionando; esta siendo reimaginado para la proxima era de la web. Y como siempre, la comunidad es la fuerza impulsora detras de esa transformación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas un &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; que entienda el futuro de la plataforma? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>community</category><category>future</category><category domain="tag">hoja-de-ruta</category><category domain="tag">data-liberation</category><category domain="tag">gutenberg</category><category domain="tag">colaboración</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Comprobar si una entrada pertenece a un termino de taxonomía</title><link>https://wppoland.com/es/check-if-post-is-in-taxonomy-term/</link><guid isPermaLink="true">https://wppoland.com/es/check-if-post-is-in-taxonomy-term/</guid><description>has_term() e is_tax() se confunden a menudo. Consulta la guía completa sobre lógica condicional para categorías, etiquetas y taxonomías personalizadas.</description><pubDate>Mon, 26 Jan 2015 15:40:57 GMT</pubDate><content:encoded>&lt;p&gt;Una tarea comun para un desarrollador es mostrar un elemento (p. ej., un banner publicitario) &lt;strong&gt;solo&lt;/strong&gt; si la entrada pertenece a una categoría o taxonomía específica (p. ej., ‘Genero de pelicula: Comedia’).&lt;/p&gt;
&lt;p&gt;En WordPress, tenemos dos funciones principales para esto que a menudo se confunden: &lt;code&gt;is_tax()&lt;/code&gt; y &lt;code&gt;has_term()&lt;/code&gt;. La diferencia entre ellas es crucial para la lógica de tu tema.&lt;/p&gt;
&lt;p&gt;Si quieres la versión corta primero, usa &lt;code&gt;is_tax()&lt;/code&gt; para comprobar la página de archivo actual, y usa &lt;code&gt;has_term()&lt;/code&gt; para comprobar si una entrada específica esta asignada a un termino.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-is_tax-vs-has_term---cual-es-la-diferencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-is_tax-vs-has_term---cual-es-la-diferencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. &lt;code&gt;is_tax()&lt;/code&gt; vs &lt;code&gt;has_term()&lt;/code&gt; - Cual es la diferencia?&lt;/h2&gt;
&lt;h3 id=&quot;is_tax---contexto-de-página-archivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#is_tax---contexto-de-página-archivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;is_tax()&lt;/code&gt; - Contexto de página (archivo)&lt;/h3&gt;
&lt;p&gt;Usa esto para comprobar &lt;strong&gt;que página esta viendo el usuario&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Esta el usuario actualmente en la página de archivo de la categoría “Terror”?&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_tax&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;horror&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Estas en la lista de Terror!&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta función devolvera &lt;code&gt;false&lt;/code&gt; si estas en una página de entrada individual, incluso si esa entrada es realmente una pelicula de terror.&lt;/p&gt;
&lt;h3 id=&quot;has_term---contexto-de-entrada-individual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#has_term---contexto-de-entrada-individual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;has_term()&lt;/code&gt; - Contexto de entrada (individual)&lt;/h3&gt;
&lt;p&gt;Usa esto para comprobar &lt;strong&gt;que esta asignado a una entrada específica&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es esta pelicula específica de “Terror”?&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;horror&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Esta entrada es una pelicula de terror.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta función se usa más frecuentemente dentro del &lt;code&gt;Loop&lt;/code&gt; o en el archivo &lt;code&gt;single.php&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-el-problema-de-la-jerarquía-padres-e-hijos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-problema-de-la-jerarquía-padres-e-hijos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El problema de la jerarquía (padres e hijos)&lt;/h2&gt;
&lt;p&gt;El mayor desafio es que &lt;code&gt;has_term()&lt;/code&gt; solo comprueba exactamente el termino que específicas.&lt;/p&gt;
&lt;p&gt;Asume esta estructura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Peliculas (Taxonomía: &lt;code&gt;movie_genre&lt;/code&gt;)
&lt;ul&gt;
&lt;li&gt;Comedia (ID: 10)
&lt;ul&gt;
&lt;li&gt;Romantica (ID: 11)&lt;/li&gt;
&lt;li&gt;Comedia Negra (ID: 12)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si tienes una entrada asignada SOLO a “Romantica”, al comprobar:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;comedy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;movie_genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; )&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;devolvera &lt;strong&gt;FALSE&lt;/strong&gt;. Por que? Porque la entrada técnicamente no tiene la casilla “Comedia” marcada, solo “Romantica”.&lt;/p&gt;
&lt;h3 id=&quot;solución-función-auxiliar-para-descendientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-función-auxiliar-para-descendientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución: Función auxiliar para descendientes&lt;/h3&gt;
&lt;p&gt;Para comprobar si una entrada pertenece a “Comedia” &lt;strong&gt;O&lt;/strong&gt; cualquiera de sus subcategorias, necesitamos escribir nuestra propia función auxiliar.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Comprueba si una entrada pertenece a un termino o sus hijos.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $term_id_or_slug ID o Slug del termino padre.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $taxonomy Nombre de la taxonomia.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $post_id ID de la entrada (opcional).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; bool&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_in_term_tree&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term_id_or_slug, $taxonomy, $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $term    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_term_by&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;is_numeric&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($term_id_or_slug) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $term_id_or_slug, $taxonomy );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $term ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 1. Comprobar asignacion directa (más rápido)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;term_id, $taxonomy, $post_id ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 2. Obtener todos los hijos del termino&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $children &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_term_children&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;term_id, $taxonomy );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $children ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $children ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 3. Comprobar si la entrada tiene alguno de los hijos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $children, $taxonomy, $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;uso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso:&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En single.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wppoland_in_term_tree&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;comedy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;movie_genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    get_template_part&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;partials/banner-comedy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora esto funciona tanto para “Comedia” como para “Comedia Romantica”.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-optimización-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-optimización-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Optimización del rendimiento&lt;/h2&gt;
&lt;p&gt;La función &lt;code&gt;get_term_children()&lt;/code&gt; realiza una consulta a la base de datos. Si usas esto en un bucle que muestra 50 entradas, estas haciendo 50 consultas SQL extra.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como optimizar?&lt;/strong&gt;
Si tu estructura de categorías rara vez cambia, puedes almacenar en cache los IDs de los hijos en la API de Transients. Para la mayoria de los proyectos pequeños esto es opcional, pero se vuelve más útil cuando el mismo helper se ejecuta repetidamente en plantillas o bucles grandes.&lt;/p&gt;
&lt;p&gt;Una optimización más importante es pasar el &lt;strong&gt;ID&lt;/strong&gt; en lugar del &lt;strong&gt;Slug&lt;/strong&gt;. WordPress tiene que buscar el ID a partir del Slug de todas formas, así que proporcionar el ID (p. ej., &lt;code&gt;10&lt;/code&gt;) ahorra una consulta de búsqueda.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mas rápido (ID)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;movie_genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mas lento (Slug -&gt; requiere búsqueda)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;comedy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;movie_genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-patrones-avanzados-para-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-patrones-avanzados-para-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Patrones avanzados para WooCommerce&lt;/h2&gt;
&lt;p&gt;WooCommerce introduce sus propias taxonomías y funciones condicionales que merecen atención especial:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Comprobar categoria de producto dentro de un bucle personalizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$products &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;product&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 12&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $products&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) : $products&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // INCORRECTO: is_product_category(&apos;electronics&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // CORRECTO: has_term(&apos;electronics&apos;, &apos;product_cat&apos;, get_the_ID())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;electronics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product_cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;span class=&quot;badge&quot;&gt;Electronica&amp;#x3C;/span&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;taxonomías-personalizadas-de-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#taxonomías-personalizadas-de-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Taxonomías personalizadas de WooCommerce&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Atributos de producto son taxonomias con prefijo &apos;pa_&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;blue&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pa_color&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $product_id ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // El producto tiene el color azul&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificar marca personalizada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;samsung&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;product_brand&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $product_id ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Es un producto Samsung&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-carga-condicional-de-assets&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-carga-condicional-de-assets&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Carga condicional de assets&lt;/h2&gt;
&lt;p&gt;Uno de los usos más practicos de los condicionales de taxonomía es la carga inteligente de scripts y estilos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Solo cargar el mapa en entradas con la categoria &apos;ubicaciones&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ubicaciones&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;google-maps&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://maps.googleapis.com/maps/api/js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom-map&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_template_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/js/map.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;google-maps&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;1.0&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Solo cargar estilos de galeria en entradas con la etiqueta &apos;galeria&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;galeria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;lightbox&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_template_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/css/lightbox.css&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-integración-con-block-editor-y-fse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-integración-con-block-editor-y-fse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Integración con Block Editor y FSE&lt;/h2&gt;
&lt;p&gt;En el contexto de Full Site Editing en 2026, los condicionales de taxonomía se usan frecuentemente en bloques dinámicos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;register_block_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/conditional-content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;render_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $attributes, $content ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $taxonomy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attributes[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;taxonomy&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $term &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attributes[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;term&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term, $taxonomy ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-cache-de-resultados-con-object-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-cache-de-resultados-con-object-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Cache de resultados con Object Cache&lt;/h2&gt;
&lt;p&gt;Para sitios de alto tráfico, almacena en cache los resultados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_cached_term_check&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term, $taxonomy, $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;term_check_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$taxonomy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}_{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$post_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;term_checks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term, $taxonomy, $post_id ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $result, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;term_checks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) $result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Usa &lt;strong&gt;&lt;code&gt;is_tax()&lt;/code&gt;&lt;/strong&gt; solo para comprobar si estas en una página de archivo.&lt;/li&gt;
&lt;li&gt;Usa &lt;strong&gt;&lt;code&gt;has_term()&lt;/code&gt;&lt;/strong&gt; para comprobar logicamente entradas individuales.&lt;/li&gt;
&lt;li&gt;Recuerda que &lt;code&gt;has_term&lt;/code&gt; no hereda - si necesitas lógica “categoría y sus hijos”, usa una función auxiliar personalizada.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esta es la base para construir temas dinámicos que reaccionan al contexto del contenido.&lt;/p&gt;</content:encoded><category>development</category><category>snippets</category><category domain="tag">taxonomies</category><category domain="tag">logic</category><category domain="tag">php</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Tu blog en WordPress – Por que vale la pena en 2026?</title><link>https://wppoland.com/es/your-blog-on-wordpress-why-is-it-worth-it-in-2026/</link><guid isPermaLink="true">https://wppoland.com/es/your-blog-on-wordpress-why-is-it-worth-it-in-2026/</guid><description>El blogging no esta muerto. En la era de la IA, una voz humana autentica es más valiosa que nunca. Descubre como construir una marca personal con WP.</description><pubDate>Mon, 26 Jan 2015 09:33:29 GMT</pubDate><content:encoded>&lt;p&gt;Bienvenido al blog de WPPOLAND! Si llegaste aquí buscando información sobre WordPress, estas en el lugar correcto. Pero este post es sobre algo más - sobre el &lt;strong&gt;significado mismo de tener un blog&lt;/strong&gt; en el año 2026.&lt;/p&gt;
&lt;p&gt;Durante años hemos escuchado: “La gente no lee”, “El video reemplazara al texto”, y recientemente “La IA escribira todo mejor”. Y sin embargo, los buenos blogs siguen floreciendo. Por que?&lt;/p&gt;
&lt;h2 id=&quot;1-propiedad-de-la-plataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-propiedad-de-la-plataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Propiedad de la plataforma&lt;/h2&gt;
&lt;p&gt;Los perfiles en Instagram, LinkedIn o TikTok no te pertenecen. Un cambio de algoritmo y tu alcance cae a cero. Un blog WordPress es &lt;strong&gt;tuyo&lt;/strong&gt;. Es tu hogar en internet, del cual nadie tiene las llaves más que tu. Construyes una lista de email, recoges tráfico de Google y eres independiente de los caprichos de los multimillonarios de Silicon Valley.&lt;/p&gt;
&lt;h2 id=&quot;2-seo-y-la-cola-larga&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-seo-y-la-cola-larga&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. SEO y la cola larga&lt;/h2&gt;
&lt;p&gt;Un artículo escrito hace 5 años puede seguir trayendote nuevos clientes cada dia. Una publicación en redes sociales vive 24 horas. WordPress es una maquina de SEO. Contenido bien formateado (H1, H2, meta descripciones) es la forma más economica de adquirir tráfico valioso.&lt;/p&gt;
&lt;h2 id=&quot;3-autenticidad-en-la-era-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-autenticidad-en-la-era-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Autenticidad en la era de la IA&lt;/h2&gt;
&lt;p&gt;Cuando internet esta inundado con una ola de texto generico de ChatGPT, la &lt;strong&gt;voz humana&lt;/strong&gt;, la opinion, la experiencia y la “sustancia” (casos de estudio, historias reales) ganan valor. Los lectores buscan un experto en quien confiar, no una definicion enciclopedica generada por un bot.&lt;/p&gt;
&lt;h2 id=&quot;sobre-que-escribimos-en-wppoland&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sobre-que-escribimos-en-wppoland&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sobre que escribimos en WPPoland?&lt;/h2&gt;
&lt;p&gt;Nuestro blog esta dividido en categorías para que puedas encontrar fácilmente lo que buscas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Para principiantes:&lt;/strong&gt; Instalación, configuración de plugins, básicos del dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Para desarrolladores:&lt;/strong&gt; Code Snippets, optimización PHP, React en Gutenberg.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Negocios y marketing:&lt;/strong&gt; Como ganar con WP, como cuidar el SEO y la seguridad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Te invitamos a leer y comentar. WordPress es una comunidad - se parte de ella!&lt;/p&gt;
&lt;h2 id=&quot;el-resurgimiento-del-blogging-en-la-era-de-la-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-resurgimiento-del-blogging-en-la-era-de-la-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El resurgimiento del blogging en la era de la IA&lt;/h2&gt;
&lt;h3 id=&quot;por-que-el-blogging-personal-importa-más-que-nunca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-blogging-personal-importa-más-que-nunca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el blogging personal importa más que nunca&lt;/h3&gt;
&lt;p&gt;La narrativa de que “el blogging esta muerto” ha persistido durante más de una decada. Primero, las redes sociales iban a matar los blogs. Luego las plataformas de video. Ahora, la inteligencia artificial. Sin embargo, aquí estamos en 2026, y los blogs de calidad estan prosperando. La verdad es más matizada: &lt;strong&gt;el mal blogging esta muerto&lt;/strong&gt;, pero el blogging autentico y valioso esta experimentando un renacimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La paradoja de la IA:&lt;/strong&gt;
Mientras la IA puede generar contenido generico a escala, ha creado una prima sobre la perspectiva humana genuina. Cuando todo suena igual - pulido, optimizado, ligeramente insipido - la voz cruda, imperfecta y profundamente humana destaca. Los lectores estan desarrollando filtros sofisticados para contenido generado por IA y buscan activamente voces autenticas.&lt;/p&gt;
&lt;h3 id=&quot;las-ventajas-estrategicas-del-blogging-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-ventajas-estrategicas-del-blogging-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las ventajas estrategicas del blogging con WordPress&lt;/h3&gt;
&lt;h4 id=&quot;1-verdadera-propiedad-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-verdadera-propiedad-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Verdadera propiedad digital&lt;/h4&gt;
&lt;p&gt;Cuando construyes en terreno alquilado, estas a merced del propietario. Esto no es teorico - sucede constantemente:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Riesgos de dependencia de plataforma:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cambios de algoritmo&lt;/strong&gt;: El alcance de Instagram cayo un 44% para muchos creadores en 2023&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suspensiones de cuentas&lt;/strong&gt;: Twitter/X suspendio miles de cuentas durante transiciones de propiedad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminacion de funciones&lt;/strong&gt;: LinkedIn elimino varios formatos de contenido con minimo aviso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambios de politica&lt;/strong&gt;: El alcance organico de Facebook para páginas cayo del 16% (2012) a menos del 2% (2024)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Beneficios de propiedad con WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Controlas el servidor, dominio y todo el contenido&lt;/li&gt;
&lt;li&gt;Sin moderación arbitraria de contenido o eliminación&lt;/li&gt;
&lt;li&gt;Libertad completa de personalización&lt;/li&gt;
&lt;li&gt;Contenido portable (exporta en cualquier momento)&lt;/li&gt;
&lt;li&gt;Relación directa con tu audiencia a través del email&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;2-seo-como-un-activo-compuesto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-seo-como-un-activo-compuesto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. SEO como un activo compuesto&lt;/h4&gt;
&lt;p&gt;A diferencia de las publicaciónes en redes sociales que desaparecen en el vacio en horas, el contenido de blog sigue trabajando para ti indefinidamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El efecto de la cola larga:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Artículos posicionados para palabras clave específicas de cola larga traen tráfico consistente&lt;/li&gt;
&lt;li&gt;El contenido antiguo acumula backlinks y autoridad&lt;/li&gt;
&lt;li&gt;La intencion de búsqueda se mantiene relativamente estable en el tiempo&lt;/li&gt;
&lt;li&gt;El contenido de calidad puede posicionarse durante años con actualizaciones minimas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ventajas SEO de WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estructuras de permalink limpias&lt;/li&gt;
&lt;li&gt;Generación automática de metadata via plugins&lt;/li&gt;
&lt;li&gt;Temás responsive para móviles&lt;/li&gt;
&lt;li&gt;Carga rápida con optimización adecuada&lt;/li&gt;
&lt;li&gt;Soporte de schema markup&lt;/li&gt;
&lt;li&gt;Generación de sitemap XML&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;3-construyendo-confianza-a-través-de-la-autenticidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-construyendo-confianza-a-través-de-la-autenticidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Construyendo confianza a través de la autenticidad&lt;/h4&gt;
&lt;p&gt;En una era de granjas de contenido generado por IA, establecerte como una persona real con experiencia genuina es una ventaja competitiva.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elementos del blogging autentico:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Historias personales y casos de estudio&lt;/li&gt;
&lt;li&gt;Opiniones propias (incluso las controversiales)&lt;/li&gt;
&lt;li&gt;Contenido tras bambalinas&lt;/li&gt;
&lt;li&gt;Reconocimiento de errores y lecciones aprendidas&lt;/li&gt;
&lt;li&gt;Interacción con comentarios y comunidad&lt;/li&gt;
&lt;li&gt;Voz y perspectiva consistentes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Por que los lectores valoran la autenticidad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La confianza es la moneda de internet&lt;/li&gt;
&lt;li&gt;La gente compra de personas, no de marcas sin rostro&lt;/li&gt;
&lt;li&gt;La autenticidad crea conexiónes emocionales&lt;/li&gt;
&lt;li&gt;Las perspectivas únicas cortan el ruido del contenido&lt;/li&gt;
&lt;li&gt;La experiencia real demuestra autoridad&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;4-construccion-de-comunidad-y-networking&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-construccion-de-comunidad-y-networking&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Construccion de comunidad y networking&lt;/h4&gt;
&lt;p&gt;Un blog WordPress es más que contenido - es un centro para la comunidad:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteristicas de comunidad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Secciones de comentarios para discusion&lt;/li&gt;
&lt;li&gt;Newsletters por email para comunicación directa&lt;/li&gt;
&lt;li&gt;Areas de membresia para contenido exclusivo&lt;/li&gt;
&lt;li&gt;Foros para ayuda entre pares&lt;/li&gt;
&lt;li&gt;Bibliotecas de recursos que se convierten en puntos de referencia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Beneficios de networking:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reconocimiento de la industria y liderazgo de pensamiento&lt;/li&gt;
&lt;li&gt;Oportunidades de conferencias como ponente&lt;/li&gt;
&lt;li&gt;Invitaciones de colaboración&lt;/li&gt;
&lt;li&gt;Oportunidades de clientes y empleo&lt;/li&gt;
&lt;li&gt;Relaciones con otros profesionales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ventajas-técnicas-de-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-técnicas-de-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas técnicas de WordPress en 2026&lt;/h3&gt;
&lt;p&gt;WordPress ha evolucionado significativamente, manteniendo su posición como la plataforma de blogging premier:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteristicas modernas de WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Editor de bloques Gutenberg&lt;/strong&gt;: Creación de contenido intuitiva y flexible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Site Editing (FSE)&lt;/strong&gt;: Control completo de diseño sin codificacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST API&lt;/strong&gt;: Capacidades headless para frontends modernos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones automáticas&lt;/strong&gt;: Seguridad mejorada con mantenimiento minimo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejoras de rendimiento&lt;/strong&gt;: Optimización de Core Web Vitals integrada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accesibilidad&lt;/strong&gt;: Cumplimiento WCAG 2.1 AA en temas predeterminados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre nuestro &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; y &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-de-contenido-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-contenido-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de contenido para 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Lo que funciona ahora:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contenido profundo y completo&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guias de más de 2,000 palabras que cubren temas exhaustivamente&lt;/li&gt;
&lt;li&gt;Investigacion original y análisis de datos&lt;/li&gt;
&lt;li&gt;Tutoriales paso a paso con capturas de pantalla&lt;/li&gt;
&lt;li&gt;Videos incrustados y mejora multimedia&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fundamentos evergreen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guias prácticas que siguen siendo relevantes&lt;/li&gt;
&lt;li&gt;Listas de recursos y comparativas de herramientas&lt;/li&gt;
&lt;li&gt;Casos de estudio con perspectivas accionables&lt;/li&gt;
&lt;li&gt;Secciones FAQ que responden preguntas reales&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Integración de marca personal&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Biografias de autor que establecen credibilidad&lt;/li&gt;
&lt;li&gt;Fotos profesionales y branding consistente&lt;/li&gt;
&lt;li&gt;Prueba social (testimonios, menciones, premios)&lt;/li&gt;
&lt;li&gt;Propuesta de valor clara en la página de inicio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contenido multi-formato&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Posts de blog como base&lt;/li&gt;
&lt;li&gt;Videos de YouTube incrustados en posts&lt;/li&gt;
&lt;li&gt;Episodios de podcast con transcripciones&lt;/li&gt;
&lt;li&gt;PDFs descargables y checklists&lt;/li&gt;
&lt;li&gt;Infografias y contenido visual&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;pasos-practicos-para-iniciar-tu-blog-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pasos-practicos-para-iniciar-tu-blog-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pasos practicos para iniciar tu blog WordPress&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Fase 1: Fundacion (Semana 1)&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Elige un nombre de dominio que refleje tu nicho&lt;/li&gt;
&lt;li&gt;Selecciona hosting confiable (SiteGround, Cloudways, Kinsta)&lt;/li&gt;
&lt;li&gt;Instala WordPress y un tema limpio y rápido&lt;/li&gt;
&lt;li&gt;Configura plugins esenciales (SEO, seguridad, cache)&lt;/li&gt;
&lt;li&gt;Crea páginas básicas: Acerca de, Contacto, Politica de Privacidad&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Fase 2: Estrategia de contenido (Semana 2-4)&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Define tu nicho y audiencia objetivo&lt;/li&gt;
&lt;li&gt;Crea un calendario editorial con 10-20 temas iniciales&lt;/li&gt;
&lt;li&gt;Desarrolla un angulo o perspectiva única&lt;/li&gt;
&lt;li&gt;Escribe contenido pilar (3-5 guías completas)&lt;/li&gt;
&lt;li&gt;Optimiza para SEO desde el inicio&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Fase 3: Crecimiento (Mes 2+)&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pública consistentemente (1-2 veces por semana minimo)&lt;/li&gt;
&lt;li&gt;Construye una lista de email desde el dia uno&lt;/li&gt;
&lt;li&gt;Interactua con otros blogs de tu nicho&lt;/li&gt;
&lt;li&gt;Comparte contenido estrategicamente en redes sociales&lt;/li&gt;
&lt;li&gt;Monitorea analíticas y ajusta la estrategia&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;errores-comunes-de-principiantes-a-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-de-principiantes-a-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes de principiantes a evitar&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Elegir la plataforma equivocada&lt;/strong&gt;
No comiences en Medium, Substack o LinkedIn Articles con el plan de “mudarte despues”. Comienza en WordPress inmediatamente para construir tu activo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Publicación inconsistente&lt;/strong&gt;
La publicación esporadica mata el impulso. Es mejor publicar un post de calidad por semana que cinco posts mediocres un mes y nada el siguiente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Ignorar los básicos de SEO&lt;/strong&gt;
Aunque no debes obsesionarte con el SEO, ignorar los fundamentales (encabezados adecuados, meta descripciones, texto alternativo de imágenes) es dejar tráfico sobre la mesa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Paralisis por perfeccionismo&lt;/strong&gt;
Tus primeros posts no seran perfectos. Pública, aprende, mejora. El único post de blog fallido es el que nunca se pública.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. No construir lista de email&lt;/strong&gt;
Los seguidores de redes sociales no son tuyos. Comienza a capturar emails inmediatamente con lead magnets y opt-ins de newsletter.&lt;/p&gt;
&lt;h3 id=&quot;rutas-de-monetizacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rutas-de-monetizacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rutas de monetizacion&lt;/h3&gt;
&lt;p&gt;Aunque no deberias empezar a bloguear únicamente por dinero, entender la monetizacion ayuda a justificar la inversión de tiempo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monetizacion directa:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Publicidad display (Mediavine, AdThrive, Ezoic)&lt;/li&gt;
&lt;li&gt;Marketing de afiliados (Amazon Associates, programás de nicho)&lt;/li&gt;
&lt;li&gt;Contenido patrocinado y asociaciones con marcas&lt;/li&gt;
&lt;li&gt;Productos digitales (cursos, ebooks, plantillas)&lt;/li&gt;
&lt;li&gt;Sitios de membresia y contenido premium&lt;/li&gt;
&lt;li&gt;Consultoria y servicios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Beneficios indirectos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Oportunidades laborales y avance profesional&lt;/li&gt;
&lt;li&gt;Conferencias como ponente&lt;/li&gt;
&lt;li&gt;Contratos de publicación de libros&lt;/li&gt;
&lt;li&gt;Reconocimiento y autoridad en la industria&lt;/li&gt;
&lt;li&gt;Expansion de red de contactos&lt;/li&gt;
&lt;li&gt;Adquisicion de clientes para negocios de servicios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-futuro-del-blogging-2026-y-más-alla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-del-blogging-2026-y-más-alla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro del blogging: 2026 y más alla&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Tendencias emergentes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creación de contenido asistida por IA (no reemplazo)&lt;/li&gt;
&lt;li&gt;Optimización para búsqueda por voz&lt;/li&gt;
&lt;li&gt;Integración de video como estándar&lt;/li&gt;
&lt;li&gt;Modelos de publicación newsletter-first&lt;/li&gt;
&lt;li&gt;Contenido impulsado por la comunidad&lt;/li&gt;
&lt;li&gt;Opciones de publicación web descentralizada (Web3)&lt;/li&gt;
&lt;li&gt;Mayor enfoque en E-E-A-T (Experiencia, Conocimiento, Autoridad, Confianza)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;El rol de WordPress:&lt;/strong&gt;
WordPress continua evolucionando, con el proyecto Gutenberg impulsando hacia la edicion completa del sitio, rendimiento mejorado y características de colaboración mejoradas. Como la plataforma más adaptable, WordPress integrara nuevas tecnologías mientras mantiene los principios de propiedad del contenido.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Bloguear en WordPress en 2026 no solo es viable - es estrategicamente esencial para cualquiera que construya una marca personal, negocio o reputacion profesional en linea. Aunque las herramientas han evolucionado y la competencia ha aumentado, la propuesta de valor fundamental permanece: &lt;strong&gt;se dueño de tu contenido, construye tu audiencia y establece tu autoridad.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La revolucion de la IA no ha matado el blogging; ha hecho que las voces humanas autenticas sean más valiosas que nunca. En un mundo de contenido infinito generado por IA, tu perspectiva única, experiencia y conocimiento son activos irremplazables.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Listo para iniciar tu blog WordPress? El mejor momento para plantar un arbol fue hace 20 años. El segundo mejor momento es hoy. Tu futura audiencia esta esperando.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt; para ayudarte a construir tu presencia digital con WordPress.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>blogging</category><category>wordpress</category><category>content-marketing</category><category domain="tag">blog</category><category domain="tag">contenido</category><category domain="tag">2026</category><category domain="tag">escritura</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-resized.jpg" type="image/jpeg"/></item><item><title>Mejores Plugins WordPress 2026 - Guia Esencial del Stack de Plugins</title><link>https://wppoland.com/es/best-wordpress-plugins-a-complete-guide-2026/</link><guid isPermaLink="true">https://wppoland.com/es/best-wordpress-plugins-a-complete-guide-2026/</guid><description>Compara los mejores plugins de WordPress en 2026 para seguridad, SEO, cache, copias de seguridad y optimización de imágenes, con consejos practicos sobre que instalar y que evitar.</description><pubDate>Sun, 26 Oct 2014 09:26:21 GMT</pubDate><content:encoded>&lt;p&gt;WordPress es una herramienta poderosa, pero su verdadera fuerza reside en su ecosistema de plugins. Las extensiónes apropiadamente seleccionadas pueden transformar un simple blog en un sitio avanzado de comercio electronico, un portal corporativo o una plataforma educativa rentable. Sin embargo, con más de 60,000 plugins disponibles en el repositorio oficial, elegir los correctos puede ser abrumador. Peor aun, instalar demasiados plugins o plugins mal escritos es un camino directo hacia un sitio lento, vulnerable y propenso a fallos.&lt;/p&gt;
&lt;p&gt;Como &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; con años de experiencia, he preparado una &lt;strong&gt;guía completa de los mejores plugins de WordPress para 2026&lt;/strong&gt;. Esto no es una lista aleatoria de “top 10”, sino un conjunto cuidadosamente seleccionado de herramientas que uso en mi trabajo diario construyendo sitios profesionales para clientes. Aprenderas no solo que instalar, sino también como configurarlo, que evitar y como mantener la higiene de tu instalación.&lt;/p&gt;
&lt;p&gt;Respuesta corta: el mejor stack de plugins WordPress en 2026 es generalmente más pequeño de lo que la gente espera. Comienza con un hosting fuerte, un plugin de cache, un sistema de backup, un plugin de SEO, y solo entonces agrega herramientas especializadas que resuelvan un problema claro.&lt;/p&gt;
&lt;h2 id=&quot;por-que-los-plugins-son-clave-y-peligrosos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-plugins-son-clave-y-peligrosos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los plugins son clave (y peligrosos)&lt;/h2&gt;
&lt;p&gt;Antes de llegar a la lista, debemos entender la filosofia de trabajar con plugins. Los plugins sirven para extender la funcionalidad del nucleo de WordPress. Gracias a ellos, no necesitas ser programador para agregar un formulario de contacto, una tienda online o galerias fotograficas avanzadas.&lt;/p&gt;
&lt;p&gt;Sin embargo, cada palo tiene dos extremos. Cada plugin es código adicional que tu servidor debe procesar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento:&lt;/strong&gt; Los plugins mal escritos pueden desacelerar drasticamente la carga de la página (TTFB), impactando negativamente el SEO y la experiencia del usuario (UX).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad:&lt;/strong&gt; Los plugins son el vector de ataque más comun en sitios WordPress. Los complementos desactualizados son puertas abiertas para hackers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflictos:&lt;/strong&gt; Dos plugins haciendo lo mismo (por ejemplo, dos sliders) pueden entrar en conflicto entre si, causando errores de JavaScript y rompiendo el sitio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Regla de oro:&lt;/strong&gt; Instala solo lo que sea absolutamente necesario. Si puedes hacer algo con código simple en &lt;code&gt;functions.php&lt;/code&gt;, hazlo con código. Si no, elige un plugin de un autor reputado, con un gran número de instalaciones y actualizaciones regulares.&lt;/p&gt;
&lt;h2 id=&quot;categoría-1-seguridad---protección-inteligente-no-paranoia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#categoría-1-seguridad---protección-inteligente-no-paranoia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Categoría 1: Seguridad - Protección inteligente, no paranoia&lt;/h2&gt;
&lt;p&gt;La seguridad de WordPress no comienza con un plugin - comienza con un hosting solido y prácticas disciplinadas. Antes de instalar cualquier herramienta de seguridad, asegurate de que tu base este cubierta:&lt;/p&gt;
&lt;h3 id=&quot;fundamentos-de-seguridad-antes-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fundamentos-de-seguridad-antes-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fundamentos de seguridad antes de plugins&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hosting de calidad&lt;/strong&gt;: Un host WordPress gestionado con firewalls a nivel de servidor, deteccion de intrusiones y aislamiento de cuentas ya cubre la mayoria de las amenazas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones regulares&lt;/strong&gt;: Nucleo, temas y plugins actualizados a la última versión. Sin excepciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contraseñas fuertes&lt;/strong&gt;: Autenticación de dos factores (2FA) para todos los administradores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acceso limitado&lt;/strong&gt;: Solo las personas que necesitan acceso deben tenerlo. Revisa usuarios regularmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;plugins-de-seguridad-recomendados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-de-seguridad-recomendados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins de seguridad recomendados&lt;/h3&gt;
&lt;p&gt;Si tu hosting ya maneja lo básico, el plugin de seguridad que necesitas es ligero y enfocado:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wordfence (versión gratuita)&lt;/strong&gt;: Ofrece firewall a nivel de aplicación y escaneo de malware. La versión gratuita es suficiente para la mayoria de sitios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solid Security (antes iThemes Security)&lt;/strong&gt;: Buena opción para hardening básico - cambiar URLs de login, limitar intentos de acceso, forzar contraseñas fuertes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sucuri Security&lt;/strong&gt;: Excelente para monitoreo de integridad de archivos y lista negra.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nuestra recomendación&lt;/strong&gt;: No instales los tres. Elige uno y complementa con la seguridad que tu hosting ya proporciona. Conoce más sobre nuestra &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;categoría-2-cache-y-rendimiento---la-diferencia-entre-2-y-05-segundos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#categoría-2-cache-y-rendimiento---la-diferencia-entre-2-y-05-segundos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Categoría 2: Cache y rendimiento - La diferencia entre 2 y 0.5 segundos&lt;/h2&gt;
&lt;p&gt;El cache es probablemente la mejora de rendimiento más impactante que puedes hacer en WordPress. Un buen plugin de cache puede reducir los tiempos de carga en un 60-80%.&lt;/p&gt;
&lt;h3 id=&quot;wp-rocket-premium&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wp-rocket-premium&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WP Rocket (Premium)&lt;/h3&gt;
&lt;p&gt;El lider del mercado por una buena razon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cache de página, precarga y optimización de base de datos en un solo plugin.&lt;/li&gt;
&lt;li&gt;Carga diferida (lazy loading) de imágenes e iframes.&lt;/li&gt;
&lt;li&gt;Minificacion y concatenacion de CSS/JS.&lt;/li&gt;
&lt;li&gt;Fácil de configurar para no desarrolladores.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;litespeed-cache-gratuito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#litespeed-cache-gratuito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;LiteSpeed Cache (Gratuito)&lt;/h3&gt;
&lt;p&gt;Si tu servidor usa LiteSpeed (como muchos hosts modernos):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cache a nivel de servidor extremadamente rápido.&lt;/li&gt;
&lt;li&gt;Optimización de imágenes integrada (WebP/AVIF).&lt;/li&gt;
&lt;li&gt;CDN de objetos integrado (QUIC.cloud).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-adicional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-adicional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización adicional&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Imagify o ShortPixel&lt;/strong&gt;: Para compresion de imágenes automática en formatos modernos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfmatters&lt;/strong&gt;: Para deshabilitar scripts innecesarios por página individual.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conoce más sobre nuestra &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;categoría-3-seo---un-plugin-no-tres&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#categoría-3-seo---un-plugin-no-tres&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Categoría 3: SEO - Un plugin, no tres&lt;/h2&gt;
&lt;p&gt;El error más comun es instalar multiples plugins de SEO. Solo necesitas uno.&lt;/p&gt;
&lt;h3 id=&quot;rank-math-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rank-math-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rank Math (Recomendado)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Interfaz limpia con funcionalidades avanzadas en la versión gratuita.&lt;/li&gt;
&lt;li&gt;Schema markup automático con multiples tipos.&lt;/li&gt;
&lt;li&gt;Análisis de contenido con sugerencias de mejora.&lt;/li&gt;
&lt;li&gt;Integración con Google Search Console.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;yoast-seo-la-opción-clásica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#yoast-seo-la-opción-clásica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Yoast SEO (La opción clásica)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;El plugin de SEO más instalado del mundo.&lt;/li&gt;
&lt;li&gt;Análisis de legibilidad integrado.&lt;/li&gt;
&lt;li&gt;Sitemaps XML automáticos.&lt;/li&gt;
&lt;li&gt;Soporte de schema básico (avanzado en premium).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;the-seo-framework-minimalista&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#the-seo-framework-minimalista&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;The SEO Framework (Minimalista)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Sin anuncios ni ventas agresivas en el admin.&lt;/li&gt;
&lt;li&gt;Automatizacion inteligente - configura una vez y funciona.&lt;/li&gt;
&lt;li&gt;Ligero y rápido.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nuestra recomendación&lt;/strong&gt;: Rank Math para la mayoria de sitios profesionales. Yoast si ya estas familiarizado con su flujo de trabajo.&lt;/p&gt;
&lt;p&gt;Descubre nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;categoría-4-copias-de-seguridad---tu-red-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#categoría-4-copias-de-seguridad---tu-red-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Categoría 4: Copias de seguridad - Tu red de seguridad&lt;/h2&gt;
&lt;p&gt;No hay excusa para no tener copias de seguridad automatizadas. La pregunta no es &lt;em&gt;si&lt;/em&gt; algo saldra mal, sino &lt;em&gt;cuando&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&quot;updraftplus&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#updraftplus&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;UpdraftPlus&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;La opción más popular y confiable.&lt;/li&gt;
&lt;li&gt;Copias de seguridad automáticas a Google Drive, Dropbox, S3 y mas.&lt;/li&gt;
&lt;li&gt;Restauracion con un clic desde el panel de WordPress.&lt;/li&gt;
&lt;li&gt;La versión gratuita cubre la mayoria de necesidades.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;blogvault&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#blogvault&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;BlogVault&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Copias incrementales (solo los cambios, no todo el sitio).&lt;/li&gt;
&lt;li&gt;Staging integrado para probar cambios antes de aplicarlos.&lt;/li&gt;
&lt;li&gt;Restauracion rápida incluso para sitios grandes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reglas-para-copias-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reglas-para-copias-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reglas para copias de seguridad&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento externo&lt;/strong&gt;: Nunca guardes las copias en el mismo servidor del sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frecuencia&lt;/strong&gt;: Diaria para sitios con contenido frecuente, semanal para sitios estaticos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba de restauracion&lt;/strong&gt;: Una copia de seguridad que no has probado restaurar no es una copia de seguridad.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;mejores-plugins-de-backup-para-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-plugins-de-backup-para-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores plugins de backup para WordPress en 2026&lt;/h3&gt;
&lt;p&gt;Más allá de UpdraftPlus, estas soluciones de backup merecen consideración según tu configuración de hosting y presupuesto:&lt;/p&gt;






















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Plugin&lt;/th&gt;&lt;th&gt;Mejor para&lt;/th&gt;&lt;th&gt;Almacenamiento remoto&lt;/th&gt;&lt;th&gt;Backups incrementales&lt;/th&gt;&lt;th&gt;Tier gratuito&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;UpdraftPlus 3.x&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;La mayoría de sitios WordPress&lt;/td&gt;&lt;td&gt;S3, GDrive, Dropbox, B2, 12+&lt;/td&gt;&lt;td&gt;Sí (v3.0+)&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;BlogVault&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backup gestionado + staging&lt;/td&gt;&lt;td&gt;Nube BlogVault&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;No (desde $7.4/mes)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Jetstash / VaultPress&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Usuarios WordPress.com / Jetpack&lt;/td&gt;&lt;td&gt;Nube Jetpack&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;No (desde $4.77/mes)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;BackWPup&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Backups gratuitos a S3/FTP&lt;/td&gt;&lt;td&gt;S3, FTP, GDrive, Dropbox&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;WP STAGING&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Combo staging + backup&lt;/td&gt;&lt;td&gt;Local + remoto&lt;/td&gt;&lt;td&gt;Sí&lt;/td&gt;&lt;td&gt;Sí (limitado)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Duplicator Pro&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Migración + backup&lt;/td&gt;&lt;td&gt;S3, GDrive, Dropbox, OneDrive&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Sí (limitado)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Criterios de selección:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;El almacenamiento remoto no es negociable.&lt;/strong&gt; Un backup almacenado en el mismo servidor que tu sitio es inútil si el servidor falla. Configura siempre destinos externos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los backups incrementales importan para sitios grandes.&lt;/strong&gt; Si tu base de datos WooCommerce supera 1GB, los backups completos diarios sobrecargan los recursos del servidor. UpdraftPlus 3.x y BlogVault manejan esto bien.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba restauraciones trimestralmente.&lt;/strong&gt; Programa un recordatorio en el calendario. Descarga un backup, levanta un entorno local y restaura. Si nunca has probado tu proceso de restauración, no tienes backups — tienes esperanza.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encripta los backups en reposo.&lt;/strong&gt; Los backups contienen toda tu base de datos incluyendo datos de usuarios. Usa encriptación AES-256, especialmente para sitios que manejan datos personales bajo GDPR.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para la mayoría de sitios WordPress, UpdraftPlus con backups diarios automatizados a un proveedor cloud separado es suficiente. Para e-commerce de misión critica o sitios enterprise, BlogVault añade backup en tiempo real y staging integrado.&lt;/p&gt;
&lt;h2 id=&quot;categoría-5-formularios---comúnicación-con-tus-visitantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#categoría-5-formularios---comúnicación-con-tus-visitantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Categoría 5: Formularios - Comúnicación con tus visitantes&lt;/h2&gt;
&lt;h3 id=&quot;wpforms-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#wpforms-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;WPForms (Recomendado)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Constructor drag-and-drop intuitivo.&lt;/li&gt;
&lt;li&gt;Plantillas prediseñadas para formularios comunes.&lt;/li&gt;
&lt;li&gt;Integraciones con servicios de email marketing.&lt;/li&gt;
&lt;li&gt;Lógica condicional para formularios dinámicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;gravity-forms-para-necesidades-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gravity-forms-para-necesidades-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gravity Forms (Para necesidades avanzadas)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Formularios multi-paso complejos.&lt;/li&gt;
&lt;li&gt;Integraciones con pasarelas de pago.&lt;/li&gt;
&lt;li&gt;Lógica de negocio avanzada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fluent-forms-alternativa-ligera&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fluent-forms-alternativa-ligera&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fluent Forms (Alternativa ligera)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Rendimiento excelente con poca carga en el servidor.&lt;/li&gt;
&lt;li&gt;Buena versión gratuita.&lt;/li&gt;
&lt;li&gt;Integrado con muchos servicios de terceros.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;categoría-6-optimización-de-imágenes---cada-kilobyte-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#categoría-6-optimización-de-imágenes---cada-kilobyte-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Categoría 6: Optimización de imágenes - Cada kilobyte cuenta&lt;/h2&gt;
&lt;p&gt;Las imágenes suelen ser el activo más pesado de cualquier sitio web. Optimizarlas correctamente puede reducir el peso de la página en un 50% o mas.&lt;/p&gt;
&lt;h3 id=&quot;imagify&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imagify&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imagify&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tres niveles de compresion: Normal, Agresivo, Ultra.&lt;/li&gt;
&lt;li&gt;Conversión automática a WebP y AVIF.&lt;/li&gt;
&lt;li&gt;Integración nativa con WP Rocket.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;shortpixel&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#shortpixel&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ShortPixel&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Compresion excelente sin perdida visible de calidad.&lt;/li&gt;
&lt;li&gt;Soporte para PDF además de imágenes.&lt;/li&gt;
&lt;li&gt;Opciones de procesamiento masivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ewww-image-optimizer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ewww-image-optimizer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;EWWW Image Optimizer&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Opción sin limites mensuales en su versión gratuita.&lt;/li&gt;
&lt;li&gt;Procesamiento local (no envia imágenes a servidores externos).&lt;/li&gt;
&lt;li&gt;Buena opción para sitios con muchas imágenes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mejores-practicas-para-plugins-de-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-practicas-para-plugins-de-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores practicas para plugins de WordPress en 2026&lt;/h2&gt;
&lt;p&gt;Elegir plugins es solo la mitad de la batalla. Gestionarlos correctamente es lo que separa un sitio estable de una bomba de tiempo.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Un plugin por función.&lt;/strong&gt; Nunca ejecutes dos plugins que hacen lo mismo (dos plugins SEO, dos capas de cache, dos escaneres de seguridad). Entran en conflicto, duplican el uso de recursos y crean pesadillas de depuracion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditoria trimestral.&lt;/strong&gt; Desactiva y elimina todo lo que no se use activamente. Incluso los plugins desactivados contienen archivos que pueden ser explotados si se encuentra una vulnerabilidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba primero en staging.&lt;/strong&gt; Cada nuevo plugin se instala en una copia de staging antes de producción. Verifica warnings de PHP, conflictos de JavaScript e impacto en el rendimiento usando Query Monitor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisa el historial de actualizaciones.&lt;/strong&gt; Rechaza cualquier plugin que no haya sido actualizado en los ultimos 6 meses. Verifica si el desarrollador responde a los hilos de soporte, especialmente a reportes de seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefiere snippets de código sobre plugins.&lt;/strong&gt; Si la funcionalidad son 10 lineas de PHP, ponla en un plugin específico del sitio o en &lt;code&gt;functions.php&lt;/code&gt; en lugar de instalar un plugin de 5,000 lineas con su propia página de ajustes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fija los plugins criticos.&lt;/strong&gt; Para plugins de mision critica (cache, SEO, backup), habilita auto-actualizaciones para versiones menores pero prueba las versiones mayores manualmente en staging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorea el impacto en rendimiento.&lt;/strong&gt; Usa Query Monitor o New Relic para medir las consultas de base de datos, peticiones HTTP y uso de memoria de cada plugin. Elimina cualquier cosa que cueste más de lo que aporta.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;sitios-de-revision-de-plugins-de-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitios-de-revision-de-plugins-de-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitios de revision de plugins de WordPress en 2026&lt;/h2&gt;
&lt;p&gt;Antes de instalar un plugin, verifica cruzando multiples fuentes:&lt;/p&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Fuente&lt;/th&gt;&lt;th&gt;Que te dice&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Repositorio WordPress.org&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Conteo de instalaciones, fecha de ultima actualización, versión probada, actividad del foro de soporte&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Patchstack vulnerability database&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;CVEs conocidos, estado de parches, niveles de severidad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;WPScan vulnerability database&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Vulnerabilidades historicas, linea de tiempo de divulgacion&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Plugin Performance Profiler (P3)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Impacto en tiempo de carga, uso de recursos (autotest)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;GitHub / GitLab&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Calidad del código fuente, frecuencia de commits, issues abiertos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;WP Hive&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Puntuaciones de rendimiento y compatibilidad, datos de uso de memoria&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Evita confiar únicamente en listicles de “mejores plugins” que clasifican por comision de afiliado en lugar de merito técnico. La “Vista Avanzada” de WordPress.org para cualquier plugin muestra la tendencia de descargas, instalaciones activas y la tasa de resolución de soporte — estos tres números te dicen más que cualquier artículo de revision.&lt;/p&gt;
&lt;h2 id=&quot;mejores-practicas-para-desarrollo-de-plugins-de-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-practicas-para-desarrollo-de-plugins-de-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores practicas para desarrollo de plugins de WordPress en 2026&lt;/h2&gt;
&lt;p&gt;Si construyes plugins (o contratas desarrolladores que lo hacen), estos estandares separan el trabajo profesional del código amateur:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usa &lt;code&gt;declare(strict_types=1)&lt;/code&gt;&lt;/strong&gt; y funcionalidades de PHP 7.4+ (propiedades tipadas, arrow functions, null coalescing assignment).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sigue los WordPress Coding Standards&lt;/strong&gt; aplicados por PHP_CodeSniffer con el ruleset &lt;code&gt;WordPress&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sanitiza toda entrada&lt;/strong&gt; con &lt;code&gt;sanitize_text_field()&lt;/code&gt;, &lt;code&gt;absint()&lt;/code&gt;, &lt;code&gt;wp_kses()&lt;/code&gt;. Escapa toda salida con &lt;code&gt;esc_html()&lt;/code&gt;, &lt;code&gt;esc_attr()&lt;/code&gt;, &lt;code&gt;esc_url()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa nonces&lt;/strong&gt; para cada envio de formulario y handler AJAX. Verifica con &lt;code&gt;wp_verify_nonce()&lt;/code&gt; o &lt;code&gt;check_ajax_referer()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefijar todo.&lt;/strong&gt; Funciones, clases, constantes y opciones de base de datos deben usar un prefijo único para evitar colisiones de namespace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encola assets correctamente&lt;/strong&gt; con &lt;code&gt;wp_enqueue_script()&lt;/code&gt; y &lt;code&gt;wp_enqueue_style()&lt;/code&gt;. Nunca hardcodees etiquetas &lt;code&gt;&amp;#x3C;script&gt;&lt;/code&gt; o &lt;code&gt;&amp;#x3C;link&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa la REST API&lt;/strong&gt; para AJAX en lugar de &lt;code&gt;admin-ajax.php&lt;/code&gt; en código nuevo. Es más rápida, cacheable y sigue los estandares modernos de WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escribe tests unitarios&lt;/strong&gt; con &lt;code&gt;WP_UnitTestCase&lt;/code&gt;. Apunta a cobertura en todos los métodos publicos y rutas criticas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lo-que-no-debes-instalar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-no-debes-instalar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que NO debes instalar&lt;/h2&gt;
&lt;p&gt;Tan importante como saber que instalar es saber que evitar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plugins de sliders&lt;/strong&gt;: Pesados y malos para el SEO. Usa secciones hero estaticas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins de redes sociales para compartir&lt;/strong&gt;: Muchos cargan scripts externos pesados. Usa enlaces simples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins “todo en uno”&lt;/strong&gt;: Los que prometen seguridad + cache + SEO + backup en un solo plugin generalmente hacen todo de manera mediocre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins abandonados&lt;/strong&gt;: Si no ha tenido una actualización en más de 6 meses, busca una alternativa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins con código obfuscado&lt;/strong&gt;: Si no puedes ver el código fuente, no lo instales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mantenimiento-del-stack-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mantenimiento-del-stack-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mantenimiento del stack de plugins&lt;/h2&gt;
&lt;h3 id=&quot;revision-trimestral&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#revision-trimestral&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Revision trimestral&lt;/h3&gt;
&lt;p&gt;Cada 3 meses, revisa tu lista de plugins activos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Es todavia necesario?&lt;/strong&gt; Si la función ya no se usa, desactiva y elimina.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hay una alternativa mejor?&lt;/strong&gt; El ecosistema evoluciona rápidamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Esta actualizado?&lt;/strong&gt; Plugins sin actualizaciones recientes son riesgos de seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Afecta al rendimiento?&lt;/strong&gt; Usa Query Monitor para identificar plugins lentos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;proceso-de-actualización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-actualización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de actualización&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Lee las notas de la versión antes de actualizar.&lt;/li&gt;
&lt;li&gt;Actualiza primero en un entorno de staging.&lt;/li&gt;
&lt;li&gt;Verifica que nada se rompa.&lt;/li&gt;
&lt;li&gt;Aplica en producción.&lt;/li&gt;
&lt;li&gt;Monitorea durante 24-48 horas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;El stack perfecto de plugins WordPress en 2026 es &lt;strong&gt;minimalista y enfocado&lt;/strong&gt;. No se trata de instalar mas, sino de instalar mejor. Un sitio con 8-12 plugins bien elegidos superara en rendimiento y seguridad a uno con 30 plugins mediocres.&lt;/p&gt;
&lt;p&gt;Recuerda: cada plugin que instalas es una responsabilidad. Elige sabiamente, mantene actualizado y nunca dejes de cuestionar si realmente lo necesitas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda para construir el stack de plugins perfecto para tu negocio? Nuestro equipo de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; puede ayudarte. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>wordpress</category><category>plugins</category><category>security</category><category domain="tag">guía</category><category domain="tag">wordpress</category><category domain="tag">plugins</category><category domain="tag">seguridad</category><category domain="tag">cache</category><category domain="tag">backup</category><category domain="tag">seo</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Configuración de desarrollador WordPress y blindaje de wp-config</title><link>https://wppoland.com/es/ultimate-wordpress-developer-setup/</link><guid isPermaLink="true">https://wppoland.com/es/ultimate-wordpress-developer-setup/</guid><description>Mas alla de la instalación de 5 minutos. Aprende a configurar WordPress para seguridad, depuracion y rendimiento usando constantes de wp-config.php y mu-plugins.</description><pubDate>Sun, 26 Oct 2014 09:23:57 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;La &quot;famosa instalación de 5 minutos&quot; es un eslogan de marketing, no un estándar profesional. Una instalación de WordPress por defecto es ruidosa, no optimizada y a menudo insegura. Como desarrolladores, no solo &quot;instalamos&quot; WordPress; lo **provisionamos**. Esta guía cubre las constantes de configuración esenciales y las técnicas de blindaje que deberian estar en tu boilerplate para cada proyecto de clientes en 2026.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;1-el-poder-de-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-poder-de-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El poder de &lt;code&gt;wp-config.php&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Este es el cerebro de tu instalación. Deja de dejarlo en sus valores por defecto. Cada linea en este archivo es una decision de ingenieria que afecta la seguridad, el rendimiento y la estabilidad de tu sitio.&lt;/p&gt;
&lt;h3 id=&quot;control-de-entorno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#control-de-entorno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Control de entorno&lt;/h3&gt;
&lt;p&gt;Desde WordPress 5.5, &lt;code&gt;WP_ENVIRONMENT_TYPE&lt;/code&gt; es estándar. Usalo para prevenir que errores de desarrollo se filtren a producción.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_ENVIRONMENT_TYPE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;production&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// &apos;local&apos;, &apos;development&apos;, &apos;staging&apos;, &apos;production&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego en tu código:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_get_environment_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;production&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Habilitar Cache, Deshabilitar Errores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta constante es fundamental porque permite que tu código se comporte de manera diferente según el entorno. En desarrollo, puedes mostrar errores y desactivar cache. En producción, todo se blinda automáticamente.&lt;/p&gt;
&lt;h3 id=&quot;seguridad-reforzada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-reforzada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad reforzada&lt;/h3&gt;
&lt;p&gt;Previene que los clientes (o hackers) rompan el sitio a través del escritorio. Estas tres constantes son obligatorias en cada proyecto profesional:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar Editor de Archivos (Editor de Temas/Plugins)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Prevenir Instalacion/Actualizacion de Plugins/Temás (Bueno para despliegues inmutables)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_MODS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Forzar SSL en Admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FORCE_SSL_ADMIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;DISALLOW_FILE_EDIT&lt;/strong&gt; es la más crítica. Sin ella, cualquier usuario con rol de administrador puede inyectar código PHP arbitrario en los archivos del tema o plugin directamente desde el escritorio. Esto es un vector de ataque comun y una fuente frecuente de errores humanos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DISALLOW_FILE_MODS&lt;/strong&gt; va un paso más alla y previene cualquier modificacion de archivos, incluyendo actualizaciones automáticas. Esto es ideal para despliegues basados en Git/Composer donde las actualizaciones se gestionan a través del pipeline de CI/CD.&lt;/p&gt;
&lt;h3 id=&quot;revisiones-de-publicaciónes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#revisiones-de-publicaciónes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Revisiones de publicaciónes&lt;/h3&gt;
&lt;p&gt;Asesino del hinchamiento de la base de datos. Realmente necesitas 100 versiones de la página “Acerca de nosotros”?&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mantener ultimás 10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar completamente (No recomendado)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;constantes-adicionales-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#constantes-adicionales-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Constantes adicionales de seguridad&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Forzar método de actualización directo (evitar FTP)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FS_METHOD&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;direct&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cambiar la tabla de prefijo por defecto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$table_prefix &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wp_8x7k_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Nunca usar &apos;wp_&apos; por defecto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar la carga de archivos no filtrados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ALLOW_UNFILTERED_UPLOADS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar memoria PHP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_MEMORY_LIMIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;256M&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_MAX_MEMORY_LIMIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;512M&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Para admin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;2-depuracion-profesional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-depuracion-profesional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Depuracion profesional&lt;/h2&gt;
&lt;p&gt;Nunca muestres errores en el frontend. Registralos en un archivo seguro.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG_LOG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/tmp/wp-errors.log&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mover log fuera de la raiz web!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG_DISPLAY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar consultas SQL para depurar rendimiento (Desactivar en producción!)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;SAVEQUERIES&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;por-que-mover-el-log-fuera-de-la-raiz-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-mover-el-log-fuera-de-la-raiz-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que mover el log fuera de la raiz web&lt;/h3&gt;
&lt;p&gt;El archivo de log por defecto se crea en &lt;code&gt;wp-content/debug.log&lt;/code&gt;. Este archivo es accesible publicamente en la mayoria de las configuraciónes de servidor. Cualquier persona puede acceder a &lt;code&gt;tusitio.com/wp-content/debug.log&lt;/code&gt; y ver errores PHP que pueden revelar rutas del servidor, nombres de tablas de base de datos, claves API y otra información sensible.&lt;/p&gt;
&lt;p&gt;Mover el log a &lt;code&gt;/tmp/&lt;/code&gt; o a un directorio fuera de la raiz web elimina este riesgo de seguridad por completo.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-depuracion-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-depuracion-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de depuracion avanzadas&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Query Monitor&lt;/strong&gt;: Plugin esencial para identificar consultas SQL lentas, hooks activos, HTTP requests y uso de memoria&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP-CLI debug&lt;/strong&gt;: &lt;code&gt;wp eval &apos;var_dump(WP_DEBUG);&apos;&lt;/code&gt; para verificar configuración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xdebug + VSCode&lt;/strong&gt;: Para depuracion paso a paso en desarrollo local&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;3-limpiando-el-bloat-del-core&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-limpiando-el-bloat-del-core&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Limpiando el “bloat del core”&lt;/h2&gt;
&lt;p&gt;WordPress viene con funciones que el 90% de los sitios empresariales no necesitan: Emojis, oEmbeds y XML-RPC. No instales un plugin para deshabilitarlas. Crea un Must-Use Plugin (&lt;code&gt;wp-content/mu-plugins/lean-core.php&lt;/code&gt;).&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Plugin Name: Lean Core */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 1. Deshabilitar Emojis (Ahorra una solicitud HTTP)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_detection_script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_print_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 2. Deshabilitar XML-RPC (Seguridad)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;xmlrpc_enabled&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 3. Eliminar Version de WP (Seguridad por oscuridad)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 4. Deshabilitar Feeds RSS (Si construyes un sitio brochure)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// function wppoland_disable_feed() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;//    wp_die( &apos;No hay feed disponible, visita nuestra página principal!&apos; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// add_action(&apos;do_feed&apos;, &apos;wppoland_disable_feed&apos;, 1);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 5. Deshabilitar pingbacks (previene ataques DDoS)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;xmlrpc_methods&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $methods ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $methods[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pingback.ping&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $methods;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 6. Eliminar enlaces innecesarios del head&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rsd_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wlwmanifest_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_shortlink_wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_output_link_wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;por-que-un-mu-plugin-y-no-un-plugin-normal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-un-mu-plugin-y-no-un-plugin-normal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que un MU Plugin y no un plugin normal&lt;/h3&gt;
&lt;p&gt;Los Must-Use Plugins (mu-plugins) tienen ventajas criticas sobre plugins normales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Siempre activos&lt;/strong&gt;: No se pueden desactivar desde el escritorio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carga prioritaria&lt;/strong&gt;: Se ejecutan antes que los plugins normales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin actualizaciones automáticas&lt;/strong&gt;: Control total del código&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparencia&lt;/strong&gt;: Cada regla es visible y auditable en el repositorio Git&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;4-el-mito-de-las-sales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-el-mito-de-las-sales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. El “mito” de las sales&lt;/h2&gt;
&lt;p&gt;Conoces las claves de autenticación en &lt;code&gt;wp-config.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AUTH_KEY&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,         &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pon tu frase única aqui&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Hecho&lt;/strong&gt;: Cambiar estas claves cierra inmediatamente la sesion de todos los usuarios. Es la “Opción Nuclear” si un sitio es hackeado. Todos los tokens de sesion existentes se invalidan al instante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consejo Pro&lt;/strong&gt;: Automatiza su rotacion usando un script CLI o Vault si gestionas sitios empresariales. Regenera las sales al menos una vez al año o inmediatamente despues de cualquier incidente de seguridad.&lt;/p&gt;
&lt;p&gt;Genera nuevas sales en: &lt;code&gt;https://api.wordpress.org/secret-key/1.1/salt/&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;5-configuración-de-base-de-datos-optimizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-configuración-de-base-de-datos-optimizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Configuración de base de datos optimizada&lt;/h2&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limpiar papelera automáticamente cada 7 dias (por defecto es 30)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;EMPTY_TRASH_DAYS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Intervalo de autoguardado en segundos (por defecto es 60)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;AUTOSAVE_INTERVAL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Reparar base de datos (usar temporalmente y luego desactivar)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// define( &apos;WP_ALLOW_REPAIR&apos;, true );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-resumen-y-checklist&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-resumen-y-checklist&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Resumen y checklist&lt;/h2&gt;
&lt;p&gt;Antes de lanzar cualquier proyecto:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Establece &lt;code&gt;WP_ENVIRONMENT_TYPE&lt;/code&gt;&lt;/strong&gt; a production&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Establece &lt;code&gt;DISALLOW_FILE_EDIT&lt;/code&gt;&lt;/strong&gt; a true&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limita &lt;code&gt;WP_POST_REVISIONS&lt;/code&gt;&lt;/strong&gt; a un número razonable (5-10)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mueve &lt;code&gt;WP_DEBUG_LOG&lt;/code&gt;&lt;/strong&gt; a una carpeta privada fuera de la raiz web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deshabilita Emojis/XML-RPC&lt;/strong&gt; via código en mu-plugins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fuerza SSL&lt;/strong&gt; en toda el area de administración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personaliza el prefijo de tabla&lt;/strong&gt; para seguridad adicional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regenera sales de seguridad&lt;/strong&gt; despues de cada incidente&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Una instancia WordPress bien configurada es silenciosa, segura y rápida. Cada constante que estableces es una capa de defensa, cada optimización es tiempo de respuesta ganado, y cada linea de bloat eliminada es una superficie de ataque reducida.&lt;/p&gt;
&lt;p&gt;Necesitas una &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; profesional o ayuda con &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt;? &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category><category>security</category><category domain="tag">wp-config</category><category domain="tag">hardening</category><category domain="tag">debugging</category><category domain="tag">environment</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Optimización integral de WordPress - Como acelerar tu sitio? (WPO)</title><link>https://wppoland.com/es/wordpress-optimization-speed-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-optimization-speed-guide/</guid><description>Sitio con carga lenta? Aqui esta la hoja de ruta de optimización: Base de datos, HTTP/3, Cache y Script Defer. Acelera tu servicio de forma efectiva.</description><pubDate>Sat, 25 Oct 2014 09:23:16 GMT</pubDate><content:encoded>&lt;p&gt;“Mi WordPress va lento”. He escuchado esta frase miles de veces. Y generalmente la respuesta no es “instala otro plugin”, sino “limpia lo que tienes”. La optimización de rendimiento (WPO - Web Performance Optimization) es un proceso holistico. Comprimir imágenes no es suficiente si la base de datos “tose” en cada consulta. Necesitas un enfoque sistematico que aborde todos los niveles del stack tecnológico.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Esta es la hoja de ruta completa de optimización WordPress, desde los fundamentos básicos hasta las técnicas avanzadas que utilizan los profesionales en 2026.&lt;/p&gt;
&lt;h2 id=&quot;nivel-1-fundamentos-hosting-y-dns&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-1-fundamentos-hosting-y-dns&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 1: Fundamentos (hosting y DNS)&lt;/h2&gt;
&lt;p&gt;Si tu servidor responde lentamente (TTFB &gt; 600ms), ningun plugin te ayudara. El rendimiento comienza en la infraestructura, y no hay cantidad de optimización frontend que compense un hosting inadecuado.&lt;/p&gt;
&lt;h3 id=&quot;php-actualizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#php-actualizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PHP actualizado&lt;/h3&gt;
&lt;p&gt;Asegurate de estar ejecutando PHP 8.1 o superior. Es hasta 3-4 veces más rápido que el antiguo PHP 5.6. La diferencia en rendimiento es tan dramatica que actualizar PHP es frecuentemente la optimización individual con mayor impacto que puedes realizar. PHP 8.3 ofrece mejoras adicionales con el compilador JIT y optimizaciones de memoria que benefician especialmente a sitios WordPress con lógica compleja.&lt;/p&gt;
&lt;h3 id=&quot;base-de-datos-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#base-de-datos-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Base de datos moderna&lt;/h3&gt;
&lt;p&gt;MySQL 8.0 o MariaDB 10.6+ son requisitos minimos en 2026. MariaDB 11 es preferible para WordPress por su optimizador de consultas superior que maneja mejor las operaciones JOIN complejas que WordPress genera frecuentemente, especialmente en sitios con WooCommerce o muchas taxonomías personalizadas.&lt;/p&gt;
&lt;h3 id=&quot;protocolo-http-moderno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protocolo-http-moderno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protocolo HTTP moderno&lt;/h3&gt;
&lt;p&gt;HTTP/2 o HTTP/3 (QUIC) es obligatorio. Permite al navegador descargar muchos archivos a la vez sobre una sola conexión. HTTP/3 agrega beneficios adicionales como recuperacion más rápida de conexiónes perdidas y mejor rendimiento en redes móviles inestables. Verifica que tu CDN y hosting soporten estos protocolos.&lt;/p&gt;
&lt;h3 id=&quot;dns-rápido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dns-rápido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;DNS rápido&lt;/h3&gt;
&lt;p&gt;Usa un proveedor DNS de alta velocidad como Cloudflare DNS. Un DNS lento agrega cientos de milisegundos a cada peticion inicial. El DNS es frecuentemente un cuello de botella invisible que muchos administradores pasan por alto.&lt;/p&gt;
&lt;h2 id=&quot;nivel-2-frontend-lo-que-ve-el-usuario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-2-frontend-lo-que-ve-el-usuario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 2: Frontend (lo que ve el usuario)&lt;/h2&gt;
&lt;p&gt;Aqui luchamos por la puntuacion de PageSpeed Insights y Core Web Vitals. Estas metricas afectan directamente tu posicionamiento en Google y la experiencia del usuario.&lt;/p&gt;
&lt;h3 id=&quot;minificacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#minificacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Minificacion&lt;/h3&gt;
&lt;p&gt;Elimina espacios, comentarios y caracteres innecesarios de CSS/JS/HTML. Plugins como Autoptimize o WP Rocket hacen esto automáticamente. La minificacion tipicamente reduce el tamaño de los archivos entre un 20-40%, lo que se traduce en tiempos de transferencia significativamente menores.&lt;/p&gt;
&lt;h3 id=&quot;diferir-javascript&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diferir-javascript&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diferir JavaScript&lt;/h3&gt;
&lt;p&gt;Empuja la carga de JavaScript al final (despues de que se cargue el HTML) para que no bloquee el renderizado de la página. El atributo &lt;code&gt;defer&lt;/code&gt; permite al navegador descargar el script sin bloquear el parsing HTML, ejecutandolo solo despues de que el documento este completamente parseado.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Diferir scripts no criticos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script_loader_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tag, $handle) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $defer_handles &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery-migrate&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-embed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;comment-reply&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($handle, $defer_handles)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; defer src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $tag);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tag;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fuentes-optimizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fuentes-optimizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fuentes optimizadas&lt;/h3&gt;
&lt;p&gt;Carga las fuentes de Google localmente o usa &lt;code&gt;font-display: swap&lt;/code&gt; para que el texto sea visible inmediatamente, antes de que la fuente decorativa cargue. Las fuentes web son una de las causas más comunes de CLS (Cumulative Layout Shift) y FOIT (Flash of Invisible Text). Alojar las fuentes localmente también mejora la privacidad y elimina peticiones a servidores externos.&lt;/p&gt;
&lt;h3 id=&quot;imágenes-modernas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-modernas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes modernas&lt;/h3&gt;
&lt;p&gt;Las imágenes representan tipicamente el 50-80% del peso total de la página. Usa formatos modernos como WebP o AVIF que son 30-50% más ligeros que JPG a la misma calidad. WordPress 6.5+ soporta AVIF nativamente. Implementa lazy loading para imágenes que no estan en el viewport inicial y usa &lt;code&gt;srcset&lt;/code&gt; para servir tamaños apropiados según el dispositivo.&lt;/p&gt;
&lt;h3 id=&quot;critical-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#critical-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Critical CSS&lt;/h3&gt;
&lt;p&gt;Extrae y sirve inline el CSS necesario para renderizar el contenido above-the-fold. Esto permite al navegador pintar la parte visible de la página sin esperar a que se descargue toda la hoja de estilos. El resto del CSS se carga de forma asincrona.&lt;/p&gt;
&lt;h2 id=&quot;nivel-3-backend-y-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-3-backend-y-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 3: Backend y base de datos&lt;/h2&gt;
&lt;p&gt;Aqui es donde ocurre la “magia” que no ves pero sientes al trabajar en el panel de administración y en la velocidad de respuesta del servidor.&lt;/p&gt;
&lt;h3 id=&quot;revisiones-controladas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#revisiones-controladas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Revisiones controladas&lt;/h3&gt;
&lt;p&gt;WordPress por defecto guarda versiones infinitas de cada publicación. Si editas un artículo 100 veces, tienes 100 copias en la base de datos. Limita esto en &lt;code&gt;wp-config.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limpieza-de-transients&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limpieza-de-transients&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limpieza de transients&lt;/h3&gt;
&lt;p&gt;Limpia los “transients” antiguos (datos temporales) de la base de datos. Los plugins frecuentemente dejan basura alli que se acumula con el tiempo. Usa WP-CLI para limpiarlos: &lt;code&gt;wp transient delete --expired&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;heartbeat-api-controlada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#heartbeat-api-controlada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Heartbeat API controlada&lt;/h3&gt;
&lt;p&gt;Limita el “pulso” de WordPress (autoguardado, notificaciones del admin) con el plugin “Heartbeat Control” para reducir la carga de CPU del servidor. En sitios con multiples editores simultaneos, el Heartbeat puede generar cientos de peticiones AJAX innecesarias por minuto.&lt;/p&gt;
&lt;h3 id=&quot;object-cache-con-redis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#object-cache-con-redis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Object Cache con Redis&lt;/h3&gt;
&lt;p&gt;Tu sitio no deberia generar PHP para cada visitante. Implementa un sistema de cache a multiples niveles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page Cache&lt;/strong&gt;: Guarda HTML listo en disco del servidor, sirviendo páginas completas sin ejecutar PHP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Object Cache (Redis)&lt;/strong&gt;: Guarda resultados de consultas SQL en RAM. Crucial para &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tiendas WooCommerce&lt;/a&gt; y sitios grandes donde las mismás consultas se repiten constantemente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-de-wp_options&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-wp_options&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de wp_options&lt;/h3&gt;
&lt;p&gt;La tabla &lt;code&gt;wp_options&lt;/code&gt; es uno de los cuellos de botella más comunes. Audita regularmente los datos autoloaded y elimina opciones de plugins desinstalados. Manten el tamaño total de datos autoloaded por debajo de 800KB para un TTFB optimo.&lt;/p&gt;
&lt;h2 id=&quot;nivel-4-técnicas-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-4-técnicas-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 4: Técnicas avanzadas&lt;/h2&gt;
&lt;h3 id=&quot;cdn-content-delivery-network&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cdn-content-delivery-network&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CDN (Content Delivery Network)&lt;/h3&gt;
&lt;p&gt;Si tienes tráfico de todo el mundo, usa Cloudflare u otro CDN para servir archivos desde el servidor más cercano al usuario. Un CDN reduce la latencia en un 50-70% para usuarios geograficamente distantes de tu servidor de origen.&lt;/p&gt;
&lt;h3 id=&quot;bloquear-hotlinking&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloquear-hotlinking&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloquear hotlinking&lt;/h3&gt;
&lt;p&gt;No permitas que otros sitios roben tu ancho de banda mostrando tus imágenes en sus páginas. Configura reglas en &lt;code&gt;.htaccess&lt;/code&gt; o en tu CDN para prevenir el hotlinking de assets.&lt;/p&gt;
&lt;h3 id=&quot;prefetch-y-prerender&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prefetch-y-prerender&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prefetch y prerender&lt;/h3&gt;
&lt;p&gt;Implementa Speculation Rules API para precargar páginas en segundo plano antes de que el usuario haga clic. Esta técnica puede hacer que la navegación se sienta instantanea sin cambios de infraestructura.&lt;/p&gt;
&lt;h3 id=&quot;lazy-loading-inteligente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lazy-loading-inteligente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lazy loading inteligente&lt;/h3&gt;
&lt;p&gt;Mas alla de las imágenes, aplica lazy loading a iframes, videos embebidos y componentes de página que no son visibles inicialmente. Esto reduce el tiempo de carga inicial y el consumo de datos móviles.&lt;/p&gt;
&lt;h2 id=&quot;matriz-de-impacto-optimizaciónes-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#matriz-de-impacto-optimizaciónes-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Matriz de impacto: Optimizaciónes 2026&lt;/h2&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Optimización&lt;/th&gt;&lt;th&gt;Impacto en TTFB&lt;/th&gt;&lt;th&gt;Impacto en LCP&lt;/th&gt;&lt;th&gt;Dificultad&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;PHP 8.3+&lt;/td&gt;&lt;td&gt;-30%&lt;/td&gt;&lt;td&gt;-15%&lt;/td&gt;&lt;td&gt;Baja&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Redis Object Cache&lt;/td&gt;&lt;td&gt;-50%&lt;/td&gt;&lt;td&gt;-20%&lt;/td&gt;&lt;td&gt;Media&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CDN Edge Caching&lt;/td&gt;&lt;td&gt;-70%&lt;/td&gt;&lt;td&gt;-40%&lt;/td&gt;&lt;td&gt;Baja&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AVIF Imágenes&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-25%&lt;/td&gt;&lt;td&gt;Baja&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Critical CSS&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-35%&lt;/td&gt;&lt;td&gt;Media&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Speculation Rules&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-60% (percibido)&lt;/td&gt;&lt;td&gt;Media&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;checklist-de-optimización-rápida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-de-optimización-rápida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist de optimización rápida&lt;/h2&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; PHP 8.1+ activo&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; HTTP/2 o HTTP/3 habilitado&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Redis/Memcached instalado&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Imágenes en WebP/AVIF&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; JavaScript diferido&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; CSS crítico inline&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Revisiones limitadas a 5&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Transients limpios&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; CDN configurado&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Page Cache activo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Recuerda: Un sitio rápido no es un objetivo en si mismo. Es una herramienta para mayor conversión y mejor SEO. Cada 100ms de retraso te cuesta clientes perdidos. La optimización de rendimiento es una inversión continua que genera retornos medibles en tráfico, engagement y ventas.&lt;/p&gt;
&lt;p&gt;Consulta nuestros servicios de &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; y &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad&lt;/a&gt; para una revision profesional de tu sitio. También ofrecemos &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; para mantener tu sitio rápido y seguro de forma continua.&lt;/p&gt;</content:encoded><category>wordpress</category><category>optimization</category><category domain="tag">guide</category><category domain="tag">performance</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Navegación del Panel de WordPress: La Guia Completa de Administración (2026)</title><link>https://wppoland.com/es/wordpress-dashboard-navigation-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-dashboard-navigation-guide/</guid><description>Domina el panel de administración de WordPress como un profesional. Recorrido completo del dashboard, técnicas de personalización, capacidades de roles de usuario y estrategias de protección para clientes.</description><pubDate>Wed, 22 Oct 2014 09:22:25 GMT</pubDate><content:encoded>&lt;h2 id=&quot;configura-tu-panel-de-wordpress-como-un-pro-configuración-a-prueba-de-clientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configura-tu-panel-de-wordpress-como-un-pro-configuración-a-prueba-de-clientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configura tu panel de WordPress como un PRO (configuración a prueba de clientes)&lt;/h2&gt;
&lt;p&gt;Abrir &lt;code&gt;wp-admin&lt;/code&gt; en una instalación nueva es como entrar en una cabina de avion donde la mitad de los botones activan el asiento eyectable. Para desarrolladores, esto es desorden. Para clientes, es ansiedad.&lt;/p&gt;
&lt;p&gt;Una configuración profesional de WordPress no se trata solo del tema; se trata de la experiencia del backend. Aqui esta como configuro el panel para cada clientes de alto valor.&lt;/p&gt;
&lt;h2 id=&quot;1-recorrido-completo-del-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-recorrido-completo-del-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Recorrido Completo del Dashboard&lt;/h2&gt;
&lt;h3 id=&quot;11-la-página-principal-del-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-la-página-principal-del-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1.1 La Página Principal del Dashboard&lt;/h3&gt;
&lt;p&gt;Cuando inicias sesion por primera vez en WordPress (&lt;code&gt;tusitio.com/wp-admin&lt;/code&gt;), te recibe el Dashboard. Este es tu centro de comando, pero a menudo esta lleno de widgets que nunca usaras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Widgets por Defecto del Dashboard:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Panel de Bienvenida&lt;/strong&gt;: Enlaces rápidos para comenzar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;De un Vistazo&lt;/strong&gt;: Conteos de posts y páginas, info del tema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actividad&lt;/strong&gt;: Posts publicados recientemente y comentarios recientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Borrador Rápido&lt;/strong&gt;: Forma rápida de crear un borrador&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eventos y Noticias de WordPress&lt;/strong&gt;: Proximos WordCamps y noticias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estado de Salud del Sitio&lt;/strong&gt;: Avisos de seguridad y rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;12-la-barra-lateral-de-navegación-izquierda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#12-la-barra-lateral-de-navegación-izquierda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1.2 La Barra Lateral de Navegación Izquierda&lt;/h3&gt;
&lt;p&gt;La barra lateral izquierda es tu menú de navegación principal. Entender cada sección es crucial:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Entradas&lt;/strong&gt;: Contenido dinámico con fechas, categorías y etiquetas. Usar para: noticias, artículos, actualizaciones, entradas de blog.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Medios&lt;/strong&gt;: Tu biblioteca de archivos. Imágenes, PDFs, videos, archivos de audio. WordPress organiza por fecha de subida por defecto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Páginas&lt;/strong&gt;: Contenido estatico y jerarquico. Usar para: Acerca de, Contacto, Servicios, Politica de Privacidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comentarios&lt;/strong&gt;: Gestionar todos los comentarios del sitio. Moderación, verificación de spam, respuestas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apariencia&lt;/strong&gt;: Temas, personalización, menús, widgets, editor de temas (en temas clásicos).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt;: Instalar, activar, desactivar y configurar plugins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Usuarios&lt;/strong&gt;: Gestionar cuentas de usuario, roles y perfiles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas&lt;/strong&gt;: Importar/exportar, salud del sitio, exportar datos personales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ajustes&lt;/strong&gt;: Configuración core de WordPress. General, escritura, lectura, comentarios, medios, enlaces permanentes.&lt;/p&gt;
&lt;h3 id=&quot;13-entradas-vs-páginas-la-diferencia-crítica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#13-entradas-vs-páginas-la-diferencia-crítica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1.3 Entradas vs Páginas: La Diferencia Crítica&lt;/h3&gt;
&lt;p&gt;Deja de explicar “cronologico vs estatico.” Eso confunde a la gente. Usa esta analogia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas&lt;/strong&gt; son tu &lt;strong&gt;Casa&lt;/strong&gt;. (Inicio, Acerca de, Contacto). Rara vez se mueven.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entradas&lt;/strong&gt; son tu &lt;strong&gt;Periodico&lt;/strong&gt;. (Noticias, Artículos, Actualizaciones). Uno nuevo sale cada semana.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Diferencias Técnicas:&lt;/strong&gt;&lt;/p&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Caracteristica&lt;/th&gt;&lt;th&gt;Entradas&lt;/th&gt;&lt;th&gt;Páginas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Basado en fecha&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Categorías&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Etiquetas&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Autor&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Opcional&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Feed RSS&lt;/td&gt;&lt;td&gt;Incluido&lt;/td&gt;&lt;td&gt;Excluido&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Jerarquico&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Si (padre/hijo)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Seleccion de plantilla&lt;/td&gt;&lt;td&gt;Limitada&lt;/td&gt;&lt;td&gt;Extensa&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;2-opciones-de-pantalla-el-boton-de-poder-oculto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-opciones-de-pantalla-el-boton-de-poder-oculto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Opciones de Pantalla: El Boton de Poder Oculto&lt;/h2&gt;
&lt;p&gt;El boton más poderoso en WordPress esta oculto en la esquina superior derecha: &lt;strong&gt;Opciones de Pantalla&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;21-opciones-de-pantalla-del-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#21-opciones-de-pantalla-del-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2.1 Opciones de Pantalla del Dashboard&lt;/h3&gt;
&lt;p&gt;Antes de entregar un sitio, ve a &lt;strong&gt;Entradas&lt;/strong&gt; -&gt; &lt;strong&gt;Todas las Entradas&lt;/strong&gt; y desmarca:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Comentarios&lt;/strong&gt; (si estan deshabilitados globalmente)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etiquetas&lt;/strong&gt; (si solo usas Categorías)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autor&lt;/strong&gt; (si es un blog de un solo autor)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto reduce la carga cognitiva. Tu clientes no necesita ver columnas que nunca usara.&lt;/p&gt;
&lt;h3 id=&quot;22-opciones-de-pantalla-del-editor-de-entradas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#22-opciones-de-pantalla-del-editor-de-entradas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2.2 Opciones de Pantalla del Editor de Entradas&lt;/h3&gt;
&lt;p&gt;En el editor de entradas, las Opciones de Pantalla revelan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Categorías&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etiquetas&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imagen Destacada&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extracto&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trackbacks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Campos Personalizados&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comentarios&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slug&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autor&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Consejo Pro&lt;/strong&gt;: Habilita “Campos Personalizados” para gestión avanzada de contenido. Esto desbloquea la capacidad de agregar metadatos a las entradas.&lt;/p&gt;
&lt;h2 id=&quot;3-personalizando-la-interfaz-de-administración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-personalizando-la-interfaz-de-administración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Personalizando la Interfaz de Administración&lt;/h2&gt;
&lt;h3 id=&quot;31-limpiando-los-widgets-del-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#31-limpiando-los-widgets-del-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3.1 Limpiando los widgets del dashboard&lt;/h3&gt;
&lt;p&gt;Por defecto, el Dashboard principal (&lt;code&gt;/wp-admin/index.php&lt;/code&gt;) es un cementerio de widgets inutiles: “Eventos y Noticias de WordPress”, “Borrador Rápido”, “Bienvenida”.&lt;/p&gt;
&lt;p&gt;No solo los minimices. Eliminalos via código. Agrega esto a tu &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_clean_dashboard&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard_primary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;side&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);   &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eventos/Noticias WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard_quick_press&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;side&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Borrador Rápido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard_activity&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Actividad Reciente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;welcome_panel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);      &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Panel de Bienvenida&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_dashboard_setup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_clean_dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;32-agregando-widgets-personalizados-al-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#32-agregando-widgets-personalizados-al-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3.2 Agregando Widgets Personalizados al Dashboard&lt;/h3&gt;
&lt;p&gt;Reemplaza los widgets por defecto con información útil para el clientes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_custom_dashboard_widget&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_add_dashboard_widget&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland_client_widget&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Bienvenido a Tu Sitio Web&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland_client_widget_content&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_dashboard_setup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_add_custom_dashboard_widget&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_client_widget_content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;p&gt;Bienvenido! Necesitas ayuda? Contacta soporte en soporte@ejemplo.com&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;p&gt;Documentacion: &amp;#x3C;a href=&quot;https://docs.ejemplo.com&quot;&gt;Ver Guias&amp;#x3C;/a&gt;&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-capacidades-de-roles-de-usuario-explicadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-capacidades-de-roles-de-usuario-explicadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Capacidades de Roles de Usuario Explicadas&lt;/h2&gt;
&lt;p&gt;Diferentes roles de usuario ven diferentes secciones del dashboard. Entender esto es crucial para sitios de clientes.&lt;/p&gt;
&lt;h3 id=&quot;41-visibilidad-del-menú-basada-en-roles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#41-visibilidad-del-menú-basada-en-roles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4.1 Visibilidad del Menú Basada en Roles&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Administrador&lt;/strong&gt;: Acceso completo a todos los elementos del menú
&lt;strong&gt;Editor&lt;/strong&gt;: Entradas, Medios, Páginas, Comentarios, Perfil
&lt;strong&gt;Autor&lt;/strong&gt;: Entradas, Medios, Comentarios (propios), Perfil
&lt;strong&gt;Colaborador&lt;/strong&gt;: Entradas (agregar/editar propias, pero no publicar), Perfil
&lt;strong&gt;Suscriptor&lt;/strong&gt;: Solo Perfil&lt;/p&gt;
&lt;h3 id=&quot;42-limpieza-del-menú-admin-por-rol&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#42-limpieza-del-menú-admin-por-rol&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4.2 Limpieza del Menú Admin por Rol&lt;/h3&gt;
&lt;p&gt;Si tu clientes no deberia tocar “Herramientas” o “Ajustes”, ocultalos. Un simple fragmento es más seguro y ligero que un plugin:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tools.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;options-general.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;43-ocultando-elementos-específicos-del-submenu&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#43-ocultando-elementos-específicos-del-submenu&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4.3 Ocultando Elementos Específicos del Submenu&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_hide_submenu_items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_submenu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;themes.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;themes.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Seleccion de tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_submenu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;themes.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;customize.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Personalizador&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_submenu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugins.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugin-editor.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Editor de plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_hide_submenu_items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-metaboxes-y-opciones-de-pantalla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-metaboxes-y-opciones-de-pantalla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Metaboxes y Opciones de Pantalla&lt;/h2&gt;
&lt;h3 id=&quot;51-entendiendo-los-metaboxes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#51-entendiendo-los-metaboxes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5.1 Entendiendo los Metaboxes&lt;/h3&gt;
&lt;p&gt;Los metaboxes son las cajas de contenido en los editores de entradas/páginas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Publicar&lt;/strong&gt;: Guardar, previsualizar, programar, visibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formato&lt;/strong&gt;: Seleccion de formato de entrada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Categorías&lt;/strong&gt;: Asignacion de taxonomía&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etiquetas&lt;/strong&gt;: Gestión de etiquetas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imagen Destacada&lt;/strong&gt;: Miniatura de la entrada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extracto&lt;/strong&gt;: Entrada de extracto manual&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;52-eliminando-metaboxes-programaticamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#52-eliminando-metaboxes-programaticamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5.2 Eliminando Metaboxes Programaticamente&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_remove_post_metaboxes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;postcustom&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Campos personalizados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;trackbacksdiv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Trackbacks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;commentstatusdiv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Discusion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;commentsdiv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Comentarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slugdiv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Slug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;authordiv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Autor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_post_metaboxes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-personalización-del-menú-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-personalización-del-menú-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Personalización del Menú Admin&lt;/h2&gt;
&lt;h3 id=&quot;61-reordenando-elementos-del-menú&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#61-reordenando-elementos-del-menú&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6.1 Reordenando Elementos del Menú&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_custom_menu_order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($menu_order) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$menu_order) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;index.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Dashboard&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Entradas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;edit.php?post_type=page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Páginas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;upload.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Medios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;separator1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;themes.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Apariencia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;plugins.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;users.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Usuarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;tools.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Herramientas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;options-general.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ajustes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom_menu_order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_true&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;menu_order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_custom_menu_order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;62-renombrando-elementos-del-menú&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#62-renombrando-elementos-del-menú&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6.2 Renombrando Elementos del Menú&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_rename_menus&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $menu;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $menu[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Articulos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Renombrar Entradas a Articulos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $menu[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Archivos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Renombrar Medios a Archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_rename_menus&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-protegiendo-el-dashboard-para-clientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-protegiendo-el-dashboard-para-clientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Protegiendo el Dashboard para Clientes&lt;/h2&gt;
&lt;h3 id=&quot;71-eliminando-elementos-de-menú-peligrosos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#71-eliminando-elementos-de-menú-peligrosos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7.1 Eliminando Elementos de Menú “Peligrosos”&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_client_proof_dashboard&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_add_themes_utility_last&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;101&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_add_pluginutility_last&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;101&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_notices&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;update_nag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_client_proof_dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;72-redireccion-personalizada-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#72-redireccion-personalizada-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7.2 Redireccion Personalizada de Login&lt;/h3&gt;
&lt;p&gt;Redirige a los clientes a una página específica despues del login:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_login_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($redirect_to, $request, $user) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; is_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; admin_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edit.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;elseif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;author&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; admin_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post-new.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $redirect_to;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_login_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;73-personalización-del-pie-de-página-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#73-personalización-del-pie-de-página-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7.3 Personalización del Pie de Página Admin&lt;/h3&gt;
&lt;p&gt;Reemplaza “Gracias por crear con WordPress” con tu marca:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_custom_admin_footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;span id=&quot;footer-thankyou&quot;&gt;Construido por WPPoland. Necesitas ayuda? Contactanos en soporte@wppoland.com&amp;#x3C;/span&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_footer_text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_custom_admin_footer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;8-consideraciones-del-editor-de-bloques-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-consideraciones-del-editor-de-bloques-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Consideraciones del Editor de Bloques (Gutenberg)&lt;/h2&gt;
&lt;h3 id=&quot;81-cambios-de-full-site-editing-fse&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#81-cambios-de-full-site-editing-fse&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8.1 Cambios de Full Site Editing (FSE)&lt;/h3&gt;
&lt;p&gt;En temas de bloques, el menú de Apariencia cambia significativamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Editor&lt;/strong&gt;: Interfaz de edicion completa del sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patrones&lt;/strong&gt;: Patrones de bloques reutilizables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plantillas&lt;/strong&gt;: Plantillas del sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partes de Plantilla&lt;/strong&gt;: Partes de cabecera, pie de página, barra lateral&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;82-deshabilitando-el-editor-de-bloques-para-tipos-de-post-específicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#82-deshabilitando-el-editor-de-bloques-para-tipos-de-post-específicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8.2 Deshabilitando el Editor de Bloques para Tipos de Post Específicos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_disable_gutenberg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($use_block_editor, $post_type) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($post_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Usar editor clasico para páginas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $use_block_editor;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;use_block_editor_for_post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_disable_gutenberg&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;9-solución-de-problemás-del-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-solución-de-problemás-del-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Solución de Problemás del Dashboard&lt;/h2&gt;
&lt;h3 id=&quot;91-pantalla-blanca-de-la-muerte-en-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#91-pantalla-blanca-de-la-muerte-en-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9.1 Pantalla Blanca de la Muerte en Admin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Desactivar todos los plugins via FTP (renombrar carpeta &lt;code&gt;/plugins&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Cambiar al tema por defecto&lt;/li&gt;
&lt;li&gt;Verificar logs de errores PHP&lt;/li&gt;
&lt;li&gt;Aumentar limite de memoria&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;92-elementos-de-menú-faltantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#92-elementos-de-menú-faltantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9.2 Elementos de Menú Faltantes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Verificar capacidades del rol de usuario&lt;/li&gt;
&lt;li&gt;Conflictos de plugins&lt;/li&gt;
&lt;li&gt;Código personalizado eliminando menús&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;93-dashboard-lento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#93-dashboard-lento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9.3 Dashboard Lento&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Problemás de cache de objetos&lt;/li&gt;
&lt;li&gt;Demasiados widgets del dashboard&lt;/li&gt;
&lt;li&gt;Sobrecarga de plugins&lt;/li&gt;
&lt;li&gt;Bloat de base de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;10-endurecimiento-avanzado-de-seguridad-para-el-panel-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-endurecimiento-avanzado-de-seguridad-para-el-panel-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Endurecimiento Avanzado de Seguridad para el Panel Admin&lt;/h2&gt;
&lt;p&gt;Asegurar el panel de administración de WordPress es crucial para proteger todo tu sitio web. Implementa autenticación de dos factores, restriccion de acceso por IP y cabeceras de seguridad en el admin.&lt;/p&gt;
&lt;h3 id=&quot;101-implementando-autenticación-de-dos-factores-2fa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#101-implementando-autenticación-de-dos-factores-2fa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10.1 Implementando Autenticación de Dos Factores (2FA)&lt;/h3&gt;
&lt;p&gt;No recomendamos instalar plugins de seguridad. Endurecemos a nivel de servidor (contrasenas fuertes, intentos de login limitados via servidor/fail2ban, respaldos). Si necesitas 2FA, usa una solución minima o funciones integradas del hosting donde esten disponibles.&lt;/p&gt;
&lt;h3 id=&quot;102-restringiendo-acceso-admin-por-dirección-ip&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#102-restringiendo-acceso-admin-por-dirección-ip&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10.2 Restringiendo Acceso Admin por Dirección IP&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Usando .htaccess para Restricciones de IP:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Restringir wp-admin por IP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-login.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; Deny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Allow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Deny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Allow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 192&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;168&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Allow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 203&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;113&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;admin-ajax.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; Allow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Deny&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    Allow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;11-optimización-de-rendimiento-para-el-panel-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#11-optimización-de-rendimiento-para-el-panel-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;11. Optimización de Rendimiento para el Panel Admin&lt;/h2&gt;
&lt;p&gt;Un panel de administración lento afecta la productividad y la experiencia del usuario. Estas optimizaciones aceleraran significativamente tu backend de WordPress, incluyendo carga diferida de widgets, reduccion de consultas a la base de datos e implementación de cache de objetos.&lt;/p&gt;
&lt;h2 id=&quot;12-consideraciones-de-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#12-consideraciones-de-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;12. Consideraciones de Accesibilidad&lt;/h2&gt;
&lt;p&gt;Crear una interfaz admin accesible asegura que todos los usuarios puedan gestionar su sitio web efectivamente, independientemente de sus capacidades fisicas. Implementa navegación por teclado, optimización para lectores de pantalla y soporte de alto contraste.&lt;/p&gt;
&lt;h2 id=&quot;13-consideraciones-de-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#13-consideraciones-de-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;13. Consideraciones de Multisite&lt;/h2&gt;
&lt;p&gt;WordPress Multisite introduce complejidad adicional a la navegación y gestión del dashboard. Entiende las diferencias entre Admin de Red vs Admin de Sitio, y como personalizar menús para super administradores.&lt;/p&gt;
&lt;h2 id=&quot;14-mejores-prácticas-para-proyectos-de-personalización-del-dashboard&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#14-mejores-prácticas-para-proyectos-de-personalización-del-dashboard&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;14. Mejores Prácticas para Proyectos de Personalización del Dashboard&lt;/h2&gt;
&lt;p&gt;Cuando emprendas proyectos significativos de personalización del dashboard, sigue estas mejores prácticas para asegurar la mantenibilidad y satisfaccion del clientes: organización del código en plugins MU, control de versiones y documentación completa dentro del dashboard.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Un dashboard generico dice “Instale un tema.” Un dashboard curado dice “Construi una plataforma para tu negocio.” Invierte el tiempo en limpiarlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puntos Clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa Opciones de Pantalla para simplificar&lt;/li&gt;
&lt;li&gt;Personaliza por rol de usuario&lt;/li&gt;
&lt;li&gt;Elimina elementos de menú peligrosos para clientes&lt;/li&gt;
&lt;li&gt;Agrega widgets personalizados utiles&lt;/li&gt;
&lt;li&gt;Mantien una marca consistente&lt;/li&gt;
&lt;li&gt;Documenta las personalizaciónes para tu equipo&lt;/li&gt;
&lt;li&gt;Implementa endurecimiento de seguridad&lt;/li&gt;
&lt;li&gt;Optimiza el rendimiento&lt;/li&gt;
&lt;li&gt;Considera la accesibilidad&lt;/li&gt;
&lt;li&gt;Planifica para multisite si es necesario&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dominar el panel de WordPress lo transforma de una interfaz confusa en un sistema de gestión de contenido poderoso y amigable para el clientes.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Última Actualización: 29 de enero de 2026&lt;/em&gt;
&lt;em&gt;Versión de la Guia: 2.0&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Explora nuestro &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>wordpress</category><category>beginners</category><category>tutorials</category><category domain="tag">training</category><category domain="tag">tutorial</category><category domain="tag">dashboard</category><category domain="tag">admin</category><category domain="tag">user-interface</category><category domain="tag">customization</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Migración y multisite: Gestión avanzada de WordPress</title><link>https://wppoland.com/es/wordpress-migration-multisite-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-migration-multisite-guide/</guid><description>Como mover un sitio a un nuevo hosting de forma segura? Cuando vale la pena activar una red (Multisite)? Guia para administradores.</description><pubDate>Fri, 26 Sep 2014 09:27:37 GMT</pubDate><content:encoded>&lt;p&gt;Dos temas que asustan a los administradores principiantes: “Como muevo un sitio sin romper nada?” y “Que es este magico Multisite y lo necesito?”. Vamos a abordarlos.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-migración-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-migración-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: Migración de WordPress&lt;/h2&gt;
&lt;p&gt;Mover un sitio (por ejemplo, del servidor local a producción o cambiando de hosting) es un proceso de 3 pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Archivos:&lt;/strong&gt; Copie todo desde &lt;code&gt;public_html&lt;/code&gt; (via FTP).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base de datos:&lt;/strong&gt; Exporte el archivo &lt;code&gt;.sql&lt;/code&gt; (por ejemplo, a través de phpMyAdmin).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambio de dominio (momento clave!):&lt;/strong&gt; WordPress almacena la dirección del sitio en muchos lugares de la base de datos (en &lt;code&gt;wp_options&lt;/code&gt;, pero también en el contenido de posts como enlaces de imágenes).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Error de principiante:&lt;/strong&gt; Editar manualmente el archivo SQL en el bloc de notas. Esto rompe los “datos serializados” (arrays serializados) de plugins y widgets.
&lt;strong&gt;Método profesional:&lt;/strong&gt; Use &lt;strong&gt;WP-CLI&lt;/strong&gt; (&lt;code&gt;wp search-replace &apos;viejo.com&apos; &apos;nuevo.com&apos;&lt;/code&gt;) o &lt;strong&gt;Better Search Replace&lt;/strong&gt;. Mantienen la integridad de los datos.&lt;/p&gt;
&lt;h3 id=&quot;proceso-detallado-de-migración-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-detallado-de-migración-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso detallado de migración paso a paso&lt;/h3&gt;
&lt;h4 id=&quot;paso-1-preparacion-y-respaldo-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-preparacion-y-respaldo-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Preparacion y respaldo completo&lt;/h4&gt;
&lt;p&gt;Antes de tocar cualquier cosa, cree un respaldo completo de ambos entornos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## En el servidor de origen&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; respaldo-origen.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; respaldo-archivos.tar.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue ambos archivos a su computadora local como seguro adicional.&lt;/p&gt;
&lt;h4 id=&quot;paso-2-transferencia-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-transferencia-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Transferencia de archivos&lt;/h4&gt;
&lt;p&gt;Copie todos los archivos al nuevo servidor. Para sitios grandes, evite FTP y use SSH:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Usando rsync para transferencia eficiente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ssh&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /ruta/local/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@nuevo-servidor:/ruta/destino/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rsync es superior a FTP porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo transfiere archivos que han cambiado&lt;/li&gt;
&lt;li&gt;Mantiene permisos de archivo&lt;/li&gt;
&lt;li&gt;Puede reanudar transferencias interrumpidas&lt;/li&gt;
&lt;li&gt;Es significativamente más rápido para grandes cantidades de archivos&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;paso-3-importacion-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-importacion-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Importacion de base de datos&lt;/h4&gt;
&lt;p&gt;Importe la base de datos en el nuevo servidor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Via WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; respaldo-origen.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## O via linea de comandos MySQL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -u&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; nombre_db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; respaldo-origen.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;paso-4-buscar-y-reemplazar-el-dominio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-buscar-y-reemplazar-el-dominio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Buscar y reemplazar el dominio&lt;/h4&gt;
&lt;p&gt;Este es el paso crítico. Nunca haga esto manualmente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Con WP-CLI (método recomendado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://sitio-viejo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://sitio-nuevo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --precise&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Vista previa sin hacer cambios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://sitio-viejo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://sitio-nuevo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --precise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La opción &lt;code&gt;--precise&lt;/code&gt; asegura que los datos serializados se manejen correctamente, actualizando los contadores de longitud de cadena en los arrays serializados de PHP.&lt;/p&gt;
&lt;h4 id=&quot;paso-5-actualizar-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-actualizar-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Actualizar wp-config.php&lt;/h4&gt;
&lt;p&gt;Actualice las credenciales de la base de datos en el nuevo servidor:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_NAME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nueva_base_datos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_USER&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nuevo_usuario&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_PASSWORD&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nueva_contrasena&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DB_HOST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;localhost&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;paso-6-verificación-post-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-6-verificación-post-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 6: Verificación post-migración&lt;/h4&gt;
&lt;p&gt;Despues de la migración, verifique:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Página principal&lt;/strong&gt;: Carga correctamente sin errores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Panel de administración&lt;/strong&gt;: Puede iniciar sesion y navegar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces internos&lt;/strong&gt;: Los enlaces apuntan al nuevo dominio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imágenes&lt;/strong&gt;: Todas las imágenes se muestran correctamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formularios&lt;/strong&gt;: Los formularios de contacto envian correctamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins&lt;/strong&gt;: Todos los plugins estan activos y funcionando&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSL&lt;/strong&gt;: El certificado SSL esta configurado correctamente&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;migración-con-tiempo-de-inactividad-minimo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-con-tiempo-de-inactividad-minimo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración con tiempo de inactividad minimo&lt;/h3&gt;
&lt;p&gt;Para sitios de producción, puede minimizar el tiempo de inactividad:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prepare todo en el nuevo servidor&lt;/strong&gt; con el dominio viejo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Haga una última sincronizacion&lt;/strong&gt; de base de datos justo antes del cambio DNS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambie los registros DNS&lt;/strong&gt; para apuntar al nuevo servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Espere la propagacion DNS&lt;/strong&gt; (generalmente 4-48 horas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use un TTL bajo&lt;/strong&gt; en los registros DNS antes de la migración (300 segundos)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;parte-2-copias-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-copias-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: Copias de seguridad&lt;/h2&gt;
&lt;p&gt;La regla 3-2-1:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3&lt;/strong&gt; copias de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2&lt;/strong&gt; medios diferentes (ej. servidor + nube).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt; copia fuera del sitio (fuera de la oficina).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No dependa solo del hosting. Instale &lt;strong&gt;UpdraftPlus&lt;/strong&gt; o &lt;strong&gt;Duplicator&lt;/strong&gt; y envie copias a Google Drive/Dropbox. Es su poliza de seguro contra ataques de hackers o incendios en salas de servidores en Estrasburgo (saludos a OVH).&lt;/p&gt;
&lt;h3 id=&quot;estrategia-de-respaldo-profesional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-respaldo-profesional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de respaldo profesional&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Respaldos diarios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Base de datos completa&lt;/li&gt;
&lt;li&gt;Archivos modificados (incremental)&lt;/li&gt;
&lt;li&gt;Retencion: 30 dias&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Respaldos semanales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todos los archivos y base de datos&lt;/li&gt;
&lt;li&gt;Retencion: 12 semanas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Respaldos mensuales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Respaldo completo del sitio&lt;/li&gt;
&lt;li&gt;Retencion: 12 meses&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;automatizacion-de-respaldos-con-wp-cli&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-de-respaldos-con-wp-cli&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion de respaldos con WP-CLI&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Script de respaldo automatizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;FECHA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;SITIO&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/var/www/html&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;DESTINO&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/respaldos/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$FECHA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $DESTINO&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Exportar base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $SITIO &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $DESTINO&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/db-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$FECHA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Comprimir archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $DESTINO&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/archivos-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$FECHA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.tar.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -C&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $SITIO &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Subir a S3 (opcional)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;aws&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; s3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $DESTINO&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; s3://mi-bucket/respaldos/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$FECHA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --recursive&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;prueba-de-restauracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prueba-de-restauracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prueba de restauracion&lt;/h3&gt;
&lt;p&gt;Un respaldo que no ha probado no es un respaldo. Programe pruebas de restauracion trimestrales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Configure un entorno de staging&lt;/li&gt;
&lt;li&gt;Restaure el respaldo más reciente&lt;/li&gt;
&lt;li&gt;Verifique que todo funciona correctamente&lt;/li&gt;
&lt;li&gt;Documente el tiempo que tomo la restauracion&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;parte-3-wordpress-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-wordpress-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: WordPress Multisite&lt;/h2&gt;
&lt;p&gt;Multisite (MU) es una funcionalidad que permite ejecutar 100, 1000 o un millon de sitios en &lt;strong&gt;una&lt;/strong&gt; instalación de WordPress.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un conjunto de archivos (core, temas, plugins).&lt;/li&gt;
&lt;li&gt;Una base de datos (con tablas separadas para cada sitio).&lt;/li&gt;
&lt;li&gt;Un super-administrador.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cuando usarlo?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiene una red de sitios de franquicia (ej. &lt;code&gt;nuevayork.empresa.com&lt;/code&gt;, &lt;code&gt;boston.empresa.com&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Es una universidad dando un blog a cada estudiante/profesor.&lt;/li&gt;
&lt;li&gt;Ejecuta un servicio multilingue (aunque WPML/Polylang en una sola instalación a menudo funciona mejor aqui).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cuando NO usarlo?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cuando tiene 5 sitios para clientes completamente diferentes. Si un sitio “muere” (error PHP), todos caen. La base de datos de usuarios compartida también puede ser problematica.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Multisite es una herramienta poderosa, pero requiere un servidor solido y conocimiento de administración. No lo habilite “por diversión”.&lt;/p&gt;
&lt;h3 id=&quot;configuración-de-multisite-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-multisite-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de Multisite paso a paso&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Habilitar Multisite en wp-config.php:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_ALLOW_MULTISITE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ir a Herramientas &gt; Configuración de red&lt;/strong&gt; en el panel de WordPress&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Elegir entre subdominios o subdirectorios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Subdominios: &lt;code&gt;sitio1.midominio.com&lt;/code&gt; (requiere wildcard DNS)&lt;/li&gt;
&lt;li&gt;Subdirectorios: &lt;code&gt;midominio.com/sitio1/&lt;/code&gt; (más fácil de configurar)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Agregar las constantes generadas a wp-config.php y .htaccess&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;gestión-de-plugins-en-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-plugins-en-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de plugins en Multisite&lt;/h3&gt;
&lt;p&gt;En Multisite, los plugins pueden activarse de dos formas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Network Activate&lt;/strong&gt;: El plugin esta activo en TODOS los sitios de la red&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-Site Activate&lt;/strong&gt;: Cada administrador de sitio puede activar/desactivar plugins individualmente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mejor práctica&lt;/strong&gt;: Active plugins esenciales de seguridad y rendimiento a nivel de red. Permita que los administradores de sitios individuales gestiónen plugins de funcionalidad.&lt;/p&gt;
&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Implementar exitosamente estas técnicas requiere un enfoque sistematico que equilibre la optimización técnica con la calidad del contenido.&lt;/p&gt;
&lt;h3 id=&quot;configuración-técnica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-técnica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración técnica&lt;/h3&gt;
&lt;p&gt;Comience realizando una auditoria exhaustiva de su configuración actual. Use herramientas como Google Search Console, Screaming Frog o SEMrush para identificar problemas existentes y oportunidades. Documente sus metricas de referencia incluyendo rankings actuales, tráfico organico y tasas de conversión.&lt;/p&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización de contenido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de investigación de palabras clave&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifique palabras clave primarias y secundarias&lt;/li&gt;
&lt;li&gt;Analice la intencion de búsqueda para cada termino&lt;/li&gt;
&lt;li&gt;Mapee palabras clave al contenido existente&lt;/li&gt;
&lt;li&gt;Identifique brechas de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación/Optimización de contenido&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escriba títulos y meta descripciones atractivos&lt;/li&gt;
&lt;li&gt;Estructure el contenido con jerarquía de encabezados apropiada&lt;/li&gt;
&lt;li&gt;Incluya enlaces internos y externos relevantes&lt;/li&gt;
&lt;li&gt;Optimice imágenes con texto alt descriptivo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asegure la responsividad móvil&lt;/li&gt;
&lt;li&gt;Mejore la velocidad de carga&lt;/li&gt;
&lt;li&gt;Implemente marcado de esquema&lt;/li&gt;
&lt;li&gt;Corrija errores de rastreo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;medicion-del-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-del-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion del éxito&lt;/h3&gt;
&lt;p&gt;Rastree estos indicadores clave de rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crecimiento del tráfico organico&lt;/li&gt;
&lt;li&gt;Mejoras en rankings de palabras clave&lt;/li&gt;
&lt;li&gt;Tasas de clics (CTR)&lt;/li&gt;
&lt;li&gt;Tasas de conversión&lt;/li&gt;
&lt;li&gt;Tasas de rebote&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La monitorización regular le permite ajustar su estrategia basandose en lo que funciona y lo que no. El SEO es un proceso continuo, no una tarea única. Conozca más sobre la &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO, GEO y AEO&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>wordpress</category><category>advanced</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Seguridad y rendimiento WordPress - Guia completa del administrador 2025</title><link>https://wppoland.com/es/wordpress-security-performance-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-security-performance-guide/</guid><description>Guia completa para administradores WordPress. Aprende a asegurar tu sitio sin plugins, configurar Google Search Console y acelerar la carga.</description><pubDate>Thu, 25 Sep 2014 09:28:26 GMT</pubDate><content:encoded>&lt;p&gt;Administrar un sitio WordPress profesional es más que escribir contenido. Es trabajo continuo sobre tres pilares: &lt;strong&gt;Seguridad&lt;/strong&gt;, &lt;strong&gt;Visibilidad&lt;/strong&gt; (Analitica/SEO) y &lt;strong&gt;Rendimiento&lt;/strong&gt;. Este artículo expande presentaciones de formacion, recopilando las mejores prácticas utilizadas por administradores y desarrolladores profesionales en 2025 y 2026. Cada sección proporciona instrucciones accionables que puedes implementar hoy para mejorar significativamente la postura de seguridad y el rendimiento de tu sitio.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-seguridad-hardening&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-seguridad-hardening&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: Seguridad (hardening)&lt;/h2&gt;
&lt;p&gt;Muchas personas piensan que se necesitan costosos plugins “Security Pro” para asegurar WordPress. Eso es un mito. Las mejores protecciónes funcionan a nivel de servidor, antes de que los hackers siquiera toquen los archivos de WordPress. Un enfoque por capas que comienza en la infraestructura y se mueve hacia la aplicación es significativamente más efectivo que depender exclusivamente de plugins.&lt;/p&gt;
&lt;h3 id=&quot;1-higiene-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-higiene-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Higiene digital&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Actualizaciones&lt;/strong&gt;: Es obvio, pero el 60% de los sitios hackeados estan desactualizados. Usar PHP antiguo (7.x) te convierte en un objetivo. Actualiza a PHP 8.2 o 8.3 en tu servidor. Las versiones más recientes no solo son más rápidas, sino que reciben parches de seguridad activos que protegen contra vulnerabilidades conocidas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Temás y plugins&lt;/strong&gt;: Elimina (no solo desactiva) todo lo que no uses. Cada archivo en el servidor es un vector de ataque potencial. Los plugins desactivados siguen siendo ejecutables si un atacante accede directamente a sus archivos, por lo que la eliminación completa es la única opción segura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fuente de descarga&lt;/strong&gt;: Nunca descargues plugins “Premium gratis” de torrents (Nulled). Son troyanos el 99% de las veces. Contienen puertas traseras, mineros de criptomonedas y código de redirección malicioso que puede comprometer completamente tu sitio y los datos de tus usuarios.&lt;/p&gt;
&lt;h3 id=&quot;2-seguridad-de-configuración-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-seguridad-de-configuración-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Seguridad de configuración (wp-config.php)&lt;/h3&gt;
&lt;p&gt;Agrega estas lineas a tu archivo de configuración para bloquear ataques tipicos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bloquear edicion de archivos desde el admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Forzar SSL para login y panel&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;FORCE_SSL_ADMIN&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cambiar prefijo de base de datos (hazlo SOLO durante la instalacion!)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$table_prefix &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wp_a1b2_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En lugar del predeterminado wp_&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;configuraciónes-adicionales-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuraciónes-adicionales-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuraciónes adicionales de seguridad&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar XML-RPC si no lo necesitas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;XMLRPC_ENABLED&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Limitar revisiones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_POST_REVISIONS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar la exposicion de la versión de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-firewall-htaccess&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-firewall-htaccess&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Firewall (.htaccess)&lt;/h3&gt;
&lt;p&gt;El archivo &lt;code&gt;.htaccess&lt;/code&gt; (en servidores Apache/LiteSpeed) es tu primer guardia. Configura reglas que bloqueen acceso a archivos sensibles antes de que cualquier código PHP se ejecute.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bloquear acceso a archivos sensibles:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;(^\.|wp-config\.php|xmlrpc\.php)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; deny,allow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Deny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-cabeceras-de-seguridad-http&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-cabeceras-de-seguridad-http&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Cabeceras de seguridad HTTP&lt;/h3&gt;
&lt;p&gt;Implementa cabeceras de seguridad que protejan contra ataques comunes como XSS, clickjacking y MIME sniffing:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Cabeceras de seguridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; X-Content-Type-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;nosniff&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; X-Frame-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;SAMEORIGIN&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; X-XSS-Protection &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; mode=block&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Referrer-Policy &quot;strict-origin-when-cross-origin&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;5-autenticación-de-dos-factores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-autenticación-de-dos-factores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Autenticación de dos factores&lt;/h3&gt;
&lt;p&gt;Implementa 2FA para todas las cuentas de administrador. Esto agrega una capa de protección adicional que previene el acceso no autorizado incluso si las credenciales son comprometidas. Plugins como WP 2FA o Google Authenticator proporcionan esta funcionalidad sin complicacion.&lt;/p&gt;
&lt;h2 id=&quot;parte-2-analitica-y-herramientas-de-webmaster&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-analitica-y-herramientas-de-webmaster&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: Analitica y herramientas de webmaster&lt;/h2&gt;
&lt;p&gt;No puedes gestionar lo que no mides. Google Search Console (GSC) y Google Analytics 4 (GA4) son los ojos y oidos de tu negocio en linea.&lt;/p&gt;
&lt;h3 id=&quot;google-search-console-gsc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-search-console-gsc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Search Console (GSC)&lt;/h3&gt;
&lt;p&gt;El único lugar donde Google “habla” contigo sobre tu sitio. Es la herramienta más importante para cualquier administrador WordPress que se preocupe por la visibilidad en búsquedas.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sitemap&lt;/strong&gt;: Asegurate de haber enviado tu sitemap (generalmente &lt;code&gt;dominio.com/sitemap_index.xml&lt;/code&gt; generado por tu framework SEO). Verifica que todas las URLs importantes esten incluidas y que no haya errores de procesamiento.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Errores de indexacion&lt;/strong&gt;: Revisa la sección “Páginas” semanalmente. Busca errores 404 (no encontrado) y 5xx (errores del servidor). Cada error es un clientes perdido y una señal negativa para Google.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Core Web Vitals&lt;/strong&gt;: GSC te dira directamente si tu sitio es lo suficientemente rápido (LCP) y visualmente estable (CLS). Presta atención especial a las metricas de campo (datos de usuarios reales) que son más importantes que las metricas de laboratorio.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;google-analytics-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-analytics-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Analytics 4&lt;/h3&gt;
&lt;p&gt;GA4 difiere del antiguo UA. Se enfoca en &lt;em&gt;eventos&lt;/em&gt; en lugar de pageviews, lo que requiere un cambio de mentalidad en como medimos el éxito de un sitio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No solo midas “visitas”. Configura &lt;strong&gt;conversiones&lt;/strong&gt;: envio de formulario, clic en telefono, descarga de PDF. Estos eventos te dicen cuantos visitantes se convierten en clientes o leads.&lt;/li&gt;
&lt;li&gt;Recuerda el GDPR. Usa “Consent Mode v2” para recopilar datos legalmente. Sin consentimiento adecuado, arriesgas multas significativas y perdida de confianza del usuario.&lt;/li&gt;
&lt;li&gt;Implementa eventos personalizados que reflejen los objetivos específicos de tu negocio: solicitudes de cotizacion, suscripciones a newsletter, clics en WhatsApp, reservas de citas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-3-optimización-wpo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-optimización-wpo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Optimización (WPO)&lt;/h2&gt;
&lt;p&gt;Un sitio rápido significa rankings más altos en Google y mayor conversión. Cada 100ms de mejora en el tiempo de carga se traduce en mejoras medibles en engagement y ventas.&lt;/p&gt;
&lt;h3 id=&quot;1-el-hosting-es-fundamental&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-hosting-es-fundamental&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El hosting es fundamental&lt;/h3&gt;
&lt;p&gt;No puedes optimizar un sitio en hosting de $5/año. Busca hosting con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discos NVMe (10x más rápidos que SSD) para I/O de base de datos rápido.&lt;/li&gt;
&lt;li&gt;Soporte Redis/Memcached (base de datos en RAM) para object caching.&lt;/li&gt;
&lt;li&gt;Servidor LiteSpeed (LSCache) o Nginx para manejo eficiente de peticiones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Imágenes&lt;/h3&gt;
&lt;p&gt;Las fotos representan el 80% del peso de la página en la mayoria de los sitios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lazy Loading&lt;/strong&gt;: WordPress lo hace por defecto, pero los plugins de optimización lo hacen mejor con soporte para iframes y videos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formatos&lt;/strong&gt;: Usa WebP o AVIF. Son 30-50% más ligeros que JPG a la misma calidad visual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimensiones&lt;/strong&gt;: No subas fotos de 4000px a un blog donde el ancho del texto es 800px. Redimensiona antes de subir.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Cache&lt;/h3&gt;
&lt;p&gt;Tu sitio no deberia generar PHP para cada visitante. Implementa cache a multiples niveles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page Cache&lt;/strong&gt;: Guarda HTML listo en disco del servidor para respuestas instantaneas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Object Cache (Redis)&lt;/strong&gt;: Guarda resultados de consultas SQL. Crucial para &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tiendas WooCommerce&lt;/a&gt; y sitios grandes donde las mismás consultas se repiten constantemente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser Cache&lt;/strong&gt;: Configura cabeceras de expiracion para que los navegadores almacenen assets estaticos localmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;4-cdn-y-edge-computing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-cdn-y-edge-computing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. CDN y Edge Computing&lt;/h3&gt;
&lt;p&gt;Para sitios con audiencia global, un CDN como Cloudflare distribuye tus assets a servidores cercanos a cada usuario. El edge computing va un paso más alla, ejecutando lógica de servidor en puntos cercanos al usuario para reducir la latencia.&lt;/p&gt;
&lt;h3 id=&quot;5-monitoreo-continuo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-monitoreo-continuo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Monitoreo continuo&lt;/h3&gt;
&lt;p&gt;Implementa monitoreo de rendimiento en tiempo real usando herramientas como DebugBear o SpeedCurve. Estas herramientas detectan regresiones de rendimiento automáticamente, permitiendote actuar antes de que afecten a los usuarios.&lt;/p&gt;
&lt;h2 id=&quot;calendario-de-mantenimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#calendario-de-mantenimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Calendario de mantenimiento&lt;/h2&gt;
&lt;p&gt;Cuidar un sitio WordPress es un proceso, no una accion puntual. Establece un calendario riguroso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Diario&lt;/strong&gt;: Verificar backups (automáticos) y monitorear alertas de seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semanal&lt;/strong&gt;: Actualizar plugins, verificar GSC y revisar logs de errores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mensual&lt;/strong&gt;: Hacer auditoria de velocidad, revision de usuarios (alguien no autorizado tiene acceso admin?) y limpieza de base de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trimestral&lt;/strong&gt;: Auditoria de seguridad completa, revision de plugins instalados y actualización de plan de recuperacion ante desastres.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Solo este enfoque sistematico garantiza tranquilidad y crecimiento empresarial estable. La seguridad y el rendimiento no son proyectos con fecha de finalizacion; son procesos continuos que requieren atención constante.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Consulta nuestros servicios de &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; y &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt; para una revision profesional de tu sitio. También ofrecemos &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; continuo y &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;desarrollo WooCommerce&lt;/a&gt; para tiendas online. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt; para una consulta gratuita.&lt;/p&gt;</content:encoded><category>wordpress</category><category>security</category><category>seo</category><category domain="tag">security</category><category domain="tag">guide</category><category domain="tag">performance</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Guía completa de redirecciones .htaccess para WordPress (2026)</title><link>https://wppoland.com/es/htaccess-redirect-shortlist/</link><guid isPermaLink="true">https://wppoland.com/es/htaccess-redirect-shortlist/</guid><description>Domina Apache mod_rewrite con esta guía completa. Aprende redirecciones 301 vs 302, solucióna bucles de redirección, optimiza el rendimiento e implementa redirecciones de URL seguras para WordPress.</description><pubDate>Fri, 09 May 2014 09:57:46 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introducción-a-apache-mod_rewrite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introducción-a-apache-mod_rewrite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introducción a Apache mod_rewrite&lt;/h2&gt;
&lt;p&gt;El archivo &lt;code&gt;.htaccess&lt;/code&gt; es una de las herramientas más poderosas en el arsenal de un administrador de WordPress. Este archivo de configuración te permite anular la configuración del servidor a nivel de directorio, dándote control granular sobre las redirecciones de URL, restricciones de acceso y optimizaciones de rendimiento.&lt;/p&gt;
&lt;h3 id=&quot;qué-es-mod_rewrite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-es-mod_rewrite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué es mod_rewrite?&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;mod_rewrite&lt;/code&gt; es un módulo de Apache que proporciona un motor de reescritura basado en reglas para reescribir URLs solicitadas sobre la marcha. Es el motor detrás de los permalinks bonitos de WordPress y es esencial para las estructuras de URL amigables con el SEO.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preservación del SEO&lt;/strong&gt;: Redirige URLs antiguas a nuevas sin perder posiciones en buscadores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experiencia del usuario&lt;/strong&gt;: Asegura que los visitantes siempre lleguen al contenido correcto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Fuerza HTTPS y bloquea solicitudes maliciosas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Implementa cabeceras de caché y compresión&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cuándo-usar-redirecciones-301-vs-302&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-usar-redirecciones-301-vs-302&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo usar redirecciones 301 vs 302&lt;/h3&gt;
&lt;p&gt;Entender los códigos de estado HTTP es crucial para una implementación SEO adecuada:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tipo de redirección&lt;/th&gt;&lt;th&gt;Caso de uso&lt;/th&gt;&lt;th&gt;Impacto SEO&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;301 Permanente&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Contenido movido permanentemente, cambios de dominio, migración HTTPS&lt;/td&gt;&lt;td&gt;Transfiere 90-99% del valor de enlace, los motores actualizan el índice&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;302 Encontrado&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Mantenimiento temporal, pruebas A/B, movimientos de contenido a corto plazo&lt;/td&gt;&lt;td&gt;No transfiere valor de enlace, la URL original permanece indexada&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;307 Temporal&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Redirección temporal estricta HTTP/1.1, preservación de datos POST&lt;/td&gt;&lt;td&gt;Igual que 302 pero preserva el método HTTP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;308 Permanente&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Redirección permanente estricta HTTP/1.1, preservación de datos POST&lt;/td&gt;&lt;td&gt;Igual que 301 pero preserva el método HTTP&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Regla de oro&lt;/strong&gt;: Si el cambio es permanente, siempre usa 301. Usar 302 para movimientos permanentes puede dañar significativamente tu posicionamiento SEO.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;escenarios-comunes-de-redirección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenarios-comunes-de-redirección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenarios comunes de redirección&lt;/h2&gt;
&lt;h3 id=&quot;1-redirecciones-de-una-sola-página&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-redirecciones-de-una-sola-página&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Redirecciones de una sola página&lt;/h3&gt;
&lt;p&gt;La forma más simple de redirección mueve una URL específica a otra:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir una sola página (sintaxis simple)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /página-antigua.html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio.com/página-nueva.html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Alternativa usando RewriteRule&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^página-antigua\.html$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /página-nueva.html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Cuándo usar cada una:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa &lt;code&gt;Redirect 301&lt;/code&gt; para coincidencias de URL exactas y simples&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;RewriteRule&lt;/code&gt; cuando necesites coincidencia de patrones o condiciones&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-redirección-de-sitio-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-redirección-de-sitio-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Redirección de sitio completo&lt;/h3&gt;
&lt;p&gt;Mover todo tu sitio web a un nuevo dominio requiere un manejo cuidadoso:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir sitio completo a nuevo dominio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.nuevodominio.com/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Preservar la estructura completa de URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteBase&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; (.*)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.nuevodominio.com/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Siempre prueba con algunas URLs primero antes de implementar redirecciones a nivel de sitio.&lt;/p&gt;
&lt;h3 id=&quot;3-subcarpeta-a-raíz-o-viceversa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-subcarpeta-a-raíz-o-viceversa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Subcarpeta a raíz (o viceversa)&lt;/h3&gt;
&lt;p&gt;Común al reestructurar contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir sitio completo a una subcarpeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio.com/subcarpeta/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir subcarpeta a otro sitio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /subcarpeta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio.com/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Usando RewriteRule con preservación de ruta completa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^subcarpeta/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-cambios-de-extensión-de-archivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-cambios-de-extensión-de-archivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Cambios de extensión de archivo&lt;/h3&gt;
&lt;p&gt;Al migrar de &lt;code&gt;.html&lt;/code&gt; a &lt;code&gt;.php&lt;/code&gt; o implementar permalinks bonitos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir .html a .php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RedirectMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; (.*)\.html$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio.com$1.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Eliminar extensión .php (hacer URLs más limpias)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !-f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^([^\.]+)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; $1.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;5-forzar-https-ssl&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-forzar-https-ssl&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Forzar HTTPS (SSL)&lt;/h3&gt;
&lt;p&gt;Esencial para seguridad y SEO:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Forzar HTTPS - Método 1 (simple)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTPS}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; off&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://%{HTTP_HOST}%{REQUEST_URI}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Forzar HTTPS - Método 2 (con manejo de www)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTPS}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; off&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [OR]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_HOST}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !^www\.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio.com/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;6-forzar-www-o-sin-www&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-forzar-www-o-sin-www&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Forzar www o sin www&lt;/h3&gt;
&lt;p&gt;La consistencia en la estructura de URL importa para el SEO:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Forzar www&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_HOST}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^dominio.com&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio.com/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Forzar sin www (dominio desnudo)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_HOST}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^www\.dominio\.com&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; http://dominio.com/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;reglas-de-reescritura-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reglas-de-reescritura-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reglas de reescritura avanzadas&lt;/h2&gt;
&lt;h3 id=&quot;redirecciones-con-cadenas-de-consulta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#redirecciones-con-cadenas-de-consulta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Redirecciones con cadenas de consulta&lt;/h3&gt;
&lt;p&gt;El manejo de URLs con parámetros requiere atención especial:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir parámetro de consulta específico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{QUERY_STRING}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; id=1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^index.php$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /ruta-a-nueva-ubicacion/?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir con preservación de cadena de consulta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{QUERY_STRING}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^category=([^&amp;#x26;]+)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^index.php$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /categoria/%1/?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Eliminar cadenas de consulta por completo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{QUERY_STRING}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: El &lt;code&gt;?&lt;/code&gt; final en la URL de destino elimina la cadena de consulta original.&lt;/p&gt;
&lt;h3 id=&quot;coincidencia-de-patrones-con-regex&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#coincidencia-de-patrones-con-regex&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Coincidencia de patrones con Regex&lt;/h3&gt;
&lt;p&gt;Las expresiones regulares proporcionan una potente coincidencia de patrones:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir URLs basadas en fechas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^blog/([0-9]{4})/([0-9]{2})/(.+)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /noticias/$1/$2/$3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir con comodines&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^productos/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /tienda/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Coincidencias de múltiples patrones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(blog|noticias|artículos)/(.+)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /contenido/$2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;cambio-de-dominio-con-preservación-de-ruta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambio-de-dominio-con-preservación-de-ruta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cambio de dominio con preservación de ruta&lt;/h3&gt;
&lt;p&gt;Al migrar a un dominio completamente nuevo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Dominio antiguo a nuevo dominio con ruta completa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_HOST}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^dominio-antiguo.com$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [OR]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_HOST}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^www.dominio-antiguo.com$&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; (.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio-nuevo.com/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Con ajuste de subdirectorio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_URI}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^/blog/(.*)$&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.nuevodominio.com/noticias/%1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;prueba-de-redirecciones-de-forma-segura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prueba-de-redirecciones-de-forma-segura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prueba de redirecciones de forma segura&lt;/h2&gt;
&lt;h3 id=&quot;antes-de-publicar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#antes-de-publicar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Antes de publicar&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Usa 302 temporal primero&lt;/strong&gt;: Prueba con redirecciones 302 antes de hacerlas permanentes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica cadenas de redirección&lt;/strong&gt;: Asegúrate de no crear bucles de redirección&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba múltiples escenarios&lt;/strong&gt;: Verifica con y sin www, HTTP y HTTPS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Válida con herramientas&lt;/strong&gt;: Usa verificadores de redirección en línea&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;métodos-de-prueba&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métodos-de-prueba&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métodos de prueba&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Usando curl para verificar cabeceras&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -I&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; http://tudominio.com/página-antigua&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Seguir redirecciones con curl&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -L&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; http://tudominio.com/página-antigua&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Verificar códigos de estado específicos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -I&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -L&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; http://tudominio.com/página-antigua&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; 2&gt;&amp;#x26;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; HTTP&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;herramientas-de-prueba-en-línea&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-prueba-en-línea&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de prueba en línea&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Verificador de redirecciones&lt;/strong&gt;: httpstatus.io&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estado HTTP&lt;/strong&gt;: httpstatus.io&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;: Verifica errores de rastreo después de la implementación&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;solución-de-problemas-de-bucles-de-redirección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-de-problemas-de-bucles-de-redirección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución de problemas de bucles de redirección&lt;/h2&gt;
&lt;h3 id=&quot;causas-comunes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#causas-comunes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Causas comunes&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Referencias circulares&lt;/strong&gt;: La regla A redirige a B, la regla B redirige de vuelta a A&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discrepancias de protocolo&lt;/strong&gt;: Regla HTTP conflictuando con forzado de HTTPS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflictos WWW&lt;/strong&gt;: Reglas www y sin www luchando entre sí&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflictos de WordPress&lt;/strong&gt;: Redirecciones de plugins conflictuando con .htaccess&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;pasos-de-diagnóstico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pasos-de-diagnóstico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pasos de diagnóstico&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Añade esto temporalmente para ver qué está pasando&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteLog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;/var/log/apache2/rewrite.log&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteLogLevel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Esto requiere acceso a nivel de servidor y debe eliminarse después de la depuración.&lt;/p&gt;
&lt;h3 id=&quot;soluciónes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#soluciónes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Soluciónes&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Prevenir bucles verificando si ya fue redirigido&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{ENV:REDIRECT_STATUS}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; 200&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Manejo específico de protocolo para evitar bucles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTPS}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; off&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP:X-Forwarded-Proto}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !https&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://%{HTTP_HOST}%{REQUEST_URI}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;impacto-en-el-rendimiento-de-las-reglas-htaccess&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-el-rendimiento-de-las-reglas-htaccess&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en el rendimiento de las reglas .htaccess&lt;/h2&gt;
&lt;h3 id=&quot;comprendiendo-el-costo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprendiendo-el-costo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprendiendo el costo&lt;/h3&gt;
&lt;p&gt;Cada &lt;code&gt;RewriteRule&lt;/code&gt; añade sobrecarga de procesamiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Redirecciones simples&lt;/strong&gt;: Impacto mínimo (&amp;#x3C; 1ms)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regex complejo&lt;/strong&gt;: Impacto moderado (1-5ms por regla)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Múltiples condiciones&lt;/strong&gt;: Impacto acumulativo (5-20ms+)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mejores-prácticas-de-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-de-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas de optimización&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;El orden importa&lt;/strong&gt;: Coloca las reglas que coinciden más frecuentemente primero&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa patrones específicos&lt;/strong&gt;: Los patrones más específicos son más rápidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limita la complejidad del regex&lt;/strong&gt;: Evita cuantificadores codiciosos donde sea posible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Considera la configuración a nivel de servidor&lt;/strong&gt;: Para sitios de alto tráfico, usa httpd.conf en su lugar&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Ejemplo de ordenamiento optimizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirecciones más comunes primero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^wp-admin$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /wp-admin/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Luego patrones específicos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^producto-antiguo/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /tienda/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Patrones genéricos al final&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^blog/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /noticias/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;consideraciones-de-caché&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-caché&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de caché&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Habilitar mod_expires para mejor caché&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_expires.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresActive&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  ExpiresDefault&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; month&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Habilitar compresión&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_deflate.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; text/css&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; application/javascript&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;consideraciones-específicas-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-específicas-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones específicas de WordPress&lt;/h2&gt;
&lt;h3 id=&quot;integración-con-las-reglas-de-reescritura-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-las-reglas-de-reescritura-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con las reglas de reescritura de WordPress&lt;/h3&gt;
&lt;p&gt;WordPress usa sus propias reglas de reescritura en .htaccess. Siempre coloca las reglas personalizadas antes del bloque de WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# BEGIN Redirecciones personalizadas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Tus reglas personalizadas aquí&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# END Redirecciones personalizadas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# BEGIN WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_rewrite.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteBase&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^index\.php$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !-f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !-d&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /index.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# END WordPress&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;escenarios-comunes-de-redirección-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenarios-comunes-de-redirección-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenarios comunes de redirección en WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir páginas de adjuntos a la entrada padre&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^attachment/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir archivos de autor a la página de inicio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^author/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir archivos de categorías a una página específica&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^category/categoria-antigua$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /nueva-seccion/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad&lt;/h2&gt;
&lt;h3 id=&quot;protección-de-archivos-sensibles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protección-de-archivos-sensibles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protección de archivos sensibles&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Bloquear acceso a archivos sensibles de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;^\.&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; allow,deny&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Deny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Proteger wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-config.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  order allow,deny&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Bloquear acceso al propio .htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .htaccess&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  order allow,deny&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;bloqueo-de-solicitudes-maliciosas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bloqueo-de-solicitudes-maliciosas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bloqueo de solicitudes maliciosas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Bloquear intentos de inyección SQL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{QUERY_STRING}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; (&amp;#x3C;|%3C).*script.*(&gt;|%3E)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC,OR]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{QUERY_STRING}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; GLOBALS(=|\[|\%[0-9A-Z]{0,2})&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [OR]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{QUERY_STRING}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _REQUEST(=|\[|\%[0-9A-Z]{0,2})&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; index.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [F,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;referencia-completa-tipos-de-redirección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#referencia-completa-tipos-de-redirección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Referencia completa: tipos de redirección&lt;/h2&gt;
&lt;h3 id=&quot;sintaxis-de-redirección-simple&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sintaxis-de-redirección-simple&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sintaxis de redirección simple&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirección 301 básica&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /antigua&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /nueva&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirección temporal 302&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 302&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /mantenimiento&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /página-temporal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirección con URL completa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /página&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; http://ejemplo.com/nueva-página&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sintaxis-redirectmatch&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sintaxis-redirectmatch&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sintaxis RedirectMatch&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirección basada en patrones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RedirectMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^/blog/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; http://ejemplo.com/noticias/$1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Insensible a mayúsculas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RedirectMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; (?i)^/carpeta-antigua/(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /carpeta-nueva/$1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sintaxis-rewriterule&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sintaxis-rewriterule&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sintaxis RewriteRule&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Estructura básica&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; Patrón&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; Sustitución&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [Banderas]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Banderas comunes:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# [R=301] - Redirección permanente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# [R=302] - Redirección temporal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# [L] - Última regla (detener procesamiento)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# [NC] - Sin mayúsculas (insensible a mayúsculas)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# [QSA] - Añadir cadena de consulta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# [NE] - Sin escape&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lista-de-verificación-resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación resumen&lt;/h2&gt;
&lt;p&gt;Antes de implementar redirecciones:&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Prueba las redirecciones con 302 antes de convertirlas en 301&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verifica que no existan bucles de redirección&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Comprueba el comportamiento en móvil y escritorio&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Prueba con URLs tanto con www como sin www&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Verifica el forzado de HTTPS si aplica&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Monitorea Google Search Console para errores de rastreo&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Actualiza los enlaces internos para apuntar a las nuevas URLs&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Crea una copia de seguridad de tu archivo .htaccess&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recuerda: Una estrategia de redirección bien planificada preserva tu posicionamiento SEO y asegura una experiencia de usuario fluida durante las migraciones o reestructuraciones del sitio.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;técnicas-avanzadas-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#técnicas-avanzadas-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Técnicas avanzadas para 2026&lt;/h2&gt;
&lt;h3 id=&quot;consideraciones-de-compatibilidad-con-nginx&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-compatibilidad-con-nginx&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de compatibilidad con NGINX&lt;/h3&gt;
&lt;p&gt;Aunque .htaccess es específico de Apache, entender cómo se traducen las reglas a NGINX es crucial para los desarrolladores que trabajan en múltiples plataformas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conversión de Apache (.htaccess) a NGINX:&lt;/strong&gt;&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Directiva Apache&lt;/th&gt;&lt;th&gt;Equivalente NGINX&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Redirect 301 /antigua /nueva&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;return 301 /nueva;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;RewriteRule ^antigua$ /nueva [R=301,L]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;location = /antigua { return 301 /nueva; }&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;RewriteCond %{HTTPS} off&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;if ($scheme != &apos;https&apos;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de bloque de servidor NGINX:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    listen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    server_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ejemplo.com;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Redirección permanente a HTTPS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; https://$server_name$request_uri;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    listen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;443&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ssl;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    server_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ejemplo.com;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # Reglas de reescritura de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        try_files &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$uri $uri/ /index.php?$args;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;casos-especiales-y-escenarios-avanzados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-especiales-y-escenarios-avanzados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos especiales y escenarios avanzados&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Redirecciones para sitios multilingües&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Redirigir basándose en la cabecera Accept-Language&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP:Accept-Language}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^de&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /de/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;302&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP:Accept-Language}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^fr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /fr/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;302&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Detección de HTTPS/HTTP para balanceadores de carga&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Manejar la cabecera X-Forwarded-Proto de balanceadores de carga&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP:X-Forwarded-Proto}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !https&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://%{HTTP_HOST}%{REQUEST_URI}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L,R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;depuración-y-registro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#depuración-y-registro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Depuración y registro&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Habilitar registro detallado de reescritura:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Para Apache 2.4+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;LogLevel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; alert rewrite:trace6&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Registro a archivo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ErrorLog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ${APACHE_LOG_DIR}/rewrite.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Comandos comunes de depuración:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Verificar módulos de Apache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;apache2ctl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -M&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Probar sintaxis de .htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;apache2ctl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; configtest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Verificar si mod_rewrite está habilitado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;a2enmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Ver registros de error de Apache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/log/apache2/error.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;lista-de-verificación-de-migración-para-sitios-grandes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-de-migración-para-sitios-grandes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación de migración para sitios grandes&lt;/h3&gt;
&lt;p&gt;Al migrar un sitio WordPress grande con miles de redirecciones:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de inventario&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Exporta todas las URLs de Google Analytics&lt;/li&gt;
&lt;li&gt;Rastrea el sitio existente con Screaming Frog&lt;/li&gt;
&lt;li&gt;Exporta todas las páginas indexadas de Google Search Console&lt;/li&gt;
&lt;li&gt;Documenta todos los errores 404&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de planificación&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mapea las URLs antiguas a las nuevas&lt;/li&gt;
&lt;li&gt;Agrupa las redirecciones por patrón&lt;/li&gt;
&lt;li&gt;Prioriza las páginas de alto tráfico&lt;/li&gt;
&lt;li&gt;Planifica las cadenas de redirección para minimizar saltos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de implementación&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prueba las redirecciones en el entorno de staging&lt;/li&gt;
&lt;li&gt;Implementa en lotes&lt;/li&gt;
&lt;li&gt;Monitorea los tiempos de respuesta del servidor&lt;/li&gt;
&lt;li&gt;Verifica la ausencia de bucles de redirección&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de verificación&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa verificadores de redirección en línea&lt;/li&gt;
&lt;li&gt;Monitorea Search Console para errores de rastreo&lt;/li&gt;
&lt;li&gt;Verifica los tiempos de respuesta del servidor&lt;/li&gt;
&lt;li&gt;Comprueba la transferencia de valor de enlace&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de limpieza&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Elimina las redirecciones temporales 302 (conviérte a 301)&lt;/li&gt;
&lt;li&gt;Elimina reglas innecesarias&lt;/li&gt;
&lt;li&gt;Documenta todas las redirecciones para referencia futura&lt;/li&gt;
&lt;li&gt;Actualiza el sitemap XML con las nuevas URLs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;alternativas-con-plugins-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativas-con-plugins-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativas con plugins de WordPress&lt;/h3&gt;
&lt;p&gt;Para usuarios no técnicos o gestión compleja de redirecciones:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Redirection&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gratuito, ampliamente utilizado&lt;/li&gt;
&lt;li&gt;Soporta patrones regex&lt;/li&gt;
&lt;li&gt;Registro de 404&lt;/li&gt;
&lt;li&gt;Funcionalidad de importación/exportación&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Yoast SEO Premium&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestor de redirecciones integrado&lt;/li&gt;
&lt;li&gt;Monitoreo automático de 404&lt;/li&gt;
&lt;li&gt;Integración fluida con WordPress&lt;/li&gt;
&lt;li&gt;Soporte de regex&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Safe Redirect Manager&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugin de WordPress.org&lt;/li&gt;
&lt;li&gt;Redirecciones basadas en lista blanca&lt;/li&gt;
&lt;li&gt;Selección de código de estado HTTP&lt;/li&gt;
&lt;li&gt;Compatible con multisitio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Rank Math SEO&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suite SEO completa&lt;/li&gt;
&lt;li&gt;Redirecciones 301/302/307&lt;/li&gt;
&lt;li&gt;Monitoreo de 404&lt;/li&gt;
&lt;li&gt;Importación masiva de 301&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estructura-predeterminada-de-htaccess-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-predeterminada-de-htaccess-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura predeterminada de .htaccess en WordPress&lt;/h2&gt;
&lt;p&gt;WordPress genera un archivo .htaccess predeterminado cuando habilitas los permalinks bonitos. Entender su estructura es crucial para añadir reglas personalizadas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# BEGIN WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_rewrite.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; .*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [E=HTTP_AUTHORIZATION:%{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;HTTP:Authorization&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteBase&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^index\.php$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !-f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !-d&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /index.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# END WordPress&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;manejo-de-wordpress-multisitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-de-wordpress-multisitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo de WordPress Multisitio&lt;/h3&gt;
&lt;p&gt;WordPress Multisitio requiere configuración adicional:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteBase&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^index\.php$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^([_0-9a-zA-Z-]+/)?wp-admin$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; $1wp-admin/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [OR]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{REQUEST_FILENAME}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -d&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; $2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^([_0-9a-zA-Z-]+/)?(.*\.php)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; $2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; index.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;optimizaciónes-de-rendimiento-con-htaccess&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimizaciónes-de-rendimiento-con-htaccess&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimizaciónes de rendimiento con .htaccess&lt;/h2&gt;
&lt;h3 id=&quot;cabeceras-de-caché-del-navegador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cabeceras-de-caché-del-navegador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cabeceras de caché del navegador&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_expires.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ExpiresActive&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/jpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/gif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/png&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; image/webp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; year&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; text/css&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; month&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ExpiresByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; text/javascript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &quot;access plus &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; month&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Compresión GZIP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_deflate.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AddOutputFilterByType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; DEFLATE &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;text/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; text/plain&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; text/xml&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; text/css&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; application/javascript&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;escenarios-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenarios-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenarios de migración&lt;/h2&gt;
&lt;h3 id=&quot;migración-de-http-a-https&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-de-http-a-https&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración de HTTP a HTTPS&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTPS}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; off&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^(.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://%{HTTP_HOST}%{REQUEST_URI}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;migración-de-dominio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-de-dominio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración de dominio&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_HOST}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ^dominio-antiguo\.com$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; (.*)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; https://www.dominio-nuevo.com/$1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;cambios-en-la-estructura-de-url&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambios-en-la-estructura-de-url&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cambios en la estructura de URL&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; ^blog/([0-9]{4})/([0-9]{2})/(.+)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /artículos/$3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [R=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,L]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;técnicas-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#técnicas-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Técnicas avanzadas&lt;/h2&gt;
&lt;h3 id=&quot;protección-contra-hotlinking&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protección-contra-hotlinking&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protección contra hotlinking&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{HTTP_REFERER}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; !^https://(www\.)?tudominio\.com&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; \.(jpg|jpeg|png|gif|webp)$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [F]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;forzar-descarga-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#forzar-descarga-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Forzar descarga de archivos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;\.pdf$&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Content-Disposition attachment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>wordpress</category><category>performance</category><category>seo</category><category domain="tag">htaccess</category><category domain="tag">redirect</category><category domain="tag">apache</category><category domain="tag">mod_rewrite</category><category domain="tag">seo</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/htaccess-redirect-shortlist.jpg" type="image/jpeg"/></item><item><title>Agregar slugs de páginas padre a las clases body de WordPress</title><link>https://wppoland.com/es/adding-parent-page-slug-body-classes/</link><guid isPermaLink="true">https://wppoland.com/es/adding-parent-page-slug-body-classes/</guid><description>Un snippet práctico de WordPress para agregar slugs de páginas padre y ancestros a body_class(), permitiendo apuntar a secciones del sitio con CSS más limpio.</description><pubDate>Mon, 24 Mar 2014 19:07:06 GMT</pubDate><content:encoded>&lt;p&gt;Los temas de WordPress usan &lt;code&gt;body_class()&lt;/code&gt; para agregar clases CSS utiles a la etiqueta &lt;code&gt;&amp;#x3C;body&gt;&lt;/code&gt;. Sin embargo, por defecto, no indica claramente si una página es &lt;strong&gt;hija&lt;/strong&gt; de una sección padre específica.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.
Si desea dar estilo a todas las páginas dentro de una sección como &lt;code&gt;/servicios/&lt;/code&gt; o &lt;code&gt;/empresa/&lt;/code&gt;, la solución más limpia es inyectar slugs de padre y ancestros en &lt;code&gt;body_class()&lt;/code&gt; y apuntar a esas clases semanticas en CSS.&lt;/p&gt;
&lt;p&gt;Si tiene una estructura como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/servicios/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/servicios/diseño-web/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/servicios/seo/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Podria querer dar estilo a todas las páginas bajo “Servicios” con un fondo azul. Las clases predeterminadas como &lt;code&gt;page-id-123&lt;/code&gt; son dificiles de mantener.&lt;/p&gt;
&lt;p&gt;Si desea una segmentacion CSS más limpia, agregue clases semanticas como &lt;code&gt;parent-services&lt;/code&gt; o &lt;code&gt;ancestor-company&lt;/code&gt; a la salida de &lt;code&gt;&amp;#x3C;body&gt;&lt;/code&gt;. Esto le da un selector estable para toda una sección en lugar de mantener una lista de IDs de página.&lt;/p&gt;
&lt;h2 id=&quot;el-problema-segmentacion-css-limitada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-segmentacion-css-limitada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema: segmentacion CSS limitada&lt;/h2&gt;
&lt;p&gt;La función predeterminada &lt;code&gt;body_class()&lt;/code&gt; de WordPress agrega clases como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;page-id-123&lt;/code&gt; (numerico, dificil de recordar)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;page-template-default&lt;/code&gt; (generico)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;page&lt;/code&gt; (demasiado amplio)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero no le dice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A que sección pertenece la página&lt;/li&gt;
&lt;li&gt;La jerarquía de la página (relación padre/hijo)&lt;/li&gt;
&lt;li&gt;El slug de la página (identificador legible para humanos)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto dificulta la segmentacion CSS. Termina con código como:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Malo: Dificil de mantener */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.page-id-123&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.page-id-124&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.page-id-125&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada vez que agrega una nueva página, necesita actualizar su CSS. Esto no escala.&lt;/p&gt;
&lt;h2 id=&quot;por-que-las-clases-body-semanticas-son-esenciales-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-las-clases-body-semanticas-son-esenciales-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que las clases body semanticas son esenciales en 2026&lt;/h2&gt;
&lt;p&gt;En el desarrollo web moderno, la mantenibilidad del código es tan importante como su funcionalidad. Los equipos de desarrollo cambian, los proyectos crecen, y las hojas de estilo que dependen de IDs numericos se convierten rápidamente en deuda técnica.&lt;/p&gt;
&lt;h3 id=&quot;el-costo-oculto-de-los-selectores-numericos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-costo-oculto-de-los-selectores-numericos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El costo oculto de los selectores numericos&lt;/h3&gt;
&lt;p&gt;Cuando un nuevo desarrollador se une a un proyecto y encuentra &lt;code&gt;.page-id-247&lt;/code&gt; en el CSS, no tiene contexto sobre que página representa ese número. Debe ir al panel de WordPress, buscar la página por ID, y luego entender por que tiene estilos especiales. Multiplique esto por docenas de selectores y tiene un problema de mantenimiento significativo.&lt;/p&gt;
&lt;h3 id=&quot;ventajas-de-los-selectores-semánticos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-de-los-selectores-semánticos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas de los selectores semánticos&lt;/h3&gt;
&lt;p&gt;Los selectores como &lt;code&gt;.parent-services&lt;/code&gt; o &lt;code&gt;.ancestor-company&lt;/code&gt; son autodocumentados. Cualquier desarrollador que lea el CSS entiende inmediatamente el propósito de la regla sin consultar la base de datos de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;la-solución-agregar-slugs-padre-a-las-clases-body&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-agregar-slugs-padre-a-las-clases-body&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: agregar slugs padre a las clases body&lt;/h2&gt;
&lt;p&gt;Al agregar slugs de páginas padre a la clase body, puede apuntar a secciones completas con una sola regla CSS. Esto hace que su hoja de estilos sea mantenible y escalable.&lt;/p&gt;
&lt;h2 id=&quot;el-snippet-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-snippet-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El snippet completo&lt;/h2&gt;
&lt;p&gt;Agregue esta versión mejorada a su &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Agregar slugs de página y slugs padre a las clases body&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Agrega:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * - Slug de la página actual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * - Slug de la página padre (si existe)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * - Slug de la página abuelo (si existe)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * - Todos los slugs de ancestros&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $classes Clases body existentes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; Array de clases modificado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_slug_body_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $classes ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $classes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 1. Agregar slug de la página actual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;page-slug-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_html_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 2. Agregar slug de la página padre (si existe)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_parent ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $parent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_parent );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $parent ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;parent-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_html_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $parent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            // 3. Agregar slug del abuelo (si existe)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $parent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_parent ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $grandparent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $parent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_parent );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $grandparent ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;grandparent-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_html_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $grandparent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            // 4. Agregar todos los slugs de ancestros (recursivo)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $ancestors &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_ancestors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $ancestors &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $ancestor_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $ancestor &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ancestor_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $ancestor ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ancestor-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_html_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ancestor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // 5. Agregar clases de jerarquia de plantilla&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $template &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_page_template_slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $template ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $template_slug &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;basename&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $template ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;template-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_html_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $template_slug );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $classes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;body_class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_add_slug_body_class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resultado-clases-body-mejoradas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resultado-clases-body-mejoradas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resultado: clases body mejoradas&lt;/h2&gt;
&lt;p&gt;Ahora su etiqueta &lt;code&gt;&amp;#x3C;body&gt;&lt;/code&gt; incluira:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;page page-id-123 page-slug-web-design parent-services ancestor-services ...&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Clases agregadas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;page-slug-web-design&lt;/code&gt; - Slug de la página actual&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parent-services&lt;/code&gt; - Slug del padre directo&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grandparent-company&lt;/code&gt; - Slug del abuelo (si existe)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ancestor-services&lt;/code&gt; - Todos los slugs de ancestros&lt;/li&gt;
&lt;li&gt;&lt;code&gt;template-custom&lt;/code&gt; - Nombre del archivo de plantilla (si es personalizado)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;ejemplos-de-uso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplos-de-uso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplos de uso&lt;/h2&gt;
&lt;h3 id=&quot;ejemplo-1-dar-estilo-a-todas-las-páginas-de-servicios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-1-dar-estilo-a-todas-las-páginas-de-servicios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo 1: Dar estilo a todas las páginas de servicios&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Fondo azul para TODAS las páginas de servicios */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#eef&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Estilo específico para la cabecera de la seccion de servicios */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .site-header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;linear-gradient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;135&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;deg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#667eea&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#764ba2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Pie de página de la seccion de servicios */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .site-footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; #667eea&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ejemplo-2-diferentes-layouts-por-sección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-2-diferentes-layouts-por-sección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo 2: Diferentes layouts por sección&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Layout de ancho completo para documentación */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-documentation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .content-area&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    max-width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Layout con sidebar para el blog */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-blog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .content-area&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    max-width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;grid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    grid-template-columns&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    gap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ejemplo-3-navegación-específica-por-sección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-3-navegación-específica-por-sección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo 3: Navegación específica por sección&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Resaltar la seccion actual en la navegación */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .main-navigation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .menu-item-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#667eea&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-weight&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;bold&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Mostrar elementos de menu específicos de la seccion */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .section-menu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ejemplo-4-javascript-condicional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-4-javascript-condicional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo 4: JavaScript condicional&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Mostrar diferentes funcionalidades según la seccion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (document.body.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;contains&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;parent-services&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Cargar scripts específicos de servicios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    loadServicesWidget&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Verificar multiples ancestros&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (document.body.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;contains&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ancestor-company&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Branding corporativo general&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    applyCompanyBranding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;avanzado-tipos-de-post-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#avanzado-tipos-de-post-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Avanzado: tipos de post personalizados&lt;/h2&gt;
&lt;p&gt;El snippet funciona para páginas, pero puede extenderlo para tipos de post personalizados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_cpt_slug_body_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $classes ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Agregar slug del tipo de post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;post-type-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_type;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Agregar slug del archivo del tipo de post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $post_type_obj &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_type_object&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_type );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $post_type_obj &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_type_obj&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;has_archive ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;archive-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_type_obj&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;rewrite[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Agregar terminos de taxonomia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $taxonomies &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_object_taxonomies&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_type );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $taxonomies &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $taxonomy ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $terms &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_terms&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, $taxonomy );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $terms &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $terms ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $terms &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $term ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $taxonomy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_html_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $classes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;body_class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_add_cpt_slug_body_class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;integración-con-variables-css-personalizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-variables-css-personalizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con variables CSS personalizadas&lt;/h2&gt;
&lt;p&gt;En 2026, las variables CSS (Custom Properties) son la forma más elegante de implementar temas por sección. Combine las clases body de padre con variables CSS para crear sistemas de diseño flexibles:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Definir paleta de colores por seccion */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-primary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#667eea&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-secondary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#764ba2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-bg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f0f0ff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#2d2d6b&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-products&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-primary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f093fb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-secondary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f5576c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-bg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#fff0f5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#6b2d4d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-primary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#4facfe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-secondary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#00f2fe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-bg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f0f8ff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --section-text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#2d4d6b&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Los componentes usan las variables automáticamente */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.section-header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;linear-gradient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;135&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;deg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--section-primary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--section-secondary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;white&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.cta-button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--section-primary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;white&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.content-area&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--section-bg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--section-text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta estrategia es especialmente poderosa porque los componentes no necesitan saber en que sección estan. Simplemente usan las variables CSS, y las clases body determinan los valores.&lt;/p&gt;
&lt;h2 id=&quot;consideraciones-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;cache-de-clases-body&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cache-de-clases-body&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cache de clases body&lt;/h3&gt;
&lt;p&gt;El filtro &lt;code&gt;body_class&lt;/code&gt; se ejecuta en cada carga de página. Para sitios de alto tráfico, considere el almacenamiento en cache:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_slug_body_class_cached&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $classes ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;body_classes_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cached_classes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cached_classes ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $cached_classes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_slug_body_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $cached_classes, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_merge&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $classes, $cached_classes );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limitar-la-profundidad-de-ancestros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitar-la-profundidad-de-ancestros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitar la profundidad de ancestros&lt;/h3&gt;
&lt;p&gt;Para jerarquías profundamente anidadas, limite la profundidad de ancestros:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En el snippet anterior, limite los ancestros:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$ancestors &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_slice&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_post_ancestors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID ), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Maximo 3 niveles&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;solución-de-problemas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-de-problemas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución de problemas&lt;/h2&gt;
&lt;h3 id=&quot;las-clases-no-aparecen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-clases-no-aparecen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las clases no aparecen&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Las clases body no se muestran.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verifique que &lt;code&gt;body_class()&lt;/code&gt; se llama en el &lt;code&gt;header.php&lt;/code&gt; de su tema&lt;/li&gt;
&lt;li&gt;Verifique la prioridad del filtro (deberia ser la predeterminada: 10)&lt;/li&gt;
&lt;li&gt;Limpie cualquier plugin de cache&lt;/li&gt;
&lt;li&gt;Busque conflictos con otros plugins&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;clases-duplicadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#clases-duplicadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Clases duplicadas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Las clases aparecen multiples veces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;code&gt;array_unique()&lt;/code&gt; para eliminar duplicados:
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_unique&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $classes );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Verifique si otros plugins/temas agregan clases similares&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;caracteres-especiales-en-los-slugs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caracteres-especiales-en-los-slugs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caracteres especiales en los slugs&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Problema:&lt;/strong&gt; Los slugs con caracteres especiales rompen el CSS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soluciónes:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;code&gt;sanitize_html_class()&lt;/code&gt; (ya incluido en el snippet)&lt;/li&gt;
&lt;li&gt;WordPress sanitiza automáticamente los slugs, pero verifique dos veces&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;mejores-prácticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas&lt;/h2&gt;
&lt;h3 id=&quot;1-use-nombres-de-clase-semánticos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-use-nombres-de-clase-semánticos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Use nombres de clase semánticos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bueno&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;parent-services&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Malo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;p-serv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-mantengalo-simple&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-mantengalo-simple&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Mantengalo simple&lt;/h3&gt;
&lt;p&gt;No agregue demasiadas clases. Limitese a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slug de la página actual&lt;/li&gt;
&lt;li&gt;Slug del padre&lt;/li&gt;
&lt;li&gt;Tal vez el abuelo (si es necesario)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-documente-sus-clases&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-documente-sus-clases&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Documente sus clases&lt;/h3&gt;
&lt;p&gt;Agregue comentarios en su CSS:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Seccion de Servicios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Aplicado a todas las páginas bajo /servicios/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Clases: .parent-services, .ancestor-services&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { ... }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-pruebe-en-diferentes-temas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-pruebe-en-diferentes-temas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Pruebe en diferentes temas&lt;/h3&gt;
&lt;p&gt;Las clases body funcionan con cualquier tema, pero pruebe para asegurar la compatibilidad.&lt;/p&gt;
&lt;h2 id=&quot;casos-de-uso-del-mundo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-del-mundo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso del mundo real&lt;/h2&gt;
&lt;h3 id=&quot;1-branding-de-multiples-sitios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-branding-de-multiples-sitios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Branding de multiples sitios&lt;/h3&gt;
&lt;p&gt;Diferentes secciones tienen diferentes esquemás de color:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-services&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--primary-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#667eea&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-products&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--primary-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f093fb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.parent-support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--primary-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#4facfe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-widgets-específicos-por-sección&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-widgets-específicos-por-sección&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Widgets específicos por sección&lt;/h3&gt;
&lt;p&gt;Mostrar diferentes widgets de sidebar por sección:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;parent-services&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_body_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    dynamic_sidebar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;services-sidebar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-seguimiento-de-analíticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-seguimiento-de-analíticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Seguimiento de analíticas&lt;/h3&gt;
&lt;p&gt;Rastrear eventos específicos por sección:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (document.body.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;contains&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;parent-services&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;event&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;page_view&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;section&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;services&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Agregar slugs de páginas padre a las clases body es una técnica simple pero poderosa que hace la segmentacion CSS escalable y mantenible. En lugar de mantener listas de IDs de página, puede apuntar a secciones completas con una sola clase.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beneficios clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escalable: Funciona automáticamente para nuevas páginas&lt;/li&gt;
&lt;li&gt;Mantenible: Una regla CSS para secciones completas&lt;/li&gt;
&lt;li&gt;Semántico: Nombres de clase legibles para humanos&lt;/li&gt;
&lt;li&gt;Flexible: Funciona con cualquier tema&lt;/li&gt;
&lt;li&gt;Rendimiento: Sobrecarga minima&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cuando usarlo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sitios web con multiples secciones&lt;/li&gt;
&lt;li&gt;Diferentes layouts por sección&lt;/li&gt;
&lt;li&gt;Estilos específicos por sección&lt;/li&gt;
&lt;li&gt;Carga condicional de funcionalidades&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta técnica es especialmente valiosa en 2026, donde los sitios web son más complejos y necesitan arquitecturas CSS flexibles y mantenibles. La combinación de clases body semanticas con variables CSS personalizadas crea un sistema de diseño robusto que se adapta fácilmente a los cambios de estructura del sitio.&lt;/p&gt;</content:encoded><category>wordpress</category><category>development</category><category domain="tag">css</category><category domain="tag">themes</category><category domain="tag">snippets</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-resized.jpg" type="image/jpeg"/></item><item><title>Campos ACF Repeater - Como estilizar filas alternantes</title><link>https://wppoland.com/es/advanced-custom-fields-acf-repeater-fields-how-to-style-a-selected-block-used-repeatedly-on-a-page/</link><guid isPermaLink="true">https://wppoland.com/es/advanced-custom-fields-acf-repeater-fields-how-to-style-a-selected-block-used-repeatedly-on-a-page/</guid><description>Un tutorial práctico de ACF Repeater que muestra como estilizar filas pares, impares o cada tercera fila con lógica modulo en PHP o selectores CSS nth-child modernos.</description><pubDate>Tue, 11 Mar 2014 18:59:10 GMT</pubDate><content:encoded>&lt;p&gt;El &lt;strong&gt;campo Repeater&lt;/strong&gt; en Advanced Custom Fields (ACF) es una de las funcionalidades más potentes para desarrolladores. Permite a los clientes anadir un número ilimitado de elementos (p. ej., “Socios”, “Agenda”, “Ingredientes”) sin necesidad de entradas separadas.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.
Pero, como los estilizas? Especialmente si quieres que cada segundo elemento tenga un aspecto diferente.&lt;/p&gt;
&lt;p&gt;En la práctica, la solución más rápida es usar un simple contador más lógica modulo cuando necesitas diferentes clases o plantillas, o CSS &lt;code&gt;:nth-child()&lt;/code&gt; cuando el cambio es puramente visual.&lt;/p&gt;
&lt;p&gt;Si solo necesitas colores o espaciado alternante, empieza con CSS &lt;code&gt;:nth-child()&lt;/code&gt;. Si cada fila del repeater necesita diferentes clases, marcado o plantillas condicionales, usa un contador PHP con el operador modulo dentro del bucle ACF.&lt;/p&gt;
&lt;h2 id=&quot;entendiendo-los-campos-acf-repeater&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-los-campos-acf-repeater&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo los campos ACF Repeater&lt;/h2&gt;
&lt;p&gt;Los campos ACF Repeater revolucionaron la gestión de contenido en WordPress al permitir bloques de contenido flexibles y repetibles. En lugar de crear tipos de entrada personalizados o entradas separadas para contenido similar, puedes crear un único grupo de campos que los clientes pueden llenar dinamicamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Casos de uso comunes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Miembros del equipo&lt;/strong&gt;: Lista de perfiles del equipo con fotos y biografias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testimonios&lt;/strong&gt;: Resenas de clientes con nombres, fotos y citas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secciones de preguntas frecuentes&lt;/strong&gt;: Preguntas y respuestas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elementos de linea temporal&lt;/strong&gt;: Eventos históricos o hitos del proyecto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caracteristicas del producto&lt;/strong&gt;: Lista de características con iconos y descripciones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tablas de precios&lt;/strong&gt;: Multiples niveles de precios con diferentes características&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bucle-básico-de-acf-repeater&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bucle-básico-de-acf-repeater&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bucle básico de ACF Repeater&lt;/h2&gt;
&lt;p&gt;Aqui esta la estructura fundamental para mostrar los datos de un campo repeater:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my_repeater&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;slides&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my_repeater&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_row&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $title &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;slide&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $image )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_url( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;url&apos;] ); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                     alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;alt&apos;] ); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $title )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $title ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_kses_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; else:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;No&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; se&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; encontraron&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; elementos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Funciones clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;have_rows()&lt;/code&gt;: Comprueba si el repeater tiene filas&lt;/li&gt;
&lt;li&gt;&lt;code&gt;the_row()&lt;/code&gt;: Se mueve a la siguiente fila (como &lt;code&gt;the_post()&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_sub_field()&lt;/code&gt;: Obtiene el valor del subcampo en la fila actual&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_row_index()&lt;/code&gt;: Devuelve el número de fila actual (base 0)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;desafio-el-patron-cebra&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desafio-el-patron-cebra&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desafio: El patron “cebra”&lt;/h2&gt;
&lt;p&gt;Los disenadores a menudo quieren que cada fila alternante tenga un fondo oscuro o un estilo diferente. Esto crea separacion visual y mejora la legibilidad.&lt;/p&gt;
&lt;h3 id=&quot;solución-php-usando-el-operador-modulo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-php-usando-el-operador-modulo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución PHP: Usando el operador modulo&lt;/h3&gt;
&lt;p&gt;En PHP, usamos una &lt;strong&gt;variable contador&lt;/strong&gt; (&lt;code&gt;$i&lt;/code&gt;) y el &lt;strong&gt;operador modulo&lt;/strong&gt; (&lt;code&gt;%&lt;/code&gt;) para determinar si un número es par o impar.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;sections&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Inicializar contador&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;sections-container&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;sections&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_row&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Incrementar contador&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Operador modulo: devuelve el resto de la division&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // $i % 2 == 0 significa número par (2do, 4to, 6to...)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // $i % 2 == 1 significa número impar (1ro, 3ro, 5to...)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $is_even &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $is_even &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;bg-dark&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;bg-light&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Alternativa: Mas legible&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;even-row&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;odd-row&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;row &amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;row-content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $title &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $title )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $title ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_kses_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;entendiendo-el-operador-modulo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-el-operador-modulo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo el operador modulo&lt;/h3&gt;
&lt;p&gt;El operador modulo (&lt;code&gt;%&lt;/code&gt;) devuelve el resto de una division:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; %&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // 1 dividido entre 2 = 0 resto 1 (impar)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; %&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // 2 dividido entre 2 = 1 resto 0 (par)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; %&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // 3 dividido entre 2 = 1 resto 1 (impar)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; %&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // 4 dividido entre 2 = 2 resto 0 (par)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Patron:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Números pares: &lt;code&gt;% 2 === 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Números impares: &lt;code&gt;% 2 === 1&lt;/code&gt; (o &lt;code&gt;!== 0&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;patrones-de-estilizacion-avanzados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-de-estilizacion-avanzados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones de estilizacion avanzados&lt;/h2&gt;
&lt;h3 id=&quot;patron-1-cada-tercer-elemento-diferente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patron-1-cada-tercer-elemento-diferente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patron 1: Cada tercer elemento diferente&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;items-grid&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_row&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $modulo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $modulo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;highlight-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 3ro, 6to, 9no...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;elseif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $modulo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;normal-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 1ro, 4to, 7mo...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;secondary-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 2do, 5to, 8vo...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;item &amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Contenido&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;patron-2-primer-y-último-elemento-especiales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patron-2-primer-y-último-elemento-especiales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patron 2: Primer y último elemento especiales&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $total &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;items-list&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_row&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $classes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;first-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $total ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;last-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;even-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $classes[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;odd-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $class_string &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $classes );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;item &amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$class_string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Contenido&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;patron-3-indice-de-fila-para-lógica-compleja&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patron-3-indice-de-fila-para-lógica-compleja&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patron 3: Indice de fila para lógica compleja&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;sections&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;sections&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;sections&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_row&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $row_index &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_row_index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Indice base 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $row_number &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $row_index &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Base 0 para calculos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Plantilla diferente para los primeros 3 elementos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $row_index &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            get_template_part&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template-parts/section&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;featured&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            get_template_part&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template-parts/section&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;standard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;css-nth-child-la-forma-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-nth-child-la-forma-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS nth-child: La forma moderna&lt;/h2&gt;
&lt;p&gt;En 2026, si el cambio de estilo es puramente visual (colores, espaciado, bordes), CSS &lt;code&gt;:nth-child()&lt;/code&gt; es a menudo más limpio y eficiente que la lógica PHP.&lt;/p&gt;
&lt;h3 id=&quot;patrones-básicos-de-nth-child&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-básicos-de-nth-child&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones básicos de nth-child&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Cada fila par (2da, 4ta, 6ta...) */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.row:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;even&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f5f5f5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Cada fila impar (1ra, 3ra, 5ta...) */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.row:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;odd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Cada 3er elemento */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.item:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-left&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; #0073aa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Primeros 3 elementos */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.item:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;-n+3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-weight&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;bold&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Cada elemento despues del 5to */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.item:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;n+6&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;patrones-css-avanzados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-css-avanzados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones CSS avanzados&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Efecto cebra */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.sections-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .row:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;even&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;linear-gradient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;135&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;deg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#667eea&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#764ba2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#fff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.sections-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .row:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;odd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#fff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#333&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Efectos hover en filas alternantes */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.row:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;even&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;translateX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Diferentes disposiciones */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.row:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3n+1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    grid-column&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Abarca 2 columnas */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;cuando-usar-php-vs-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-usar-php-vs-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando usar PHP vs CSS&lt;/h2&gt;
&lt;h3 id=&quot;usa-php-cuando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usa-php-cuando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usa PHP cuando:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estructura HTML diferente&lt;/strong&gt; para filas pares/impares&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carga de diferentes template parts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lógica condicional&lt;/strong&gt; más alla del estilo (p. ej., diferentes campos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nombres de clase dinámicos&lt;/strong&gt; basados en valores de campos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calculos complejos&lt;/strong&gt; (p. ej., “cada 5to elemento despues del 10mo”)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;usa-css-cuando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usa-css-cuando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usa CSS cuando:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estilo puramente visual&lt;/strong&gt; (colores, espaciado, bordes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patrones simples&lt;/strong&gt; (cada 2do, 3ro, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El rendimiento importa&lt;/strong&gt; (CSS es más rápido que bucles PHP)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diseño responsivo&lt;/strong&gt; (media queries CSS)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;ejemplo-completo-cuadricula-de-miembros-del-equipo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-completo-cuadricula-de-miembros-del-equipo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo completo: Cuadricula de miembros del equipo&lt;/h2&gt;
&lt;p&gt;Aqui hay un ejemplo completo listo para producción:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;team_members&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;team-grid&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;team_members&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_row&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $role &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;role&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $photo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;photo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $bio &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;bio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $email &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_sub_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Determinar disposicion: miembros destacados (primeros 3) obtienen tarjetas más grandes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $is_featured &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $card_class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $is_featured &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;team-card featured&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;team-card&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $card_class &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos; even&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos; odd&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$card_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;; ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $photo )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;team-photo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_url( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$photo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;sizes&apos;][&apos;medium&apos;] ); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                         alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                         srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_url( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$photo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;sizes&apos;][&apos;medium&apos;] ); ?&gt; 300w,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                                 &amp;#x3C;?php echo esc_url( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$photo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;sizes&apos;][&apos;large&apos;] ); ?&gt; 600w&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                         sizes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;(max-width: 600px) 300px, 600px&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;team-info&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $name )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;team-name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $name ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $role )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;team-role&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $role ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $bio )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;team-bio&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_kses_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $bio ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $email )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;mailto:&amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$email&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;team-email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                        Contacto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; else:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;no-items&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;No&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; se&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; encontraron&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; miembros&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; del&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; equipo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;CSS acompanante:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.team-grid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;grid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    grid-template-columns&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;auto-fill&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;minmax&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;fr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    gap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    margin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.team-card&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#fff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-radius&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    overflow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    box-shadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, box-shadow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.team-card:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;translateY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;-4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    box-shadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Tarjetas destacadas (primeras 3) */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.team-card.featured&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    grid-column&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: span &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Efecto cebra */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.team-card.even&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#f8f9fa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Responsivo: Tarjetas destacadas se vuelven normales en móvil */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;768&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .team-card.featured&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        grid-column&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: span &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;optimización-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;almacenar-en-cache-los-datos-del-repeater&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#almacenar-en-cache-los-datos-del-repeater&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Almacenar en cache los datos del repeater&lt;/h3&gt;
&lt;p&gt;Para campos repeater que no cambian a menudo, almacena en cache la salida:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cached_repeater_output&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $field_name ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;repeater_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $field_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $output ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Tu bucle repeater aqui&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ob_get_clean&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $output;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limitar-elementos-del-repeater&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitar-elementos-del-repeater&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitar elementos del repeater&lt;/h3&gt;
&lt;p&gt;Si tienes muchos elementos, considera la páginación:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$items &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$items_per_page &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$current_page &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_query_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_query_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $current_page &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $items_per_page;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$páginated_items &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_slice&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $items, $offset, $items_per_page );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $páginated_items &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $item )&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Mostrar elemento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;endforeach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mejores-prácticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas&lt;/h2&gt;
&lt;h3 id=&quot;1-siempre-escapar-la-salida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-siempre-escapar-la-salida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Siempre escapar la salida&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $title );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $image[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_kses_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Incorrecto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $title; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vulnerabilidad XSS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-comprobar-si-los-campos-existen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-comprobar-si-los-campos-existen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Comprobar si los campos existen&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $image &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $image[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Usar imagen&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-usar-get_row_index-para-depuracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-usar-get_row_index-para-depuracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Usar get_row_index() para depuracion&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$row_index &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_row_index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;error_log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Procesando fila &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$row_index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-combinar-php-y-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-combinar-php-y-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Combinar PHP y CSS&lt;/h3&gt;
&lt;p&gt;Usa PHP para la lógica, CSS para el estilo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// PHP: Anadir atributo data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;item&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;; ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* CSS: Estilizar basado en atributo data si es necesario */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;data-index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    /* Estilo especial */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resolución-de-problemas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resolución-de-problemas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resolución de problemas&lt;/h2&gt;
&lt;h3 id=&quot;problema-el-contador-no-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-el-contador-no-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema: El contador no funciona&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Asegurate de que el contador se inicializa antes del bucle:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Debe estar antes de while()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_rows&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;problema-css-nth-child-no-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-css-nth-child-no-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema: CSS nth-child no funciona&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Comprueba si hay elementos envolventes que afectan a nth-child:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Si los elementos estan envueltos, apunta a los hijos del contenedor */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .item:nth-child&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;even&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) { }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;problema-modulo-devuelve-valores-incorrectos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-modulo-devuelve-valores-incorrectos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema: Modulo devuelve valores incorrectos&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Usa comparación estricta:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) { }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Evitar (comparacion flexible)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $i &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) { }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Estilizar los campos ACF Repeater requiere comprender tanto la lógica PHP como los selectores CSS. El operador modulo (&lt;code&gt;%&lt;/code&gt;) es tu aliado para crear patrones alternantes en PHP, mientras que CSS &lt;code&gt;:nth-child()&lt;/code&gt; es perfecto para estilos puramente visuales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puntos clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa el operador modulo para patrones alternantes basados en PHP&lt;/li&gt;
&lt;li&gt;Prefiere CSS &lt;code&gt;:nth-child()&lt;/code&gt; para cambios solo visuales&lt;/li&gt;
&lt;li&gt;Combina ambos enfoques para disposiciones complejas&lt;/li&gt;
&lt;li&gt;Siempre escapa la salida por seguridad&lt;/li&gt;
&lt;li&gt;Almacena en cache la salida del repeater para rendimiento&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;get_row_index()&lt;/code&gt; para depuracion y lógica compleja&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En 2026, con las capacidades CSS modernas, prefiere soluciones CSS cuando sea posible, pero no dudes en usar PHP cuando necesites diferentes estructuras HTML o lógica condicional compleja.&lt;/p&gt;</content:encoded><category>development</category><category>plugins</category><category domain="tag">acf</category><category domain="tag">css</category><category domain="tag">php</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Efecto hover de imagen CSS - Tutorial de transicion fade suave</title><link>https://wppoland.com/es/fade-in-fade-out-on-image-hover-using-css3/</link><guid isPermaLink="true">https://wppoland.com/es/fade-in-fade-out-on-image-hover-using-css3/</guid><description>Aprende a hacer fade de una imagen o boton al pasar el raton con CSS puro. Incluye ejemplos de transicion simples, consejos de temporizado y efecto fade suave sin JavaScript.</description><pubDate>Sun, 02 Feb 2014 18:52:16 GMT</pubDate><content:encoded>&lt;p&gt;En los viejos tiempos (era jQuery), usabamos &lt;code&gt;.animate()&lt;/code&gt; o &lt;code&gt;.fadeIn()&lt;/code&gt; para efectos hover. En 2026, usar JavaScript para esto es un crimen contra el rendimiento.&lt;/p&gt;
&lt;p&gt;CSS3 &lt;code&gt;transition&lt;/code&gt; esta acelerado por hardware (manejado por la GPU), es más suave y no requiere ningun script.&lt;/p&gt;
&lt;p&gt;Si buscaste un efecto hover de imagen CSS, la respuesta más corta es esta: anade &lt;code&gt;transition: opacity 0.3s ease-in-out;&lt;/code&gt; al elemento, luego cambia &lt;code&gt;opacity&lt;/code&gt; en &lt;code&gt;:hover&lt;/code&gt;. Ese patron cubre la mayoria de atenuaciones de imagen, miniaturas de tarjetas, fades de boton y revelaciones de overlay.&lt;/p&gt;
&lt;h2 id=&quot;como-cambiar-el-efecto-fade-out-al-pasar-el-raton-con-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-cambiar-el-efecto-fade-out-al-pasar-el-raton-con-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como cambiar el efecto fade out al pasar el raton con CSS&lt;/h2&gt;
&lt;p&gt;La peticion mas comun es un cambio suave de opacity cuando el cursor entra o sale de un elemento. Este es el patron minimo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esa es toda la implementacion. Tres declaraciones en el estado base, una en el estado hover. La propiedad &lt;code&gt;transition&lt;/code&gt; indica al navegador que anime el cambio de &lt;code&gt;opacity&lt;/code&gt; durante 0.3 segundos con una curva ease-in-out.&lt;/p&gt;
&lt;p&gt;Este patron funciona en imagenes, botones, tarjetas, enlaces, iconos y cualquier otro elemento HTML. Ajusta la opacity objetivo (0.7 en este ejemplo) para controlar cuanto se atenua el elemento. Valores mas bajos crean un efecto fade mas fuerte.&lt;/p&gt;
&lt;p&gt;Para un efecto fade-in en hover (el elemento empieza atenuado y se vuelve completamente visible), invierte los valores:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;por-que-las-transiciones-css-superan-a-javascript&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-las-transiciones-css-superan-a-javascript&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que las transiciones CSS superan a JavaScript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Beneficios de rendimiento:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aceleracion GPU&lt;/strong&gt;: Las transiciones CSS se ejecutan en la tarjeta grafica, no en la CPU&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin ejecucion JavaScript&lt;/strong&gt;: Cero sobrecarga de scripts, respuesta instantanea&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización del navegador&lt;/strong&gt;: Los navegadores optimizan las animaciones CSS nativamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Amigable con la bateria&lt;/strong&gt;: Menos uso de CPU significa mayor duracion de bateria en móvil&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Los números:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Animacion JavaScript: ~16ms por frame (objetivo 60fps)&lt;/li&gt;
&lt;li&gt;Transicion CSS: &amp;#x3C;1ms de sobrecarga, el navegador maneja el resto&lt;/li&gt;
&lt;li&gt;Tamaño de archivo: CSS es más pequeño que las librerias jQuery/JavaScript&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;efecto-fade-básico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#efecto-fade-básico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Efecto fade básico&lt;/h2&gt;
&lt;p&gt;Digamos que tienes una imagen que deberia atenuarse cuando pasas el raton sobre ella.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* El elemento */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.hover-image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    /* La parte magica */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* El activador */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.hover-image:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Que ocurre:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La imagen comienza con &lt;code&gt;opacity: 1&lt;/code&gt; (totalmente visible)&lt;/li&gt;
&lt;li&gt;Al hover, transiciona a &lt;code&gt;opacity: 0.7&lt;/code&gt; (30% transparente)&lt;/li&gt;
&lt;li&gt;Tarda 0.3 segundos con easing suave&lt;/li&gt;
&lt;li&gt;Vuelve a &lt;code&gt;opacity: 1&lt;/code&gt; cuando termina el hover&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;entendiendo-las-propiedades-de-transicion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-las-propiedades-de-transicion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo las propiedades de transicion&lt;/h2&gt;
&lt;h3 id=&quot;transition-property&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transition-property&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transition-property&lt;/h3&gt;
&lt;p&gt;Específica que propiedad CSS animar. &lt;strong&gt;Siempre específica propiedades concretas&lt;/strong&gt; en lugar de &lt;code&gt;all&lt;/code&gt; para mejor rendimiento.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Correcto: Propiedad específica */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;transition: opacity 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.3s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Evitar: Anima TODAS las propiedades (impacto en rendimiento) */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;transition: all 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.3s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Propiedades animables:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;opacity&lt;/code&gt; - Fade in/out&lt;/li&gt;
&lt;li&gt;&lt;code&gt;transform&lt;/code&gt; - Escalar, rotar, trasladar&lt;/li&gt;
&lt;li&gt;&lt;code&gt;background-color&lt;/code&gt; - Cambios de color&lt;/li&gt;
&lt;li&gt;&lt;code&gt;border-radius&lt;/code&gt; - Esquinas redondeadas&lt;/li&gt;
&lt;li&gt;&lt;code&gt;box-shadow&lt;/code&gt; - Efectos de sombra&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;No animables (evitar):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;display&lt;/code&gt; - Usa &lt;code&gt;opacity&lt;/code&gt; + &lt;code&gt;visibility&lt;/code&gt; en su lugar&lt;/li&gt;
&lt;li&gt;&lt;code&gt;font-family&lt;/code&gt; - Solo cambio instantaneo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;transition-duration&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transition-duration&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transition-duration&lt;/h3&gt;
&lt;p&gt;Cuanto dura la animacion. Valores comunes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores prácticas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0.2-0.3s&lt;/strong&gt;: Interacciones UI estándar (botones, enlaces)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0.15s&lt;/strong&gt;: Micro-interacciones (tooltips, badges)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0.4-0.6s&lt;/strong&gt;: Transiciones de página, animaciones de modal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&gt;1s&lt;/strong&gt;: Evitar (se siente lento)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;transition-timing-function&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transition-timing-function&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transition-timing-function&lt;/h3&gt;
&lt;p&gt;Controla la curva de aceleracion. Esto es lo que hace que las animaciones se sientan “naturales”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuando usar cada una:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ease-out&lt;/code&gt;: La mayoria de elementos UI (se siente receptivo)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ease-in-out&lt;/code&gt;: Transiciones suaves y elegantes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ease-in&lt;/code&gt;: Elementos apareciendo (menos comun)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;linear&lt;/code&gt;: Barras de progreso, indicadores de carga&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cubic-bezier&lt;/code&gt;: Sensacion personalizada (usa herramientas como cubic-bezier.com)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;efectos-hover-avanzados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#efectos-hover-avanzados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Efectos hover avanzados&lt;/h2&gt;
&lt;h3 id=&quot;1-fade--escala-efecto-zoom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-fade--escala-efecto-zoom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Fade + escala (efecto zoom)&lt;/h3&gt;
&lt;p&gt;Combina opacity y transform para un efecto zoom moderno:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.card-img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cubic-bezier&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.25&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.46&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.45&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.94&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.card-img:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.05&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-fade--texto-overlay&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-fade--texto-overlay&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Fade + texto overlay&lt;/h3&gt;
&lt;p&gt;Perfecto para galerias de imágenes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;relative&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    overflow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .overlay&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    left&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    right&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    bottom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    align-items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    justify-content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;white&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.image-container:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .overlay&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-fade--cambio-de-color&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-fade--cambio-de-color&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Fade + cambio de color&lt;/h3&gt;
&lt;p&gt;Para botones y enlaces:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.button&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#0073aa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;white&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, background-color &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.button:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#005177&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.button:active&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.98&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-fade--sombra&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-fade--sombra&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Fade + sombra&lt;/h3&gt;
&lt;p&gt;Anadir profundidad al hover:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.card&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    box-shadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, box-shadow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.card:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.95&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    box-shadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;translateY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;-4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;optimización-del-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;usar-transform-en-lugar-de-posicióntamaño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usar-transform-en-lugar-de-posicióntamaño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usar transform en lugar de posición/tamaño&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Incorrecto (desencadena recalculo de layout):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    left&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;left&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    left&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Correcto (acelerado por GPU):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;translateX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.element:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;translateX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limitar-propiedades-animadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitar-propiedades-animadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitar propiedades animadas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Incorrecto */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;transition: all 0.3s; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Anima todo */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Correcto */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;transition: opacity 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.3s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;usar-will-change-para-animaciones-complejas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usar-will-change-para-animaciones-complejas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usar will-change para animaciones complejas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.animated-element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    will-change&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: transform, opacity;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;ejemplos-del-mundo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplos-del-mundo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplos del mundo real&lt;/h2&gt;
&lt;h3 id=&quot;ejemplo-1-tarjeta-de-producto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-1-tarjeta-de-producto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo 1: Tarjeta de producto&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.product-card&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;relative&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    overflow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.product-card&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cubic-bezier&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.25&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.46&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.45&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.94&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.product-card:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.product-card&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .badge&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    right&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.product-card:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .badge&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ejemplo-2-menú-de-navegación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-2-menú-de-navegación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo 2: Menú de navegación&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.nav-link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-bottom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; transparent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, border-color &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.nav-link:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-bottom-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#0073aa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ejemplo-3-galeria-de-imágenes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-3-galeria-de-imágenes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo 3: Galeria de imágenes&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.gallery-item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;relative&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    overflow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.gallery-item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;brightness&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, filter &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.gallery-item:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;brightness&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.05&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.gallery-item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .caption&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    bottom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    left&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    right&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;linear-gradient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;transparent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;white&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;translateY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.gallery-item:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .caption&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;translateY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;consideraciones-de-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de accesibilidad&lt;/h2&gt;
&lt;h3 id=&quot;respetar-movimiento-reducido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#respetar-movimiento-reducido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Respetar movimiento reducido&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Predeterminado: animaciones habilitadas */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.animated-element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Preferencia de movimiento reducido */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (prefers-reduced-motion: reduce) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .animated-element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;estados-de-focus&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estados-de-focus&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estados de focus&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Asegurar que los efectos hover también funciónen en focus */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.interactive-element&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.interactive-element:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.interactive-element:focus&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.02&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Focus visible para navegación por teclado */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.interactive-element:focus-visible&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    outline&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; #0073aa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    outline-offset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;consideraciones-para-dispositivos-tactiles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-para-dispositivos-tactiles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones para dispositivos tactiles&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Habilitar efectos hover solo en dispositivos con hover */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .hover-only-effect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .hover-only-effect:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.05&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;integración-con-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con WordPress&lt;/h2&gt;
&lt;h3 id=&quot;anadir-css-via-functionsphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#anadir-css-via-functionsphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Anadir CSS via functions.php&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_custom_css&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text/css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;custom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.3s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.3s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;custom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.85&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.03&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_custom_css&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;variables-css-personalizadas-para-efectos-reutilizables&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#variables-css-personalizadas-para-efectos-reutilizables&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Variables CSS personalizadas para efectos reutilizables&lt;/h2&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;:root&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --transition-duration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --transition-easing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ease-in-out&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --hover-opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;    --hover-scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.05&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.hover-effect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: opacity &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--transition-duration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--transition-easing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                transform &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--transition-duration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--transition-easing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.hover-effect:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--hover-opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;--hover-scale&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (prefers-color-scheme: dark) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    :root&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;        --hover-opacity&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Las transiciones CSS son la forma moderna y eficiente de crear efectos hover. Son rápidas, suaves, simples, accesibles y mantenibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puntos clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa propiedades específicas, no &lt;code&gt;all&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;0.2-0.3s es el punto optimo para interacciones UI&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ease-out&lt;/code&gt; se siente más natural&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;transform&lt;/code&gt; en lugar de propiedades de posición/tamaño&lt;/li&gt;
&lt;li&gt;Combina multiples propiedades para efectos ricos&lt;/li&gt;
&lt;li&gt;Prueba en dispositivos reales para rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En 2026, las transiciones CSS son el estándar para efectos hover. Las animaciones JavaScript solo son necesarias para animaciones complejas e interactivas que CSS no puede manejar.&lt;/p&gt;
&lt;p&gt;Explora nuestro &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>webdesign</category><category>css</category><category domain="tag">css3</category><category domain="tag">animation</category><category domain="tag">hover</category><enclosure url="https://wppoland.com/images/og/web-developer-writing-code.jpg" type="image/jpeg"/></item><item><title>Desactivar la barra de administración de WordPress para no administradores</title><link>https://wppoland.com/es/disable-admin-bar-for-all-users-except-for-administrators/</link><guid isPermaLink="true">https://wppoland.com/es/disable-admin-bar-for-all-users-except-for-administrators/</guid><description>Oculta la barra de administración de WordPress para suscriptores, clientes y otros usuarios no administradores con un simple fragmento de PHP para una UX frontend más limpia.</description><pubDate>Mon, 06 Jan 2014 08:23:22 GMT</pubDate><content:encoded>&lt;p&gt;Cuando construyes un sitio de membresia, tienda online (WooCommerce) o una plataforma donde los usuarios inician sesion, el comportamiento predeterminado de WordPress puede ser molesto. Cada usuario conectado ve la &lt;strong&gt;barra de administración&lt;/strong&gt; negra en la parte superior de la pantalla.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.
Aunque es útil para ti (el admin) para editar rápidamente entradas o saltar al panel, rompe la inmersion para un clientes regular. Se ve “WordPress-esco” y a menudo se superpone con tu cabecera personalizada.&lt;/p&gt;
&lt;p&gt;Si tu objetivo es un area de miembros o escaparate más limpio, la solución habitual es ocultar la barra de herramientas en el frontend para usuarios que no necesitan acceso editorial, dejando la experiencia del panel intacta para administradores.&lt;/p&gt;
&lt;h2 id=&quot;el-problema-desorden-de-la-barra-de-administración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-desorden-de-la-barra-de-administración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema: Desorden de la barra de administración&lt;/h2&gt;
&lt;p&gt;La barra de administración de WordPress (también llamada Toolbar) aparece para todos los usuarios conectados por defecto. Aunque es útil para administradores del sitio, puede ser problematica para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sitios de membresia&lt;/strong&gt;: Rompe el aspecto profesional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiendas de comercio electronico&lt;/strong&gt;: Distrae de la experiencia de compra&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portales de clientes&lt;/strong&gt;: Se ve poco profesional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicaciones personalizadas&lt;/strong&gt;: No coincide con tu diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Problemás comunes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se superpone con cabeceras personalizadas&lt;/li&gt;
&lt;li&gt;Muestra branding de WordPress (se ve poco profesional)&lt;/li&gt;
&lt;li&gt;Revela funcionalidad de admin a no administradores&lt;/li&gt;
&lt;li&gt;Ocupa espacio vertical&lt;/li&gt;
&lt;li&gt;Puede entrar en conflicto con CSS personalizado&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;la-solución-completa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-completa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución completa&lt;/h2&gt;
&lt;p&gt;No necesitas un plugin para arreglar esto. Solo anade este fragmento completo al archivo &lt;code&gt;functions.php&lt;/code&gt; de tu tema o a un plugin específico del sitio.&lt;/p&gt;
&lt;h3 id=&quot;implementación-básica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-básica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación básica&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Desactivar la barra de admin para todos excepto administradores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_remove_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;como-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;current_user_can(&apos;administrator&apos;)&lt;/code&gt;&lt;/strong&gt;: Comprueba si el usuario actual tiene el rol ‘Administrador’.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;! is_admin()&lt;/code&gt;&lt;/strong&gt;: Asegura que estamos en el frontend del sitio (no queremos ocultar la barra dentro del Panel).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;show_admin_bar(false)&lt;/code&gt;&lt;/strong&gt;: La función magica que la desactiva.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Importante:&lt;/strong&gt; El hook &lt;code&gt;after_setup_theme&lt;/code&gt; se ejecuta lo suficientemente temprano para evitar que la barra de admin se cargue, lo cual es más eficiente que eliminarla despues de renderizarla.&lt;/p&gt;
&lt;h2 id=&quot;implementaciones-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementaciones-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementaciones avanzadas&lt;/h2&gt;
&lt;h3 id=&quot;ocultacion-basada-en-roles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ocultacion-basada-en-roles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ocultacion basada en roles&lt;/h3&gt;
&lt;p&gt;Ocultar la barra de admin para roles de usuario específicos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Ocultar barra de admin para roles específicos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_admin_bar_by_role&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_remove_admin_bar_by_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Siempre mostrar en area de admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $current_user &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_current_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Ocultar para estos roles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $hidden_roles &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;subscriber&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;customer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contributor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array_intersect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $hidden_roles, $current_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ocultacion-basada-en-capacidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ocultacion-basada-en-capacidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ocultacion basada en capacidades&lt;/h3&gt;
&lt;p&gt;Usa capacidades en lugar de roles para más flexibilidad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Ocultar barra de admin basada en capacidades&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_admin_bar_by_capability&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_remove_admin_bar_by_capability&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Ocultar si el usuario no puede editar entradas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ocultacion-condicional-específica-por-página&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ocultacion-condicional-específica-por-página&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ocultacion condicional (específica por página)&lt;/h3&gt;
&lt;p&gt;Ocultar la barra de admin en páginas o tipos de entrada específicos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Ocultar barra de admin en páginas específicas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_conditional_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_conditional_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Ocultar en páginas de WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;function_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;is_woocommerce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_woocommerce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_woocommerce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Ocultar en tipos de entrada personalizados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;course&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;membership&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;control-basado-en-meta-del-usuario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#control-basado-en-meta-del-usuario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Control basado en meta del usuario&lt;/h3&gt;
&lt;p&gt;Permite a los usuarios alternar la barra de admin via su perfil:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Permitir a usuarios alternar barra de admin en perfil&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;show_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_user_preference_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_user_preference_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $show ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $show;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $user_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_current_user_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $user_preference &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_user_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $user_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;show_admin_bar_front&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $user_preference &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $show;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;alternativa-solo-css-no-recomendada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativa-solo-css-no-recomendada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativa solo CSS (no recomendada)&lt;/h2&gt;
&lt;p&gt;Puedes ocultar la barra de admin con CSS, pero es menos eficiente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Ocultar barra de admin con CSS */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;#wpadminbar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !important&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Ajustar padding del body */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.admin-bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .site-header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !important&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Por que no se recomienda:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La barra de admin sigue cargandose (desperdicia recursos)&lt;/li&gt;
&lt;li&gt;El JavaScript sigue ejecutandose&lt;/li&gt;
&lt;li&gt;Puede causar desplazamientos de layout&lt;/li&gt;
&lt;li&gt;No es semántico (ocultar vs. no cargar)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;consideraciones-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;por-que-el-código-supera-al-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-código-supera-al-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el código supera al CSS&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Enfoque CSS:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El HTML de la barra de admin sigue cargandose (~15KB)&lt;/li&gt;
&lt;li&gt;El JavaScript sigue ejecutandose (~10KB)&lt;/li&gt;
&lt;li&gt;Los estilos siguen cargandose (~5KB)&lt;/li&gt;
&lt;li&gt;Total: ~30KB desperdiciados por página&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Enfoque de código:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La barra de admin nunca se carga&lt;/li&gt;
&lt;li&gt;Cero sobrecarga&lt;/li&gt;
&lt;li&gt;HTML más limpio&lt;/li&gt;
&lt;li&gt;Mejor rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;temporizacion-del-hook&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#temporizacion-del-hook&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Temporizacion del hook&lt;/h3&gt;
&lt;p&gt;Usa &lt;code&gt;after_setup_theme&lt;/code&gt; en lugar de &lt;code&gt;init&lt;/code&gt; o &lt;code&gt;wp_loaded&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto: Hook temprano, previene la carga&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Incorrecto: Demasiado tarde, la barra ya cargo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_loaded&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;por-que-usar-código-en-lugar-de-un-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-usar-código-en-lugar-de-un-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que usar código en lugar de un plugin?&lt;/h2&gt;
&lt;p&gt;Existen plugins como “Hide Admin Bar” que hacen exactamente esto. Pero por que instalar un plugin (que anade opciones en la base de datos y potencial sobrecarga) para 5 lineas de código?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sobrecarga del plugin:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consultas a la base de datos para opciones&lt;/li&gt;
&lt;li&gt;Archivos PHP adicionales cargados&lt;/li&gt;
&lt;li&gt;Mantenimiento de actualizaciones del plugin&lt;/li&gt;
&lt;li&gt;Potenciales conflictos&lt;/li&gt;
&lt;li&gt;Peticiones HTTP extra&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Beneficios del código:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cero sobrecarga&lt;/li&gt;
&lt;li&gt;Control de versiones&lt;/li&gt;
&lt;li&gt;Sin conflictos de plugins&lt;/li&gt;
&lt;li&gt;Ejecucion más rápida&lt;/li&gt;
&lt;li&gt;Parte de tu tema/plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;casos-de-uso-del-mundo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-uso-del-mundo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de uso del mundo real&lt;/h2&gt;
&lt;h3 id=&quot;caso-de-uso-1-sitio-de-membresia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-uso-1-sitio-de-membresia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de uso 1: Sitio de membresia&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;caso-de-uso-2-tienda-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-uso-2-tienda-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de uso 2: Tienda WooCommerce&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $user &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_current_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;customer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;caso-de-uso-3-blog-multi-autor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-uso-3-blog-multi-autor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de uso 3: Blog multi-autor&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $hidden_roles &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;author&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contributor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;subscriber&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $current_user &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_current_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array_intersect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $hidden_roles, $current_user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resolución-de-problemas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resolución-de-problemas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resolución de problemas&lt;/h2&gt;
&lt;h3 id=&quot;problema-la-barra-de-admin-sigue-mostrando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-la-barra-de-admin-sigue-mostrando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema: La barra de admin sigue mostrando&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_force_remove_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_force_remove_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;show_admin_bar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;problema-problemás-de-layout-despues-de-ocultar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#problema-problemás-de-layout-despues-de-ocultar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Problema: Problemás de layout despues de ocultar&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt; Ajustar padding del body si es necesario:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.admin-bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    padding-top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !important&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.site-header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mejores-prácticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas&lt;/h2&gt;
&lt;h3 id=&quot;1-siempre-comprobar-is_admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-siempre-comprobar-is_admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Siempre comprobar is_admin()&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Incorrecto (oculta en area de admin)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-usar-capacidades-no-roles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-usar-capacidades-no-roles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Usar capacidades, no roles&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto: Mas flexible&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    show_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-probar-todos-los-roles-de-usuario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-probar-todos-los-roles-de-usuario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Probar todos los roles de usuario&lt;/h3&gt;
&lt;p&gt;Siempre prueba con diferentes roles de usuario:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Administrador (debe ver la barra)&lt;/li&gt;
&lt;li&gt;Editor (decidir según necesidades)&lt;/li&gt;
&lt;li&gt;Autor (decidir según necesidades)&lt;/li&gt;
&lt;li&gt;Suscriptor (generalmente ocultar)&lt;/li&gt;
&lt;li&gt;Cliente (generalmente ocultar)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Ocultar la barra de administración de WordPress para no administradores es una forma simple pero efectiva de mejorar la experiencia de usuario de tu sitio. Hace que tu sitio se vea más profesional y menos “WordPress-esco”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puntos clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa &lt;code&gt;show_admin_bar( false )&lt;/code&gt; en el hook &lt;code&gt;after_setup_theme&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Siempre comprueba &lt;code&gt;is_admin()&lt;/code&gt; para evitar ocultar en el panel&lt;/li&gt;
&lt;li&gt;Usa capacidades para control flexible&lt;/li&gt;
&lt;li&gt;La solución con código es mejor que CSS o plugins&lt;/li&gt;
&lt;li&gt;Prueba con diferentes roles de usuario&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este simple ajuste mejora la experiencia de usuario (UX) de tu sitio significativamente, haciendolo sentir más como una aplicación profesional y menos como un blog estándar. En 2026, con el enfoque en experiencia de usuario y rendimiento, ocultar la barra de admin para no administradores se considera una mejor práctica para sitios de membresia, tiendas de comercio electronico y aplicaciones personalizadas.&lt;/p&gt;</content:encoded><category>wordpress</category><category>snippets</category><category domain="tag">admin bar</category><category domain="tag">ux</category><enclosure url="https://wppoland.com/images/og/wordpress-events-organization-team.jpg" type="image/jpeg"/></item><item><title>Cómo Eliminar la Contraseña de una Hoja de Excel</title><link>https://wppoland.com/es/how-to-remove-excel-sheet-password/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-remove-excel-sheet-password/</guid><description>Aprende a eliminar la contraseña de protección de una hoja de Excel usando macros VBA. Método paso a paso, rápido y sencillo.</description><pubDate>Sun, 25 Aug 2013 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Este artículo en español resume el tema “How To Remove Excel Sheet Password” con un enfoque práctico y actual. La idea no es repetir un titular sin contexto, sino explicar por qué este asunto sigue siendo relevante, qué decisiones conviene tomar y dónde suelen aparecer los errores más comunes en proyectos WordPress reales.&lt;/p&gt;
&lt;h2 id=&quot;contexto-y-relevancia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-relevancia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y relevancia&lt;/h2&gt;
&lt;p&gt;Los temas de contenido, plugins o estrategia editorial suelen parecer secundarios frente a la parte puramente técnica, pero en realidad condicionan mucho el resultado final. Una web con mala estructura editorial, exceso de dependencias o mensajes dispersos rinde peor, posiciona peor y cuesta más mantener.&lt;/p&gt;
&lt;h2 id=&quot;qué-conviene-tener-en-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-conviene-tener-en-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué conviene tener en cuenta&lt;/h2&gt;
&lt;p&gt;La parte útil está en simplificar. Elegir menos herramientas, publicar con una intención clara y construir procesos que permitan mejorar sin rehacer todo cada pocos meses. Eso vale tanto para un blog como para una web corporativa o un proyecto de nicho.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión práctica&lt;/h2&gt;
&lt;p&gt;En ese sentido, esta pieza sirve como base de trabajo. Ayuda a ordenar ideas, tomar mejores decisiones y convertir una necesidad puntual en una mejora más duradera.&lt;/p&gt;
&lt;p&gt;Fuente base revisada: how-to-remove-excel-sheet-password.en.md. El contenido se ha adaptado a una versión española útil, evitando dejar una entrada mínima o vacía dentro del repositorio multilingüe.&lt;/p&gt;</content:encoded><category>tools</category><category>recommended</category><category domain="tag">excel</category><category domain="tag">vba</category><category domain="tag">password</category><category domain="tag">security</category><enclosure url="https://wppoland.com/images/og/data-security-password-protection.jpg" type="image/jpeg"/></item><item><title>Como exportar datos de WordPress a CSV o Excel</title><link>https://wppoland.com/es/export-wordpress-data-excel-csv/</link><guid isPermaLink="true">https://wppoland.com/es/export-wordpress-data-excel-csv/</guid><description>Aprende como exportar posts, usuarios y datos de WooCommerce de WordPress a CSV o Excel con PHP, WP-CLI o la REST API.</description><pubDate>Sat, 17 Aug 2013 18:55:53 GMT</pubDate><content:encoded>&lt;p&gt;Exportar datos de WordPress no siempre requiere un plugin. Si necesitas posts, usuarios, envios de formularios o pedidos de WooCommerce en una hoja de calculo, el mejor método depende de cuantos datos tienes y a donde necesita ir la exportacion.&lt;/p&gt;
&lt;p&gt;Conoce más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Si quieres la versión corta primero, usa CSV plano para la mayoria de las exportaciones, usa &lt;code&gt;fputcsv()&lt;/code&gt; cuando construyas una descarga en el navegador con PHP, y cambia a WP-CLI cuando el dataset sea demasiado grande para una solicitud de página de administración normal.&lt;/p&gt;
&lt;h2 id=&quot;1-elige-el-método-de-exportacion-correcto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-elige-el-método-de-exportacion-correcto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Elige el método de exportacion correcto&lt;/h2&gt;
&lt;p&gt;Hay tres opciones comunes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Exportacion PHP dentro de WordPress&lt;/strong&gt; para descargas controladas solo para administradores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP-CLI&lt;/strong&gt; para datasets grandes y automatizacion del lado del servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST API&lt;/strong&gt; para dashboards externos, integraciones o flujos de trabajo headless&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si la exportacion es ocasional y pequeña, una descarga basada en PHP es generalmente suficiente. Si es grande o recurrente, WP-CLI es más seguro y fácil de automatizar.&lt;/p&gt;
&lt;h2 id=&quot;2-exportar-csv-con-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-exportar-csv-con-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Exportar CSV con PHP&lt;/h2&gt;
&lt;p&gt;Para exportaciones personalizadas, CSV es el formato más fácil de generar.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_exportar_usuarios_csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Acceso denegado.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type: text/csv; charset=utf-8&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Disposition: attachment; filename=usuarios-exportacion.csv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; fopen&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;php://output&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;w&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    fputcsv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Registrado&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $usuarios &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_users&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user_email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user_registered&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $usuarios &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $usuario ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        fputcsv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $output,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $usuario&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $usuario&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;user_email,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $usuario&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;user_registered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    fclose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto funciona bien para exportaciones más pequeñas o herramientas internas en el area de administración.&lt;/p&gt;
&lt;h2 id=&quot;3-usar-procesamiento-por-lotes-para-exportaciones-más-grandes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-usar-procesamiento-por-lotes-para-exportaciones-más-grandes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Usar procesamiento por lotes para exportaciones más grandes&lt;/h2&gt;
&lt;p&gt;El error más comun es cargar demasiados datos en memoria a la vez. En su lugar, obtiene filas en lotes.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$limite &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 500&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;do&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $limite,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;offset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;         =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $offset,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;         =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ids&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        fputcsv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id ) ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $limite;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;posts ) );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El procesamiento por lotes reduce la presion de memoria y ayuda a prevenir timeouts.&lt;/p&gt;
&lt;h3 id=&quot;exportacion-avanzada-con-metadatos-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#exportacion-avanzada-con-metadatos-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Exportacion avanzada con metadatos personalizados&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_exportar_posts_completo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Acceso denegado.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type: text/csv; charset=utf-8&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Disposition: attachment; filename=posts-completo-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Y-m-d&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;.csv&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; fopen&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;php://output&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;w&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Encabezados con BOM para compatibilidad con Excel&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    fprintf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;chr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0xEF&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; chr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0xBB&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; chr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0xBF&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    fputcsv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;ID&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Título&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Fecha&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Estado&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Autor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Categorias&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Etiquetas&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;URL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Extracto&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $limite &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    do&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $limite,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;offset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;         =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $offset,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $categorias &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_post_categories&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;names&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $etiquetas &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_get_post_tags&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;names&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            fputcsv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_title,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_date,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_status,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;                get_the_author_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;display_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_author ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $categorias ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $etiquetas ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;                get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;                wp_trim_words&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_excerpt &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $offset &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $limite;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_flush&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Liberar memoria del cache de objetos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;found_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $offset );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    fclose&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-usar-wp-cli-para-exportaciones-pesadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-usar-wp-cli-para-exportaciones-pesadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Usar WP-CLI para exportaciones pesadas&lt;/h2&gt;
&lt;p&gt;Si estas exportando decenas de miles de filas, WP-CLI es generalmente la mejor ruta.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --post_type=post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=ID,post_title,post_date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; posts.csv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto es especialmente útil para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;exportaciones grandes de pedidos WooCommerce&lt;/li&gt;
&lt;li&gt;exportaciones nocturnas programadas&lt;/li&gt;
&lt;li&gt;tareas de migración y reportes&lt;/li&gt;
&lt;li&gt;flujos de trabajo internos de BI o hojas de calculo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;comandos-wp-cli-avanzados-para-exportacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comandos-wp-cli-avanzados-para-exportacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comandos WP-CLI avanzados para exportacion&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar usuarios con roles específicos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --role=subscriber&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=ID,user_email,user_registered&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; suscriptores.csv&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar pedidos de WooCommerce&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; shop_order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --fields=id,status,total,date_created&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; pedidos.csv&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Exportar con metadatos personalizados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; eval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;$query = new WP_Query(array(&quot;post_type&quot; =&gt; &quot;product&quot;, &quot;posts_per_page&quot; =&gt; -1));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;echo &quot;ID,Título,Precio,Stock\n&quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;while ($query-&gt;have_posts()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    $query-&gt;the_post();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    $id = get_the_ID();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    printf(&quot;%d,\&quot;%s\&quot;,%s,%s\n&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        $id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        get_the_title(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        get_post_meta($id, &quot;_price&quot;, true),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        get_post_meta($id, &quot;_stock&quot;, true)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; productos.csv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;automatizacion-con-cron-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-con-cron-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion con cron del servidor&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Crontab para exportacion nocturna&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; cd&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --post_type=post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --format=csv&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /backups/posts-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Y&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;m&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.csv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-usar-la-rest-api-cuando-otro-sistema-necesita-los-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-usar-la-rest-api-cuando-otro-sistema-necesita-los-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Usar la REST API cuando otro sistema necesita los datos&lt;/h2&gt;
&lt;p&gt;Si los datos van a otra aplicación en lugar de un humano descargando un archivo, la REST API es generalmente más limpia que generar CSV en WordPress mismo.&lt;/p&gt;
&lt;p&gt;Casos tipicos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sincronizar datos a un dashboard&lt;/li&gt;
&lt;li&gt;exportar contenido a un warehouse o CRM&lt;/li&gt;
&lt;li&gt;disparar exportaciones estructuradas desde otro servicio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ejemplo-de-endpoint-personalizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-de-endpoint-personalizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo de endpoint personalizado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_registrar_endpoint_exportacion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_rest_route&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/v1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/exportar/posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;methods&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;GET&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wppoland_endpoint_exportar_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;permission_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;args&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;página&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;default&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;sanitize_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;absint&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;por_página&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;default&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;sanitize_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;absint&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_api_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_registrar_endpoint_exportacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_endpoint_exportar_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $request ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $request[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;por_página&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $request[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;página&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $datos &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $datos[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;título&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_title,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;fecha&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_date,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_REST_Response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;datos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $datos,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;total&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;found_posts,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;páginas&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;max_num_pages,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-csv-vs-excel&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-csv-vs-excel&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. CSV vs Excel&lt;/h2&gt;
&lt;p&gt;La mayoria de las exportaciones de WordPress deberian comenzar como CSV:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;más fácil de generar&lt;/li&gt;
&lt;li&gt;más simple de depurar&lt;/li&gt;
&lt;li&gt;funciona con Excel, Numbers y Google Sheets&lt;/li&gt;
&lt;li&gt;evita librerias XLSX extra y sobrecarga de memoria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si alguien explicitamente necesita &lt;code&gt;.xlsx&lt;/code&gt;, a menudo es mejor convertir el CSV despues de la exportacion en lugar de hacer que WordPress genere un formato de hoja de calculo más pesado directamente.&lt;/p&gt;
&lt;h3 id=&quot;tip-bom-para-compatibilidad-con-excel&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tip-bom-para-compatibilidad-con-excel&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tip: BOM para compatibilidad con Excel&lt;/h3&gt;
&lt;p&gt;Si tus datos contienen caracteres especiales (acentos, ñ, etc.), agrega un BOM (Byte Order Mark) al inicio del archivo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar BOM para que Excel interprete UTF-8 correctamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;fprintf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;chr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0xEF&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; chr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0xBB&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; chr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0xBF&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sin esto, Excel puede mostrar caracteres corruptos en lugar de acentos.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Usa &lt;strong&gt;PHP + &lt;code&gt;fputcsv()&lt;/code&gt;&lt;/strong&gt; para exportaciones personalizadas más pequeñas.&lt;/li&gt;
&lt;li&gt;Usa &lt;strong&gt;procesamiento por lotes&lt;/strong&gt; cuando el dataset crezca.&lt;/li&gt;
&lt;li&gt;Usa &lt;strong&gt;WP-CLI&lt;/strong&gt; para exportaciones grandes o recurrentes.&lt;/li&gt;
&lt;li&gt;Usa la &lt;strong&gt;REST API&lt;/strong&gt; cuando otro sistema necesite datos estructurados.&lt;/li&gt;
&lt;li&gt;Prefiere &lt;strong&gt;CSV primero&lt;/strong&gt;, luego convierte a Excel solo si es necesario.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con exportaciones complejas de datos de WordPress? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; puede crear soluciones personalizadas. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>database</category><category domain="tag">exportar</category><category domain="tag">csv</category><category domain="tag">excel</category><category domain="tag">wp-cli</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-data-management.jpg" type="image/jpeg"/></item><item><title>Dominando los feeds RSS de WordPress en 2026: Guia del desarrollador</title><link>https://wppoland.com/es/mastering-wordpress-rss-feeds/</link><guid isPermaLink="true">https://wppoland.com/es/mastering-wordpress-rss-feeds/</guid><description>RSS no esta muerto. Aprende como personalizar los feeds de WordPress, agregar imágenes destacadas, soportar Podcasting e implementar JSON Feed para aplicaciones headless.</description><pubDate>Wed, 17 Jul 2013 17:47:07 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Conoce más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;RSS puede parecer una tecnología del pasado, pero en 2026 sigue siendo la columna vertebral de la distribucion de contenido. Alimenta newsletters, podcasts, agregadores de noticias y flujos de trabajo headless. Si eres un desarrollador WordPress serio, dominar los feeds RSS es una habilidad no negociable.&lt;/p&gt;
&lt;h3 id=&quot;por-que-rss-sigue-siendo-relevante-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-rss-sigue-siendo-relevante-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que RSS sigue siendo relevante en 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Casos de uso activos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Newsletters&lt;/strong&gt;: Servicios como Mailchimp y ConvertKit usan RSS para automatizar el envio de nuevos posts a suscriptores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Podcasts&lt;/strong&gt;: Apple Podcasts, Spotify y Google Podcasts consumen feeds RSS con extensiónes iTunes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agregadores&lt;/strong&gt;: Flipboard, Feedly y otros agregadores dependen de RSS para descubrir contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Headless WordPress&lt;/strong&gt;: Los feeds JSON/RSS permiten que aplicaciones frontend consuman contenido de WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatizacion&lt;/strong&gt;: Zapier, IFTTT y Make.com usan RSS como trigger para flujos de trabajo automatizados.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-agregar-imágenes-destacadas-al-feed-rss&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-agregar-imágenes-destacadas-al-feed-rss&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Agregar imágenes destacadas al feed RSS&lt;/h2&gt;
&lt;p&gt;Por defecto, WordPress no incluye imágenes destacadas en el feed RSS. Esto resulta en previsualizaciones pobres en lectores RSS y newsletters.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar imagen destacada al feed RSS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_agregar_imagen_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $imagen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;medium&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;webfeedsFeaturedVisual&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;style&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;display: block; margin-bottom: 10px;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $imagen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_agregar_imagen_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La clase &lt;code&gt;webfeedsFeaturedVisual&lt;/code&gt; es reconocida por lectores RSS como Feedly para mostrar la imagen de forma prominente.&lt;/p&gt;
&lt;h3 id=&quot;optimización-de-imágenes-para-feeds&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-imágenes-para-feeds&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de imágenes para feeds&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Usar una imagen optimizada específica para el feed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_imagen_feed_optimizada&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $url_imagen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_post_thumbnail_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;medium_large&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $título &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; sprintf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;&amp;#x3C;img src=&quot;%s&quot; alt=&quot;%s&quot; class=&quot;webfeedsFeaturedVisual&quot; width=&quot;768&quot; height=&quot;432&quot; /&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($url_imagen),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $título&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_imagen_feed_optimizada&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;2-retrasar-la-publicación-en-el-feed-rss&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-retrasar-la-publicación-en-el-feed-rss&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Retrasar la publicación en el feed RSS&lt;/h2&gt;
&lt;p&gt;Los scrapers de contenido monitorean los feeds RSS de sitios populares para copiar contenido instantaneamente. Si tu feed se actualiza antes de que Google indexe el original, los scrapers pueden posicionarse antes que tu.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Retrasar la publicación del feed 1 hora&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_retrasar_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($where) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $retraso &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;1 HOUR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $where &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.post_date &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; DATE_SUB(&apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; gmdate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Y-m-d H:i:s&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&apos;, INTERVAL &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$retraso&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $where;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;posts_where&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_retrasar_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Por que 1 hora?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Da tiempo suficiente para que la API de Indexacion de Google procese tu URL&lt;/li&gt;
&lt;li&gt;Evita que scrapers obtengan tu contenido antes de ser indexado&lt;/li&gt;
&lt;li&gt;No afecta significativamente a suscriptores legitimos de newsletters&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-incluir-custom-post-types-en-el-feed&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-incluir-custom-post-types-en-el-feed&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Incluir Custom Post Types en el feed&lt;/h2&gt;
&lt;p&gt;Por defecto, solo los posts normales aparecen en &lt;code&gt;/feed/&lt;/code&gt;. Si tienes Custom Post Types, necesitas agregarlos explicitamente.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar CPTs al feed principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_agregar_cpt_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($query) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;portfolio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tutorial&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pre_get_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_agregar_cpt_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;feed-dedicado-para-un-cpt-específico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#feed-dedicado-para-un-cpt-específico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Feed dedicado para un CPT específico&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Crear feed dedicado para un CPT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_registrar_feed_cpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tutoriales&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_render_feed_tutoriales&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_registrar_feed_cpt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_render_feed_tutoriales&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;tutorial&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;DESC&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    query_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type: application/rss+xml; charset=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;blog_charset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    load_template&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ABSPATH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WPINC&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/feed-rss2.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Accesible en: &lt;code&gt;https://tusitio.com/feed/tutoriales/&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;4-feed-compatible-con-apple-podcasts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-feed-compatible-con-apple-podcasts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Feed compatible con Apple Podcasts&lt;/h2&gt;
&lt;p&gt;WordPress puede generar feeds de podcast nativamente usando el namespace XML de iTunes.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar namespace iTunes al feed RSS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_rss_namespace_itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;xmlns:itunes=&quot;http://www.itunes.com/dtds/podcast-1.0.dtd&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;xmlns:content=&quot;http://purl.org/rss/1.0/modules/content/&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rss2_ns&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_rss_namespace_itunes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar metadatos de podcast al canal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_rss_head_itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_bloginfo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_bloginfo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; text&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Technology&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;explicit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;explicit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_url(get_site_icon_url(1400)); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rss2_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_rss_head_itunes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar metadatos por episodio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_rss_item_itunes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $duracion &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_podcast_duracion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $url_audio &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_podcast_audio_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($url_audio) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;enclosure url=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($url_audio) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot; type=&quot;audio/mpeg&quot; /&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;itunes:duration&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($duracion) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/itunes:duration&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;itunes:summary&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/itunes:summary&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rss2_item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_rss_item_itunes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-json-feed-para-aplicaciones-headless&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-json-feed-para-aplicaciones-headless&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. JSON Feed para aplicaciones headless&lt;/h2&gt;
&lt;p&gt;JSON Feed es una alternativa moderna a RSS XML, más fácil de consumir para aplicaciones JavaScript.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar endpoint JSON Feed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_registrar_json_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_render_json_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_registrar_json_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_render_json_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Content-Type: application/feed+json; charset=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;blog_charset&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $items &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $items[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;content_html&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; apply_filters&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_content),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;summary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;date_published&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_post_thumbnail_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;large&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;authors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_author_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;display_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_author))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;version&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://jsonfeed.org/version/1.1&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_bloginfo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;home_page_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;feed_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/feed/json/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;items&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $items,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;JSON_PRETTY_PRINT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; JSON_UNESCAPED_SLASHES&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-seguridad-y-rendimiento-del-feed&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-seguridad-y-rendimiento-del-feed&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Seguridad y rendimiento del feed&lt;/h2&gt;
&lt;h3 id=&quot;cache-del-feed-rss&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cache-del-feed-rss&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cache del feed RSS&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Aumentar el tiempo de cache del feed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_cache_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($seconds) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 1 hora en lugar de los 12 por defecto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_feed_cache_transient_lifetime&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_cache_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limitar-información-sensible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitar-información-sensible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitar información sensible&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Remover información del autor del feed si no es necesaria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_limpiar_feed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Remover shortcodes que no deben aparecer en el feed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; strip_shortcodes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Remover scripts embebidos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $content &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; preg_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;script[^&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;?&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;script&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/is&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $content);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $content;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_limpiar_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;medicion-del-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-del-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion del éxito&lt;/h2&gt;
&lt;p&gt;Realiza un seguimiento de estos indicadores clave de rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suscriptores RSS activos (usa FeedPress o similar)&lt;/li&gt;
&lt;li&gt;Clicks desde newsletters automatizadas por RSS&lt;/li&gt;
&lt;li&gt;Descargas de podcasts por episodio&lt;/li&gt;
&lt;li&gt;Tráfico de agregadores (Flipboard, Feedly)&lt;/li&gt;
&lt;li&gt;Tiempo entre publicación e indexacion de Google&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu estrategia basandote en lo que funciona y lo que no. La optimización de feeds RSS es un proceso continuo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con la personalización de feeds RSS para tu proyecto? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; puede implementar soluciones a medida. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>backend</category><category domain="tag">rss</category><category domain="tag">feed</category><category domain="tag">podcasting</category><category domain="tag">json-feed</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>SEO off-page moderno en 2026: Mas alla de los backlinks (estrategia E-E-A-T)</title><link>https://wppoland.com/es/modern-off-page-seo-beyond-backlinks/</link><guid isPermaLink="true">https://wppoland.com/es/modern-off-page-seo-beyond-backlinks/</guid><description>La construccion de enlaces esta muerta. Descubre la nueva era del SEO Off-Page: PR Digital, Menciones de Marca, señales E-E-A-T, y por que comprar enlaces te penalizara.</description><pubDate>Sat, 18 May 2013 10:04:15 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Implementar exitosamente estas técnicas de SEO requiere un enfoque sistematico que equilibre la optimización técnica con la calidad del contenido. Asi es como ejecutar cada estrategia efectivamente.&lt;/p&gt;
&lt;h3 id=&quot;la-muerte-de-la-construccion-de-enlaces-tradicional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-muerte-de-la-construccion-de-enlaces-tradicional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La muerte de la construccion de enlaces tradicional&lt;/h3&gt;
&lt;p&gt;En 2013, cuando publicamos por primera vez este artículo, comprar enlaces era una práctica comun. En 2026, es un suicidio digital. El algoritmo SpamBrain de Google se ha vuelto tan sofisticado que puede detectar patrones de enlaces artificiales con una precision asombrosa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lo que ha cambiado:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PBNs (Redes Privadas de Blogs)&lt;/strong&gt;: Google las detecta y penaliza automáticamente. No desperdicies tu dinero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guest posting masivo&lt;/strong&gt;: Los enlaces de guest posts de baja calidad ahora son ignorados o penalizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intercambio de enlaces&lt;/strong&gt;: Los esquemás reciprocos obvios son flaggeados por SpamBrain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Directorios de enlaces&lt;/strong&gt;: La mayoria son ignorados; solo los directorios de alta autoridad y nicho tienen algun valor residual.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;e-e-a-t-la-nueva-moneda-del-seo-off-page&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#e-e-a-t-la-nueva-moneda-del-seo-off-page&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;E-E-A-T: La nueva moneda del SEO off-page&lt;/h3&gt;
&lt;p&gt;E-E-A-T significa Experiencia, Conocimiento (Expertise), Autoridad (Authoritativeness) y Confianza (Trustworthiness). No es un factor de ranking directo, sino un marco que Google usa para evaluar la calidad del contenido y la credibilidad del sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Experiencia (Experience):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Demuestra que has usado realmente los productos o servicios sobre los que escribes&lt;/li&gt;
&lt;li&gt;Incluye fotos originales, capturas de pantalla y datos de primera mano&lt;/li&gt;
&lt;li&gt;Comparte casos de estudio reales con resultados medibles&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Conocimiento (Expertise):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Credenciales verificables del autor (certificaciones, educación, experiencia laboral)&lt;/li&gt;
&lt;li&gt;Contenido técnico profundo que solo un experto podria escribir&lt;/li&gt;
&lt;li&gt;Publicaciones en medios reconocidos de la industria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Autoridad (Authoritativeness):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menciones en otros sitios web autorizados&lt;/li&gt;
&lt;li&gt;Citas por parte de pares de la industria&lt;/li&gt;
&lt;li&gt;Premios, reconocimientos y membresias profesionales&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Confianza (Trustworthiness):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Politicas claras de privacidad y terminos de servicio&lt;/li&gt;
&lt;li&gt;Información de contacto verificable&lt;/li&gt;
&lt;li&gt;Historial de contenido preciso y actualizado&lt;/li&gt;
&lt;li&gt;Certificados SSL y seguridad del sitio&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;pr-digital-la-nueva-construccion-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pr-digital-la-nueva-construccion-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PR Digital: La nueva construccion de enlaces&lt;/h2&gt;
&lt;p&gt;El PR Digital es la evolucion natural de la construccion de enlaces. En lugar de pedir enlaces, creas contenido tan valioso que los medios y otros sitios web quieren enlazarte naturalmente.&lt;/p&gt;
&lt;h3 id=&quot;estrategias-de-pr-digital-que-funcionan-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-pr-digital-que-funcionan-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de PR Digital que funcionan en 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Investigacion original y datos propios&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Los periodistas y bloggers necesitan datos. Si tu empresa genera datos únicos, tienes una mina de oro para el PR Digital.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Realiza encuestas en tu industria y pública los resultados&lt;/li&gt;
&lt;li&gt;Analiza datos anonimizados de tus propios clientes para revelar tendencias&lt;/li&gt;
&lt;li&gt;Crea indices o rankings basados en métodología transparente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Comentario experto y reactive PR&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monitorea noticias de tu industria y ofrece comentario experto a periodistas&lt;/li&gt;
&lt;li&gt;Usa plataformas como HARO (Help A Reporter Out) o Connectively&lt;/li&gt;
&lt;li&gt;Responde rápidamente a tendencias emergentes con perspectiva única&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Contenido visual y compartible&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Infografias basadas en datos originales&lt;/li&gt;
&lt;li&gt;Herramientas interactivas gratuitas (calculadoras, generadores, auditores)&lt;/li&gt;
&lt;li&gt;Mapas de datos y visualizaciones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Estudios de caso detallados&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documenta resultados reales con números específicos&lt;/li&gt;
&lt;li&gt;Muestra el proceso completo, no solo el resultado final&lt;/li&gt;
&lt;li&gt;Incluye lecciones aprendidas y errores cometidos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;menciones-de-marca-el-enlace-invisible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#menciones-de-marca-el-enlace-invisible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Menciones de marca: El enlace invisible&lt;/h2&gt;
&lt;p&gt;En 2026, los algoritmos de IA de Google pueden detectar y valorar menciones de tu marca incluso sin un enlace hipertexto. Estas “citaciones” funcionan como señales de autoridad:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como generar menciones de marca:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Participa activamente en comunidades de tu industria&lt;/li&gt;
&lt;li&gt;Comparte opiniones únicas en redes sociales profesionales&lt;/li&gt;
&lt;li&gt;Presenta en conferencias y eventos de la industria&lt;/li&gt;
&lt;li&gt;Colabora con otras marcas en proyectos conjuntos&lt;/li&gt;
&lt;li&gt;Ofrece comentarios valiosos en discusiones publicas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Monitoreo de menciones:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Alerts para tu marca y productos&lt;/li&gt;
&lt;li&gt;Mention.com o Brand24 para monitoreo en tiempo real&lt;/li&gt;
&lt;li&gt;Revisa GSC para consultas de marca emergentes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;configuración-técnica-y-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-técnica-y-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración técnica y optimización&lt;/h2&gt;
&lt;h3 id=&quot;auditoria-del-perfil-de-enlaces-actual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoria-del-perfil-de-enlaces-actual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoria del perfil de enlaces actual&lt;/h3&gt;
&lt;p&gt;Antes de implementar nuevas estrategias, audita tu perfil de enlaces actual:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Exporta tus backlinks&lt;/strong&gt; de Google Search Console, Ahrefs o Semrush&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identifica patrones problematicos&lt;/strong&gt;: Muchos enlaces de un solo dominio, anclas sobre-optimizadas, enlaces de sitios de baja calidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documenta tu baseline&lt;/strong&gt;: Número de dominios de referencia, distribucion de anclas, ratio follow/nofollow&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;la-herramienta-disavow-usala-con-precaucion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-herramienta-disavow-usala-con-precaucion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La herramienta Disavow: Usala con precaucion&lt;/h3&gt;
&lt;p&gt;En 2026, la herramienta Disavow de Google rara vez es necesaria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SpamBrain ignora automáticamente&lt;/strong&gt; la mayoria de enlaces spam&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solo usa Disavow&lt;/strong&gt; si tienes una accion manual activa en GSC&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nunca la uses proactivamente&lt;/strong&gt; - puedes desautorizar enlaces valiosos accidentalmente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización de contenido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de investigación de palabras clave&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica palabras clave primarias y secundarias&lt;/li&gt;
&lt;li&gt;Analiza la intencion de búsqueda para cada termino&lt;/li&gt;
&lt;li&gt;Mapea palabras clave al contenido existente&lt;/li&gt;
&lt;li&gt;Identifica brechas de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación y optimización de contenido&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escribe títulos y meta descripciones atractivos&lt;/li&gt;
&lt;li&gt;Estructura el contenido con jerarquía de encabezados adecuada&lt;/li&gt;
&lt;li&gt;Incluye enlaces internos y externos relevantes&lt;/li&gt;
&lt;li&gt;Optimiza imágenes con texto alternativo descriptivo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asegura la responsividad móvil&lt;/li&gt;
&lt;li&gt;Mejora la velocidad de carga de la página&lt;/li&gt;
&lt;li&gt;Implementa marcado schema&lt;/li&gt;
&lt;li&gt;Corrige errores de rastreo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;señales-sociales-y-su-impacto-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-sociales-y-su-impacto-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales sociales y su impacto real&lt;/h2&gt;
&lt;p&gt;Aunque las señales sociales no son un factor de ranking directo, contribuyen indirectamente al SEO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Amplificacion de contenido&lt;/strong&gt;: Mas compartidos = más visibilidad = más enlaces naturales potenciales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Señales de marca&lt;/strong&gt;: Actividad social consistente refuerza la presencia de marca&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indexacion&lt;/strong&gt;: El contenido compartido en redes sociales a menudo se descubre e indexa más rápido&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;plataformás-prioritarias-para-señales-de-autoridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plataformás-prioritarias-para-señales-de-autoridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plataformás prioritarias para señales de autoridad&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;: Para contenido B2B y liderazgo de pensamiento profesional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Twitter/X&lt;/strong&gt;: Para comentario en tiempo real y PR reactivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;: Para contenido educativo que genera backlinks desde blogs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Podcasts&lt;/strong&gt;: Para alcanzar audiencias de nicho y generar menciones de marca&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;midiendo-el-éxito-del-seo-off-page&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-el-éxito-del-seo-off-page&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo el éxito del SEO off-page&lt;/h2&gt;
&lt;p&gt;Realiza un seguimiento de estos indicadores clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crecimiento del tráfico organico&lt;/li&gt;
&lt;li&gt;Mejoras en el ranking de palabras clave&lt;/li&gt;
&lt;li&gt;Tasas de clics (CTR)&lt;/li&gt;
&lt;li&gt;Tasas de conversión&lt;/li&gt;
&lt;li&gt;Tasas de rebote&lt;/li&gt;
&lt;li&gt;Número de dominios de referencia únicos&lt;/li&gt;
&lt;li&gt;Menciones de marca (con y sin enlace)&lt;/li&gt;
&lt;li&gt;Autoridad de dominio (DR/DA)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu estrategia basandote en lo que funciona y lo que no. El SEO es un proceso continuo, no una tarea única.&lt;/p&gt;
&lt;h2 id=&quot;plan-de-accion-de-90-dias-para-seo-off-page&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-accion-de-90-dias-para-seo-off-page&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de accion de 90 dias para SEO off-page&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dias 1-30: Auditoria y fundamentos&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Audita tu perfil de enlaces actual&lt;/li&gt;
&lt;li&gt;Configura monitoreo de menciones de marca&lt;/li&gt;
&lt;li&gt;Identifica 10 oportunidades de PR Digital&lt;/li&gt;
&lt;li&gt;Optimiza perfiles de autor en tu sitio para E-E-A-T&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dias 31-60: Creación de activos&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pública al menos una investigación original o estudio de caso&lt;/li&gt;
&lt;li&gt;Crea una herramienta o recurso gratuito para tu nicho&lt;/li&gt;
&lt;li&gt;Inicia outreach con 5 periodistas o medios relevantes&lt;/li&gt;
&lt;li&gt;Participa activamente en 3 comunidades de tu industria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dias 61-90: Escalado y optimización&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analiza que tacticas generaron mejores resultados&lt;/li&gt;
&lt;li&gt;Duplica las estrategias exitosas&lt;/li&gt;
&lt;li&gt;Refina tu proceso de PR Digital basandote en datos&lt;/li&gt;
&lt;li&gt;Planifica el siguiente trimestre con objetivos medibles&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con tu estrategia de SEO off-page? Nuestro equipo de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO&lt;/a&gt; puede diseñar un plan personalizado. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category domain="tag">seo-off-page</category><category domain="tag">estrategia-backlinks</category><category domain="tag">e-e-a-t</category><category domain="tag">pr-digital</category><enclosure url="https://wppoland.com/images/og/naturalne-zdobywanie-linkow.jpg" type="image/jpeg"/></item><item><title>Roles y Capacidades de WordPress - Guia para Desarrolladores</title><link>https://wppoland.com/es/wordpress-roles-and-capabilities-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-roles-and-capabilities-guide/</guid><description>Deja de dar acceso de Administrador a todos los usuarios. Aprende como funcionan realmente los roles y capacidades de WordPress, y como disenar permisos más seguros.</description><pubDate>Sun, 31 Mar 2013 18:32:25 GMT</pubDate><content:encoded>&lt;p&gt;El mayor fallo de seguridad en la mayoria de los sitios WordPress no es una vulnerabilidad de plugin. Es dar al clientes acceso de “Administrador” cuando solo necesita editar publicaciónes. O peor aun, dar a un “Becario” la capacidad de &lt;code&gt;switch_themes&lt;/code&gt;. Estos errores de gestión de permisos son increiblemente comunes y representan un riesgo de seguridad significativo que la mayoria de las agencias y desarrolladores subestiman gravemente.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;WordPress tiene un poderoso sistema de Lista de Control de Acceso (ACL) integrado. Se llama &lt;strong&gt;Roles y Capacidades&lt;/strong&gt;, y dominar este sistema es esencial para cualquier &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; que se tome en serio la seguridad. En esta guía, iremos más alla del rol “Editor” predeterminado y aprenderemos a arquitectar permisos seguros para cualquier escenario.&lt;/p&gt;
&lt;p&gt;Si quieres la conclusion práctica primero: deja de pensar en nombres de roles y comienza a pensar en capacidades. Ese único cambio de mentalidad generalmente lleva a un diseño de permisos más limpio y menos atajos peligrosos.&lt;/p&gt;
&lt;h2 id=&quot;1-conceptos-rol-vs-capacidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-conceptos-rol-vs-capacidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Conceptos: Rol vs capacidad&lt;/h2&gt;
&lt;p&gt;El sistema de permisos de WordPress se basa en dos conceptos fundamentales que todo desarrollador debe entender profundamente antes de implementar cualquier lógica de control de acceso.&lt;/p&gt;
&lt;h3 id=&quot;capacidad-cap&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capacidad-cap&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capacidad (Cap)&lt;/h3&gt;
&lt;p&gt;Un permiso específico para hacer &lt;em&gt;una cosa&lt;/em&gt;. Las capacidades son las unidades atomicas del sistema de permisos de WordPress. Cada capacidad controla el acceso a una funcionalidad específica y claramente definida. Ejemplos incluyen &lt;code&gt;edit_posts&lt;/code&gt;, &lt;code&gt;publish_pages&lt;/code&gt;, &lt;code&gt;install_plugins&lt;/code&gt;, &lt;code&gt;manage_options&lt;/code&gt; y &lt;code&gt;edit_theme_options&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Las capacidades pueden ser primitivas (definidas directamente en la base de datos) o meta-capacidades (calculadas dinamicamente basandose en el contexto). Por ejemplo, &lt;code&gt;edit_post&lt;/code&gt; es una meta-capacidad que se resuelve a &lt;code&gt;edit_posts&lt;/code&gt; o &lt;code&gt;edit_others_posts&lt;/code&gt; dependiendo de si el usuario es el autor de la publicación.&lt;/p&gt;
&lt;h3 id=&quot;rol&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rol&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rol&lt;/h3&gt;
&lt;p&gt;Una coleccion de capacidades agrupadas bajo un nombre descriptivo. Por ejemplo, el rol &lt;code&gt;Editor&lt;/code&gt; incluye &lt;code&gt;edit_posts&lt;/code&gt; + &lt;code&gt;publish_posts&lt;/code&gt; + &lt;code&gt;manage_categories&lt;/code&gt; (pero NO &lt;code&gt;install_plugins&lt;/code&gt;). Los roles proporcionan una forma conveniente de asignar multiples capacidades a un usuario de una vez, pero no deben ser la base de tus verificaciónes de acceso.&lt;/p&gt;
&lt;p&gt;WordPress incluye cinco roles predeterminados: Administrador, Editor, Autor, Colaborador y Suscriptor. Cada uno tiene un conjunto diferente de capacidades que definen lo que los usuarios con ese rol pueden hacer en el panel de administración y en el frontend.&lt;/p&gt;
&lt;h3 id=&quot;regla-de-oro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#regla-de-oro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Regla de Oro&lt;/h3&gt;
&lt;p&gt;Siempre verifica Capacidades, nunca Roles. Esta regla es fundamental para escribir código seguro y mantenible.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// INCORRECTO - nunca hagas esto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// CORRECTO - siempre verifica capacidades&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La razon es simple: si verificas el rol, tu código se rompe cuando alguien crea un rol personalizado con las capacidades necesarias pero un nombre diferente. Si verificas la capacidad, tu código funciona con cualquier rol que tenga el permiso adecuado, incluyendo roles personalizados creados en el futuro.&lt;/p&gt;
&lt;h2 id=&quot;2-creando-un-rol-personalizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-creando-un-rol-personalizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Creando un rol personalizado&lt;/h2&gt;
&lt;p&gt;Supongamos que tienes un “Gerente de Tienda” que necesita gestionar Productos pero no deberia tocar tu Tema ni Plugins. Crear un rol personalizado es la solución correcta en lugar de modificar roles existentes.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_store_manager_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;store_manager&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Gerente de Tienda&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;read&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;         =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;edit_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;upload_files&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;manage_woocommerce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Capacidad Personalizada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejecutar SOLO UNA VEZ (ej. en la activacion del tema/plugin)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// add_action( &apos;init&apos;, &apos;wppoland_add_store_manager_role&apos; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Los roles se almacenan en la base de datos (&lt;code&gt;wp_options&lt;/code&gt; &gt; &lt;code&gt;wp_user_roles&lt;/code&gt;). No necesitas ejecutar &lt;code&gt;add_role&lt;/code&gt; en cada carga de página. Ejecutalo una vez en la activacion. Si necesitas actualizar un rol existente, primero eliminalo con &lt;code&gt;remove_role()&lt;/code&gt; y luego crealo de nuevo con las nuevas capacidades.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;diseño-de-roles-para-woocommerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diseño-de-roles-para-woocommerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diseño de roles para WooCommerce&lt;/h3&gt;
&lt;p&gt;Para tiendas WooCommerce, los roles personalizados son especialmente importantes. Puedes crear roles específicos como “Gestor de Pedidos” (solo puede ver y procesar pedidos), “Gestor de Catálogo” (solo puede editar productos y categorías), o “Gestor de Cupones” (solo puede crear y administrar cupones de descuento). Cada rol debe tener exactamente las capacidades minimás necesarias para realizar su función.&lt;/p&gt;
&lt;h3 id=&quot;roles-multiidioma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#roles-multiidioma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Roles multiidioma&lt;/h3&gt;
&lt;p&gt;Si tu sitio WordPress es multiidioma, asegurate de que las etiquetas de los roles esten traducidas correctamente. Los nombres internos de los roles (slugs) deben permanecer en ingles para compatibilidad, pero las etiquetas mostradas al usuario pueden localizarse usando las funciones de internacionalizacion de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;3-agregando-capacidades-a-roles-existentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-agregando-capacidades-a-roles-existentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Agregando capacidades a roles existentes&lt;/h2&gt;
&lt;p&gt;A veces solo quieres permitir que el “Editor” edite Menús (lo cual no puede hacer por defecto). En lugar de crear un rol completamente nuevo, puedes agregar capacidades específicas a un rol existente.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_upgrade_editor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $role &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $role ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_cap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edit_theme_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Permite la edicion de Menus y Widgets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejecutar una vez&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;consideraciones-importantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-importantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones importantes&lt;/h3&gt;
&lt;p&gt;Cuando agregas capacidades a roles existentes, ten en cuenta que este cambio persiste en la base de datos. Si desactivas el plugin o tema que agrego la capacidad, el rol la mantendra. Para limpiar correctamente, implementa una función de desactivacion que elimine las capacidades agregadas.&lt;/p&gt;
&lt;h3 id=&quot;capacidades-condicionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capacidades-condicionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capacidades condicionales&lt;/h3&gt;
&lt;p&gt;En escenarios avanzados, puedes necesitar capacidades que dependen del contexto. Por ejemplo, un editor que solo puede publicar en ciertas categorías, o un gestor que solo puede ver ordenes de su region. WordPress permite implementar esto a través del filtro &lt;code&gt;user_has_cap&lt;/code&gt;, que te da control total sobre la evaluación de capacidades en tiempo de ejecucion.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;user_has_cap&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($allcaps, $caps, $args) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Logica personalizada de verificación de capacidades&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $allcaps;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-recuperacion-ante-desastres-restableciendo-roles&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-recuperacion-ante-desastres-restableciendo-roles&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Recuperacion ante desastres: Restableciendo roles&lt;/h2&gt;
&lt;p&gt;Si un plugin corrompio tu base de datos o accidentalmente eliminaste el rol de ‘Administrador’ (sucede!), necesitas un restablecimiento completo. Esta situación es más comun de lo que muchos desarrolladores admiten, y tener un plan de recuperacion es esencial.&lt;/p&gt;
&lt;p&gt;Este script restaura la arquitectura predeterminada de WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_reset_roles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $_GET[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;reset_roles_secret_key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    require_once&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ABSPATH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wp-admin/includes/schema.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    populate_roles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Roles restablecidos exitosamente.&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_reset_roles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;precauciones-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#precauciones-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Precauciones de seguridad&lt;/h3&gt;
&lt;p&gt;Nunca dejes un script de restablecimiento de roles activo en producción. Usalo solo temporalmente para la recuperacion y eliminalo inmediatamente despues. Idealmente, protege el acceso con una clave secreta robusta y limita su disponibilidad por IP o por tiempo.&lt;/p&gt;
&lt;h3 id=&quot;alternativas-de-recuperacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativas-de-recuperacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativas de recuperacion&lt;/h3&gt;
&lt;p&gt;Si no puedes acceder al panel de administración, puedes restaurar roles directamente en la base de datos. La tabla &lt;code&gt;wp_options&lt;/code&gt; contiene la fila &lt;code&gt;wp_user_roles&lt;/code&gt; con la estructura serializada de todos los roles. También puedes usar WP-CLI desde la linea de comandos para gestionar roles y capacidades sin necesidad de acceso web.&lt;/p&gt;
&lt;h2 id=&quot;5-mejores-prácticas-de-seguridad-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-mejores-prácticas-de-seguridad-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Mejores prácticas de seguridad 2026&lt;/h2&gt;
&lt;h3 id=&quot;a-no-uses-el-nombre-de-usuario-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#a-no-uses-el-nombre-de-usuario-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;A. No uses el nombre de usuario ‘admin’&lt;/h3&gt;
&lt;p&gt;Los ataques de fuerza bruta apuntan al ID de usuario 1 o al nombre de usuario ‘admin’. Cambiar el nombre de usuario predeterminado es una de las medidas de seguridad más simples y efectivas que puedes implementar. Usa nombres de usuario únicos y no predecibles para las cuentas de administrador.&lt;/p&gt;
&lt;h3 id=&quot;b-mapea-meta-capacidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#b-mapea-meta-capacidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;B. Mapea meta capacidades&lt;/h3&gt;
&lt;p&gt;Cuando usas Tipos de Publicación Personalizados, no uses simplemente &lt;code&gt;edit_posts&lt;/code&gt;. Mapea capacidades granulares para tener control preciso sobre quien puede hacer que con cada tipo de contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;register_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;book&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;capability_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;book&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;map_meta_cap&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Clave para el control granular&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puedes dar a un usuario &lt;code&gt;edit_books&lt;/code&gt; sin darle &lt;code&gt;edit_posts&lt;/code&gt;. Esto permite una separacion limpia de permisos entre diferentes tipos de contenido, lo cual es especialmente valioso en sitios complejos con multiples tipos de publicación.&lt;/p&gt;
&lt;h3 id=&quot;c-principio-de-minimo-privilegio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#c-principio-de-minimo-privilegio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;C. Principio de minimo privilegio&lt;/h3&gt;
&lt;p&gt;Cada usuario debe tener solo las capacidades que necesita para realizar su trabajo, ni una mas. Este principio es la base de cualquier diseño de seguridad sólido. Revisa regularmente los permisos asignados y elimina cualquier capacidad que no sea estrictamente necesaria.&lt;/p&gt;
&lt;h3 id=&quot;d-auditoria-de-accesos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#d-auditoria-de-accesos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;D. Auditoria de accesos&lt;/h3&gt;
&lt;p&gt;Implementa un registro de auditoria que rastree los inicios de sesion, cambios de roles y acciones sensibles. Plugins como WP Activity Log proporcionan esta funcionalidad, pero también puedes implementar tu propio sistema de auditoria usando los hooks de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;e-separacion-de-entornos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#e-separacion-de-entornos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;E. Separacion de entornos&lt;/h3&gt;
&lt;p&gt;Los roles y capacidades en desarrollo, staging y producción deben revisarse independientemente. Un rol que es apropiado para desarrollo (con más permisos para depuracion) puede ser peligroso en producción. Mantiene configuraciónes de roles separadas para cada entorno.&lt;/p&gt;
&lt;h2 id=&quot;6-gestión-avanzada-de-capacidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-gestión-avanzada-de-capacidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Gestión avanzada de capacidades&lt;/h2&gt;
&lt;h3 id=&quot;capacidades-de-red-en-multisite&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capacidades-de-red-en-multisite&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capacidades de red en Multisite&lt;/h3&gt;
&lt;p&gt;En instalaciones WordPress Multisite, las capacidades funcionan a dos niveles: sitio individual y red. El super administrador tiene capacidades de red que los administradores de sitios individuales no tienen. Entender esta distincion es crítico para configurar correctamente los permisos en entornos multisite.&lt;/p&gt;
&lt;h3 id=&quot;integración-con-plugins-populares&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-plugins-populares&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con plugins populares&lt;/h3&gt;
&lt;p&gt;Plugins como WooCommerce, BuddyPress y bbPress agregan sus propias capacidades al sistema. Cuando planificas la arquitectura de roles para un sitio que usa estos plugins, debes considerar tanto las capacidades nativas de WordPress como las capacidades agregadas por los plugins.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-depuracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-depuracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de depuracion&lt;/h3&gt;
&lt;p&gt;El plugin Members y User Role Editor proporcionan interfaces graficas para gestionar roles y capacidades. Sin embargo, para desarrollo profesional, es preferible gestionar roles programaticamente a través de código versiónado, asegurando que los cambios de permisos pasen por el mismo proceso de revision que cualquier otro cambio de código.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Principio de Minimo Privilegio&lt;/strong&gt;: Da a los usuarios solo lo que necesitan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roles Personalizados&lt;/strong&gt;: Mejor que hackear el rol ‘Editor’.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base de Datos&lt;/strong&gt;: Los roles viven en la BD, no en el código. Los cambios persisten entre actualizaciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificaciones de Capacidades&lt;/strong&gt;: Siempre usa &lt;code&gt;current_user_can()&lt;/code&gt; con capacidades específicas, nunca con nombres de roles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dominar capacidades específicas es la diferencia entre un sitio seguro y uno hackeado. Invierte tiempo en disenar correctamente tu arquitectura de permisos desde el principio y ahorrara incontables horas de problemas de seguridad en el futuro.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; para mantener tu sitio seguro y optimizado.&lt;/p&gt;</content:encoded><category>development</category><category>security</category><category domain="tag">roles</category><category domain="tag">capabilities</category><category domain="tag">security</category><category domain="tag">access-control</category><enclosure url="https://wppoland.com/images/og/jak-wykonac-backup-bazy-danych-wordpress.jpg" type="image/jpeg"/></item><item><title>SEO programatico y autoridad temática: Como dominar un nicho en 2026</title><link>https://wppoland.com/es/programmatic-seo-topical-authority-guide/</link><guid isPermaLink="true">https://wppoland.com/es/programmatic-seo-topical-authority-guide/</guid><description>Deja de perseguir palabras clave de alta competencia. Aprende como usar el SEO programatico para generar miles de páginas de alto valor y construir autoridad temática.</description><pubDate>Sat, 30 Mar 2013 10:14:14 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Implementar exitosamente estas técnicas SEO requiere un enfoque sistematico que equilibre la optimización técnica con la calidad del contenido. Asi es como ejecutar cada estrategia efectivamente.&lt;/p&gt;
&lt;h3 id=&quot;que-es-el-seo-programatico-y-por-que-es-revolucionario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-el-seo-programatico-y-por-que-es-revolucionario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es el SEO programatico y por que es revolucionario&lt;/h3&gt;
&lt;p&gt;El SEO programatico es la práctica de generar páginas web a escala utilizando datos estructurados y plantillas. En lugar de escribir manualmente cada página, creas un sistema que produce cientos o miles de páginas únicas y valiosas automáticamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplos del mundo real:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zillow&lt;/strong&gt;: Genera páginas para cada vecindario, ciudad y código postal en Estados Unidos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TripAdvisor&lt;/strong&gt;: Crea páginas para cada hotel, restaurante y atraccion turistica del mundo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nomadlist&lt;/strong&gt;: Produce páginas comparativas para cada ciudad basadas en datos de calidad de vida.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos sitios no escribieron millones de páginas manualmente. Utilizaron datos + plantillas + lógica para crear contenido único y valioso a escala.&lt;/p&gt;
&lt;h3 id=&quot;la-diferencia-entre-seo-programatico-y-contenido-delgado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-diferencia-entre-seo-programatico-y-contenido-delgado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La diferencia entre SEO programatico y contenido delgado&lt;/h3&gt;
&lt;p&gt;La linea entre el SEO programatico exitoso y el spam es clara:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEO programatico bien hecho:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada página ofrece datos únicos y valiosos&lt;/li&gt;
&lt;li&gt;Las plantillas incluyen visualizaciones, comparaciones o análisis originales&lt;/li&gt;
&lt;li&gt;El contenido resuelve una necesidad de búsqueda específica&lt;/li&gt;
&lt;li&gt;Los enlaces internos crean una estructura lógica y navegable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contenido delgado (penalizable):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Páginas con texto generico donde solo cambia una palabra clave&lt;/li&gt;
&lt;li&gt;Sin datos únicos ni valor añadido&lt;/li&gt;
&lt;li&gt;Generado puramente para manipular rankings&lt;/li&gt;
&lt;li&gt;Sin estructura interna lógica&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;construccion-de-autoridad-temática-el-modelo-hub-y-spoke&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construccion-de-autoridad-temática-el-modelo-hub-y-spoke&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construccion de autoridad temática: El modelo Hub y Spoke&lt;/h2&gt;
&lt;p&gt;La autoridad temática es la señal que le dice a Google: “Este sitio es un experto absoluto en este tema.” Se construye cubriendo exhaustivamente todas las facetas de un nicho.&lt;/p&gt;
&lt;h3 id=&quot;el-modelo-hub-y-spoke&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-modelo-hub-y-spoke&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El modelo Hub y Spoke&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Página Hub (Centro):&lt;/strong&gt; Un artículo pilar completo que cubre el tema amplio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ejemplo: “Guia completa de CRM para pequeñas empresas”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Páginas Spoke (Radios):&lt;/strong&gt; Artículos detallados que cubren subtemas específicos.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Mejor CRM para dentistas”&lt;/li&gt;
&lt;li&gt;“Mejor CRM para agencias de marketing”&lt;/li&gt;
&lt;li&gt;“Mejor CRM para tiendas online”&lt;/li&gt;
&lt;li&gt;“Comparativa CRM: HubSpot vs Salesforce vs Pipedrive”&lt;/li&gt;
&lt;li&gt;“Como migrar de Excel a un CRM”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada página Spoke enlaza al Hub, y el Hub enlaza a todas las Spokes. Esta estructura crea una red temática que Google puede rastrear y entender.&lt;/p&gt;
&lt;h2 id=&quot;configuración-técnica-y-preparacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-técnica-y-preparacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración técnica y preparacion&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-definir-la-estructura-de-datos-con-acf&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-definir-la-estructura-de-datos-con-acf&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Definir la estructura de datos con ACF&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar Custom Post Type para SEO programatico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; registrar_cpt_herramientas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;herramienta&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;labels&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Herramientas&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;singular_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Herramienta&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;has_archive&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;rewrite&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;herramientas&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;supports&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;thumbnail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;show_in_rest&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;registrar_cpt_herramientas&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con ACF, define campos personalizados para cada pieza de datos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precio mensual&lt;/li&gt;
&lt;li&gt;Caracteristicas principales&lt;/li&gt;
&lt;li&gt;Puntuacion de usuario&lt;/li&gt;
&lt;li&gt;Industria objetivo&lt;/li&gt;
&lt;li&gt;Integraciones disponibles&lt;/li&gt;
&lt;li&gt;Pros y contras&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-2-adquirir-y-preparar-el-dataset&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-adquirir-y-preparar-el-dataset&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Adquirir y preparar el dataset&lt;/h3&gt;
&lt;p&gt;Los datos pueden venir de multiples fuentes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fuentes de datos publicos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;APIs gubernamentales y de datos abiertos&lt;/li&gt;
&lt;li&gt;Web scraping etico (respetando robots.txt y terminos de servicio)&lt;/li&gt;
&lt;li&gt;Agregadores de reseñas publicas&lt;/li&gt;
&lt;li&gt;Datasets de investigación academica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fuentes de datos propios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encuestas a clientes&lt;/li&gt;
&lt;li&gt;Datos de rendimiento internos&lt;/li&gt;
&lt;li&gt;Investigacion original de mercado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Preparacion del CSV:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;nombre,precio_mensual,industria,puntuacion,características,integraciones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&quot;HubSpot CRM&quot;,&quot;0-800&quot;,&quot;Marketing&quot;,&quot;4.5&quot;,&quot;Email, Pipeline, Reportes&quot;,&quot;Gmail, Outlook, Slack&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&quot;Salesforce&quot;,&quot;25-300&quot;,&quot;Enterprise&quot;,&quot;4.3&quot;,&quot;Automatizacion, IA, Analytics&quot;,&quot;Todo&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-3-importacion-masiva-con-wp-all-import&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-importacion-masiva-con-wp-all-import&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Importacion masiva con WP All Import&lt;/h3&gt;
&lt;p&gt;WP All Import permite mapear cada columna del CSV a un campo ACF:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sube el archivo CSV&lt;/li&gt;
&lt;li&gt;Selecciona el Custom Post Type de destino&lt;/li&gt;
&lt;li&gt;Arrastra cada columna al campo correspondiente&lt;/li&gt;
&lt;li&gt;Configura la generación automática de títulos y slugs&lt;/li&gt;
&lt;li&gt;Ejecuta la importacion&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;paso-4-plantillas-dinámicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-plantillas-dinámicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Plantillas dinámicas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// single-herramienta.php - Plantilla para SEO programatico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;herramienta-detalle&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Revision&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; completa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Y&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;puntuacion-rápida&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;puntuacion&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;puntuacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;precio&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Desde&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio_mensual&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;mes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; // Generar contenido único basado en los datos &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; es&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; una&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solución&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; de&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;industria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; con&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; una&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; puntuacion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; de&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;puntuacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; basada&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; en&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; reseñas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; de&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; usuarios&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; verificados&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    A&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; un&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; precio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; inicial&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; de&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio_mensual&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; al&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    es&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio_mensual&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;una opcion economica&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;una inversión premium&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    para&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empresas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; que&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; buscan&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;características&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Visualizacion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; de&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; datos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; única&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;comparativa-visual&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; // Grafico de comparacion con herramientas similares &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;!--&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Enlaces&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; internos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Hub&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Spoke&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;herramientas-relacionadas&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Herramientas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; similares&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; para&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;industria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $relacionadas &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;herramienta&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;meta_key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;industria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;meta_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;industria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;post__not_in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($relacionadas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $relacionadas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php the_permalink(); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-5-estructura-de-enlaces-internos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-estructura-de-enlaces-internos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Estructura de enlaces internos&lt;/h3&gt;
&lt;p&gt;La estructura de enlaces es crítica para el éxito del SEO programatico:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlace Hub → Spoke:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/herramientas/hubspot-crm/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;HubSpot CRM - Revision completa&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Enlace Spoke → Hub:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/guía-crm-pequeñas-empresas/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Volver a la guía completa de CRM&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Enlace Spoke → Spoke (herramientas relacionadas):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/herramientas/salesforce/&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Comparar con Salesforce&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización de contenido&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de investigación de palabras clave&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica palabras clave primarias y secundarias&lt;/li&gt;
&lt;li&gt;Analiza la intencion de búsqueda para cada termino&lt;/li&gt;
&lt;li&gt;Mapea las palabras clave al contenido existente&lt;/li&gt;
&lt;li&gt;Identifica brechas de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación y optimización de contenido&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escribe títulos y meta descripciones atractivos&lt;/li&gt;
&lt;li&gt;Estructura el contenido con jerarquía de encabezados adecuada&lt;/li&gt;
&lt;li&gt;Incluye enlaces internos y externos relevantes&lt;/li&gt;
&lt;li&gt;Optimiza imágenes con texto alternativo descriptivo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asegura la responsividad móvil&lt;/li&gt;
&lt;li&gt;Mejora la velocidad de carga de la página&lt;/li&gt;
&lt;li&gt;Implementa marcado schema&lt;/li&gt;
&lt;li&gt;Corrige errores de rastreo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;evitando-la-inflacion-de-indexacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evitando-la-inflacion-de-indexacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evitando la inflacion de indexacion&lt;/h2&gt;
&lt;p&gt;El mayor riesgo del SEO programatico es generar demasiadas páginas de bajo valor. Para evitarlo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Valor único por página&lt;/strong&gt;: Cada página debe contener datos, visualizaciones o perspectivas que no existen en otra página del sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consolidacion inteligente&lt;/strong&gt;: Si dos páginas tienen datos casí identicos, fusionalas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Noindex estrategico&lt;/strong&gt;: Las páginas de filtro o páginación que no aportan valor SEO deben tener &lt;code&gt;noindex&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoreo de cobertura&lt;/strong&gt;: Revisa Google Search Console regularmente para detectar páginas “Descubiertas - no indexadas actualmente”.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;midiendo-el-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-el-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo el éxito&lt;/h2&gt;
&lt;p&gt;Realiza un seguimiento de estos indicadores clave de rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crecimiento del tráfico organico&lt;/li&gt;
&lt;li&gt;Mejoras en el ranking de palabras clave&lt;/li&gt;
&lt;li&gt;Tasas de clics (CTR)&lt;/li&gt;
&lt;li&gt;Tasas de conversión&lt;/li&gt;
&lt;li&gt;Tasas de rebote&lt;/li&gt;
&lt;li&gt;Páginas indexadas vs páginas generadas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu estrategia basandote en lo que funciona y lo que no. El SEO es un proceso continuo, no una tarea única.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda para implementar una estrategia de SEO programatico? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; puede diseñar una solución a medida. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category domain="tag">seo-programatico</category><category domain="tag">autoridad-temática</category><category domain="tag">investigación-palabras-clave</category><category domain="tag">estrategia-contenido</category><enclosure url="https://wppoland.com/images/og/where-does-google-make-its-money.jpg" type="image/jpeg"/></item><item><title>Dimensiones de Imágenes en Redes Sociales: Facebook, Pinterest, Google+ y Twitter</title><link>https://wppoland.com/es/wymiary-obrazkow-w-social-media-facebook-pinterest-google-twitter/</link><guid isPermaLink="true">https://wppoland.com/es/wymiary-obrazkow-w-social-media-facebook-pinterest-google-twitter/</guid><description>Guía completa de dimensiones de imágenes para redes sociales: Facebook, Pinterest, Google+ y Twitter. Tamaños óptimos para cada plataforma.</description><pubDate>Wed, 20 Mar 2013 20:01:18 GMT</pubDate><content:encoded>&lt;p&gt;Este artículo en español resume el tema “Wymiary Obrazków W Social Media Facebook, Pinterest, Google+, Twitter” con un enfoque práctico y actual. La idea no es repetir un titular sin contexto, sino explicar por qué este asunto sigue siendo relevante, qué decisiones conviene tomar y dónde suelen aparecer los errores más comunes en proyectos WordPress reales.&lt;/p&gt;
&lt;h2 id=&quot;contexto-y-relevancia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-relevancia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y relevancia&lt;/h2&gt;
&lt;p&gt;En temas SEO no conviene perseguir atajos. Los mejores resultados llegan cuando la parte técnica, la estructura de contenidos y la autoridad externa avanzan juntas. Si una página no responde bien a la intención de búsqueda, ni los enlaces ni los ajustes de metadatos compensan esa carencia durante mucho tiempo.&lt;/p&gt;
&lt;h2 id=&quot;qué-conviene-tener-en-cuenta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-conviene-tener-en-cuenta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué conviene tener en cuenta&lt;/h2&gt;
&lt;p&gt;También hay que distinguir entre señales útiles y ruido. Muchas métricas de herramientas son orientativas, no objetivos en sí mismos. Lo que interesa de verdad es mejorar rastreo, indexación, relevancia temática y capacidad de atraer visitas que luego conviertan.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión práctica&lt;/h2&gt;
&lt;p&gt;Por eso este tema debe leerse como una guía de criterio. Sirve para ordenar prioridades, evitar decisiones improvisadas y construir una base SEO que aguante cambios de algoritmo sin depender de tácticas frágiles.&lt;/p&gt;
&lt;p&gt;Fuente base revisada: wymiary-obrazkow-w-social-media-facebook-pinterest-google-twitter.en.md. El contenido se ha adaptado a una versión española útil, evitando dejar una entrada mínima o vacía dentro del repositorio multilingüe.&lt;/p&gt;</content:encoded><category>polecane</category><category>Social Media</category><category domain="tag">social media</category><category domain="tag">images</category><category domain="tag">facebook</category><category domain="tag">twitter</category><enclosure url="https://wppoland.com/images/og/social-media-image-sizes-guide-2026.jpg" type="image/jpeg"/></item><item><title>Como agregar Google Maps a WordPress en 2026: La guía completa del desarrollador</title><link>https://wppoland.com/es/google-maps-integration-wordpress-guide/</link><guid isPermaLink="true">https://wppoland.com/es/google-maps-integration-wordpress-guide/</guid><description>Deja de usar embeds de iframe. Aprende como integrar la API de Google Maps Platform correctamente, manejar el consentimiento GDPR y optimizar para Core Web Vitals.</description><pubDate>Sun, 03 Mar 2013 11:53:13 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Conoce más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Integrar Google Maps en WordPress correctamente en 2026 va mucho más alla de pegar un iframe. Los desarrolladores profesionales deben considerar rendimiento, privacidad (GDPR), seguridad de la API key y la experiencia del usuario. Esta guía cubre cada aspecto en detalle.&lt;/p&gt;
&lt;h3 id=&quot;por-que-no-deberias-usar-iframes-para-google-maps&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-no-deberias-usar-iframes-para-google-maps&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que NO deberias usar iframes para Google Maps&lt;/h3&gt;
&lt;p&gt;La forma más comun de agregar Google Maps a WordPress es copiar un iframe desde maps.google.com. Aunque funciona, tiene graves desventajas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problemás de rendimiento:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un iframe de Google Maps carga aproximadamente 2MB de JavaScript y recursos&lt;/li&gt;
&lt;li&gt;Bloquea el renderizado de la página si no se carga de forma diferida&lt;/li&gt;
&lt;li&gt;Impacta negativamente en LCP (Largest Contentful Paint) e INP (Interaction to Next Paint)&lt;/li&gt;
&lt;li&gt;Puede causar Layout Shift (CLS) si no tiene dimensiones fijas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Problemás de privacidad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los iframes cargan cookies de Google sin consentimiento del usuario&lt;/li&gt;
&lt;li&gt;Violacion directa de GDPR en la Union Europea&lt;/li&gt;
&lt;li&gt;Google rastrea a los visitantes de tu sitio sin su permiso&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones funcionales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sin personalización de estilos del mapa&lt;/li&gt;
&lt;li&gt;Sin marcadores personalizados&lt;/li&gt;
&lt;li&gt;Sin interactividad avanzada&lt;/li&gt;
&lt;li&gt;Sin control sobre el comportamiento del zoom o la navegación&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-1-configurar-la-api-de-google-maps&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-configurar-la-api-de-google-maps&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Configurar la API de Google Maps&lt;/h3&gt;
&lt;h4 id=&quot;crear-proyecto-en-google-cloud-console&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crear-proyecto-en-google-cloud-console&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Crear proyecto en Google Cloud Console&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Ve a &lt;a href=&quot;https://console.cloud.google.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;console.cloud.google.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Crea un nuevo proyecto o selecciona uno existente&lt;/li&gt;
&lt;li&gt;Habilita la “Maps JavaScript API”&lt;/li&gt;
&lt;li&gt;Ve a “Credenciales” y crea una API Key&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;restringir-la-api-key&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#restringir-la-api-key&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Restringir la API Key&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Esto es crítico para la seguridad.&lt;/strong&gt; Sin restricciones, cualquiera puede usar tu API Key y generar costos en tu cuenta.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Restricciones de aplicación: HTTP referrers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Referrers permitidos:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  https://tusitio.com/*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  https://www.tusitio.com/*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  https://staging.tusitio.com/*&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;configurar-alertas-de-facturacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configurar-alertas-de-facturacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configurar alertas de facturacion&lt;/h4&gt;
&lt;p&gt;Google ofrece un credito mensual de $200 para la Maps API (suficiente para ~28,000 cargas de mapa). Configura alertas en Google Cloud para que te notifique si te acercas al limite.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-implementar-la-fachada-del-mapa-map-facade&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-implementar-la-fachada-del-mapa-map-facade&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Implementar la fachada del mapa (Map Facade)&lt;/h3&gt;
&lt;p&gt;La técnica de “fachada” es clave para el rendimiento. En lugar de cargar Google Maps inmediatamente, muestras una imagen estatica o un placeholder que se reemplaza por el mapa real solo cuando el usuario interactua.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Shortcode para mapa con fachada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_mapa_google&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($atts) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $atts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; shortcode_atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;lat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;48.2082&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;lng&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;16.3738&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;zoom&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;15&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;ancho&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;100%&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;alto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;400px&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;marcador_titulo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Nuestra ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ), $atts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $mapa_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;mapa-&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_unique_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$mapa_id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wppoland-mapa-fachada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;lat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;lat&apos;]); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;lng&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;lng&apos;]); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;zoom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;zoom&apos;]); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;título&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;marcador_titulo&apos;]); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;width: &amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;ancho&apos;]); ?&gt;; height: &amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;[&apos;alto&apos;]); ?&gt;; background: #e0e0e0; display: flex; align-items: center; justify-content: center; cursor: pointer; border-radius: 8px;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;mapa-placeholder&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text-align: center;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;48&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;48&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;0 0 24 24&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#666&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;margin: 8px 0 0; color: #666; font-size: 14px;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Haz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; clic&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; para&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; cargar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ob_get_clean&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_shortcode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;google_mapa&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_mapa_google&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-3-manejar-consentimiento-gdpr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-manejar-consentimiento-gdpr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Manejar consentimiento GDPR&lt;/h3&gt;
&lt;p&gt;Antes de cargar cualquier script de Google, debes obtener el consentimiento del usuario para cookies de marketing/terceros.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cargar mapa solo despues del consentimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DOMContentLoaded&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mapas&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.wppoland-mapa-fachada&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    mapas.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;contenedorMapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        contenedorMapa.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            // Verificar consentimiento de cookies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tieneConsentimiento&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;marketing&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;                mostrarBannerConsentimiento&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            cargarMapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(contenedorMapa);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; cargarMapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;contenedor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; lat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; parseFloat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(contenedor.dataset.lat);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; lng&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; parseFloat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(contenedor.dataset.lng);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; zoom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; parseInt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(contenedor.dataset.zoom);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; título&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; contenedor.dataset.título;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Cargar script de Google Maps dinamicamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;window.google &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;window.google.maps) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        script.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; `https://maps.googleapis.com/maps/api/js?key=${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;GOOGLE_MAPS_API_KEY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x26;callback=initMap`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        script.async &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        script.defer &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        document.head.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(script);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        window.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;initMap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            renderizarMapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(contenedor, lat, lng, zoom, título);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        renderizarMapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(contenedor, lat, lng, zoom, título);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; renderizarMapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;contenedor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;lat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;lng&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;zoom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;título&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    contenedor.innerHTML &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; mapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; google.maps.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(contenedor, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        center: { lat: lat, lng: lng },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        zoom: zoom,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        mapId: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;TU_MAP_ID_AQUI&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Estilos en la nube&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; google.maps.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Marker&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        position: { lat: lat, lng: lng },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        map: mapa,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        title: título,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-4-estilos-personalizados-con-map-ids&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-estilos-personalizados-con-map-ids&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Estilos personalizados con Map IDs&lt;/h3&gt;
&lt;p&gt;Los Map IDs permiten personalizar la apariencia del mapa desde Google Cloud Console, sin cambiar código en tu sitio.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ve a Google Cloud Console &gt; Google Maps Platform &gt; Map Management&lt;/li&gt;
&lt;li&gt;Crea un nuevo Map ID&lt;/li&gt;
&lt;li&gt;Asigna un estilo de mapa (puedes usar los predefinidos o crear uno personalizado)&lt;/li&gt;
&lt;li&gt;Usa el Map ID en tu código JavaScript&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Ventajas de Map IDs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambiar estilos sin redesplegar código&lt;/li&gt;
&lt;li&gt;A/B testing de estilos de mapa&lt;/li&gt;
&lt;li&gt;Modo oscuro automático&lt;/li&gt;
&lt;li&gt;Estilos consistentes entre desarrollo y producción&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-5-optimización-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-optimización-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Optimización de rendimiento&lt;/h3&gt;
&lt;h4 id=&quot;precarga-condicional&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#precarga-condicional&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Precarga condicional&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Precargar la API de Google Maps solo en páginas que la necesitan&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_precargar_maps_api&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_shortcode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;google_mapa&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;link rel=&quot;preconnect&quot; href=&quot;https://maps.googleapis.com&quot; crossorigin&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;link rel=&quot;preconnect&quot; href=&quot;https://maps.gstatic.com&quot; crossorigin&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_precargar_maps_api&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;imagen-estatica-como-placeholder&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imagen-estatica-como-placeholder&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imagen estatica como placeholder&lt;/h4&gt;
&lt;p&gt;Para un placeholder visual más atractivo, usa la Static Maps API:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_imagen_estatica_mapa&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($lat, $lng, $zoom &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $ancho &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 640&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $alto &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $api_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_maps_api_key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; sprintf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;https://maps.googleapis.com/maps/api/staticmap?center=%s,%s&amp;#x26;zoom=%d&amp;#x26;size=%dx%d&amp;#x26;key=%s&amp;#x26;style=feature:all|saturation:-100&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $lat, $lng, $zoom, $ancho, $alto, $api_key&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;paso-6-schema-markup-para-ubicacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-6-schema-markup-para-ubicacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 6: Schema markup para ubicacion&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar Schema markup de LocalBusiness con coordenadas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_schema_ubicacion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@context&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://schema.org&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;LocalBusiness&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;WPPoland&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;geo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;GeoCoordinates&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;latitude&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;48.2082&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;longitude&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;16.3738&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;address&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;PostalAddress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;addressLocality&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Viena&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;addressCountry&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;AT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;script type=&quot;application/ld+json&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($schema) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/script&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_schema_ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;medicion-del-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-del-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion del éxito&lt;/h3&gt;
&lt;p&gt;Realiza un seguimiento de estos indicadores clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Impacto en Core Web Vitals (LCP, INP, CLS) antes y despues&lt;/li&gt;
&lt;li&gt;Tasa de interacción con el mapa&lt;/li&gt;
&lt;li&gt;Costo mensual de la API de Google Maps&lt;/li&gt;
&lt;li&gt;Cumplimiento GDPR (tasa de consentimiento)&lt;/li&gt;
&lt;li&gt;Clicks en marcadores y direcciones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu implementación basandote en datos reales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con la integración de Google Maps en tu sitio WordPress? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; puede implementar una solución optimizada para rendimiento y privacidad. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>development</category><category>api</category><category domain="tag">google-maps</category><category domain="tag">gdpr</category><category domain="tag">rendimiento</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Como listar todas las funciones enganchadas en WordPress</title><link>https://wppoland.com/es/how-to-get-a-nice-list-of-all-hooked-functions-in-wordpress/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-get-a-nice-list-of-all-hooked-functions-in-wordpress/</guid><description>Necesita ver que plugin o tema se engancho a the_content o wp_head? Este snippet lista todos los callbacks adjuntos a un hook de WordPress.</description><pubDate>Mon, 18 Feb 2013 10:30:22 GMT</pubDate><content:encoded>&lt;p&gt;WordPress funciona con Hooks (Acciones y Filtros). A veces, cosas inesperadas suceden: el contenido desaparece, los títulos cambian, los estilos se rompen. Sospecha que un plugin esta interfiriendo, pero cual?&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Necesita saber &lt;strong&gt;exactamente que funciones&lt;/strong&gt; estan adjuntas a un hook específico (ej. &lt;code&gt;the_content&lt;/code&gt; o &lt;code&gt;wp_head&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;La forma más rápida de depurar eso es inspeccionar &lt;code&gt;$wp_filter&lt;/code&gt;, listar callbacks por prioridad y rastrear si cada callback proviene del core, un plugin o el tema activo.&lt;/p&gt;
&lt;h2 id=&quot;el-sistema-de-hooks-de-wordpress-entendiendo-la-base&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-sistema-de-hooks-de-wordpress-entendiendo-la-base&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El sistema de hooks de WordPress: Entendiendo la base&lt;/h2&gt;
&lt;p&gt;El sistema de hooks de WordPress es lo que lo hace extensible. Cada función importante en WordPress dispara hooks, permitiendo que plugins y temas modifiquen el comportamiento sin editar archivos del core.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dos tipos de hooks:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Acciones&lt;/strong&gt;: Hacen algo en un punto específico (ej. &lt;code&gt;wp_head&lt;/code&gt;, &lt;code&gt;the_content&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filtros&lt;/strong&gt;: Modifican datos antes de que se usen (ej. &lt;code&gt;the_title&lt;/code&gt;, &lt;code&gt;the_content&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Al depurar, necesita ver:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que funciones estan enganchadas&lt;/li&gt;
&lt;li&gt;Sus prioridades (orden de ejecucion)&lt;/li&gt;
&lt;li&gt;Que plugin/tema las agrego&lt;/li&gt;
&lt;li&gt;Los nombres de las funciones callback&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;el-snippet-de-depuracion-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-snippet-de-depuracion-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El snippet de depuracion completo&lt;/h2&gt;
&lt;p&gt;Agregue esta función mejorada a su &lt;code&gt;functions.php&lt;/code&gt; o usela en un plugin Must-Use durante el desarrollo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Inspeccionar hooks de WordPress con información detallada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $hook_name El hook a inspeccionar (ej. &apos;the_content&apos;, &apos;wp_head&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $show_details Mostrar detalles completos del callback&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; void&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_inspect_hook&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $hook_name, $show_details &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    global&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wp_filter;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $wp_filter[ $hook_name ] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div style=&quot;background:#fff3cd; border:2px solid #ffc107; padding:15px; margin:20px 0;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;strong&gt;El hook &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$hook_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; no tiene funciones adjuntas.&amp;#x3C;/strong&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $hook_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $wp_filter[ $hook_name ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div style=&quot;background:#fff; border:2px solid #dc3545; padding:20px; margin:20px 0; font-family:monospace; font-size:12px; max-width:100%; overflow-x:auto;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;h2 style=&apos;margin-top:0; color:#dc3545;&apos;&gt;Depurando Hook: &amp;#x3C;code&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$hook_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&amp;#x3C;/code&gt;&amp;#x3C;/h2&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Ordenar por prioridad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    ksort&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $hook_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;callbacks );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;table style=&quot;width:100%; border-collapse:collapse;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;thead&gt;&amp;#x3C;tr style=&quot;background:#f8f9fa;&quot;&gt;&amp;#x3C;th style=&quot;padding:8px; text-align:left; border:1px solid #dee2e6;&quot;&gt;Prioridad&amp;#x3C;/th&gt;&amp;#x3C;th style=&quot;padding:8px; text-align:left; border:1px solid #dee2e6;&quot;&gt;Funcion&amp;#x3C;/th&gt;&amp;#x3C;th style=&quot;padding:8px; text-align:left; border:1px solid #dee2e6;&quot;&gt;Fuente&amp;#x3C;/th&gt;&amp;#x3C;/tr&gt;&amp;#x3C;/thead&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;tbody&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $hook_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;callbacks &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $priority &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callbacks ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $callbacks &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callback ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $function_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Desconocido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $source_file &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Desconocido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;is_string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $function_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;function_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $function_name ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $reflection &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ReflectionFunction&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $function_name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $source_file &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $reflection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getFileName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;:&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $reflection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getStartLine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;elseif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;is_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;is_object&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $function_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; get_class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;::&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $function_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;::&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                try&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $reflection &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ReflectionMethod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $source_file &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $reflection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getFileName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;:&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $reflection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getStartLine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ReflectionException&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $e ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $source_file &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;No se pudo determinar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;elseif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;is_object&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $function_name &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Closure&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $reflection &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ReflectionFunction&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $callback[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;function&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $source_file &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $reflection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getFileName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;:&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $reflection&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getStartLine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;            // Detectar plugin/tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $source_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Core&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $source_file, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-content/plugins&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $source_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Plugin&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;elseif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $source_file, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-content/themes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $source_type &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Tema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;tr style=&quot;border-bottom:1px solid #dee2e6;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;td style=&quot;padding:8px; border:1px solid #dee2e6;&quot;&gt;&amp;#x3C;strong&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $priority ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/strong&gt;&amp;#x3C;/td&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;td style=&quot;padding:8px; border:1px solid #dee2e6;&quot;&gt;&amp;#x3C;code&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $function_name ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/code&gt;&amp;#x3C;/td&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;td style=&quot;padding:8px; border:1px solid #dee2e6;&quot;&gt;&amp;#x3C;span&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $source_type ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/span&gt;&amp;#x3C;/td&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/tr&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/tbody&gt;&amp;#x3C;/table&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplos de uso:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// add_action( &apos;wp_footer&apos;, function(){ wppoland_inspect_hook(&apos;the_content&apos;); } );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// add_action( &apos;wp_footer&apos;, function(){ wppoland_inspect_hook(&apos;wp_head&apos;, true); } );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;como-usar-la-función-de-depuracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-usar-la-función-de-depuracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como usar la función de depuracion&lt;/h2&gt;
&lt;h3 id=&quot;uso-básico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-básico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso básico&lt;/h3&gt;
&lt;p&gt;Agregue esto temporalmente a su &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Inspeccionar el hook the_content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_footer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Solo para admins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wppoland_inspect_hook&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Visite cualquier página y desplacese al footer. Vera una tabla detallada mostrando todas las funciones enganchadas a &lt;code&gt;the_content&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;inspeccionar-multiples-hooks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inspeccionar-multiples-hooks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inspeccionar multiples hooks&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_footer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $hooks_a_verificar &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;excerpt_length&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $hooks_a_verificar &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $hook ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wppoland_inspect_hook&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $hook );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;entendiendo-la-salida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-la-salida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo la salida&lt;/h2&gt;
&lt;h3 id=&quot;columna-de-prioridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#columna-de-prioridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Columna de prioridad&lt;/h3&gt;
&lt;p&gt;WordPress ejecuta hooks en orden de prioridad (números menores primero). La prioridad predeterminada es 10.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prioridades comunes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1-9&lt;/code&gt;: Ejecucion temprana (antes del predeterminado)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10&lt;/code&gt;: Prioridad predeterminada&lt;/li&gt;
&lt;li&gt;&lt;code&gt;11-99&lt;/code&gt;: Ejecucion tardia (despues del predeterminado)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;999&lt;/code&gt;: Muy tardia (casí última)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;escenarios-comunes-de-depuracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenarios-comunes-de-depuracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenarios comunes de depuracion&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Escenario 1: El contenido desaparece&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wppoland_inspect_hook&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Busque funciones que retornen cadenas vacias o tengan prioridad alta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Escenario 2: Títulos cambian inesperadamente&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wppoland_inspect_hook&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Busque plugins SEO o de traduccion que modifiquen títulos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Escenario 3: Estilos se rompen&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wppoland_inspect_hook&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Busque plugins que eliminen hojas de estilo o conflictos de prioridad.&lt;/p&gt;
&lt;h2 id=&quot;alternativa-moderna-plugin-query-monitor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativa-moderna-plugin-query-monitor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativa moderna: Plugin Query Monitor&lt;/h2&gt;
&lt;p&gt;En 2026, la mejor forma de depurar hooks es usando el plugin &lt;strong&gt;Query Monitor&lt;/strong&gt; de John Blackbourn.&lt;/p&gt;
&lt;h3 id=&quot;por-que-query-monitor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-query-monitor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que Query Monitor?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Interfaz visual&lt;/strong&gt;: Tabla limpia y buscable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rutas de archivos&lt;/strong&gt;: Muestra ubicaciones exactas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nombres de componentes&lt;/strong&gt;: Identifica plugins/temas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos de rendimiento&lt;/strong&gt;: Muestra tiempo de ejecucion por hook&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin código requerido&lt;/strong&gt;: Depuracion basada en GUI&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;instalación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#instalación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Instalación&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Via WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; query-monitor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --activate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mejores-prácticas-para-depuracion-de-hooks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-para-depuracion-de-hooks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas para depuracion de hooks&lt;/h2&gt;
&lt;h3 id=&quot;1-solo-depure-en-desarrollo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-solo-depure-en-desarrollo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Solo depure en desarrollo&lt;/h3&gt;
&lt;p&gt;Nunca deje código de depuracion en producción:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;defined&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_DEBUG&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_DEBUG&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_footer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wppoland_inspect_hook&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-restrinja-a-administradores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-restrinja-a-administradores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Restrinja a administradores&lt;/h3&gt;
&lt;p&gt;Siempre verifique capacidades del usuario:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Mostrar info de depuracion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-use-nombres-descriptivos-de-hooks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-use-nombres-descriptivos-de-hooks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Use nombres descriptivos de hooks&lt;/h3&gt;
&lt;p&gt;Al crear hooks personalizados, use prefijos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Correcto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;do_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_before_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Incorrecto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;do_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;before_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;La depuracion de hooks de WordPress es esencial para entender conflictos de plugins y problemas de temas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;$wp_filter&lt;/code&gt;&lt;/strong&gt; global para inspeccionar hooks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query Monitor&lt;/strong&gt; es la mejor solución GUI para 2026&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Siempre restrinja&lt;/strong&gt; la depuracion a desarrollo/usuarios administradores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entienda las prioridades&lt;/strong&gt; para resolver problemas de orden de ejecucion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documente sus hooks personalizados&lt;/strong&gt; para mantenibilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ya sea que use el snippet personalizado o Query Monitor, entender los hooks de WordPress es crucial para el desarrollo profesional de WordPress en 2026.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>development</category><category>debugging</category><category domain="tag">hooks</category><category domain="tag">php</category><category domain="tag">filtros</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-resized.jpg" type="image/jpeg"/></item><item><title>Cómo Eliminar CSS y JS que Bloquean el Renderizado: Async, Defer y CSS Crítico</title><link>https://wppoland.com/es/remove-render-blocking-css-js/</link><guid isPermaLink="true">https://wppoland.com/es/remove-render-blocking-css-js/</guid><description>Cómo eliminar CSS y JavaScript que bloquean el renderizado usando async, defer y CSS crítico. Mejora tu PageSpeed y Core Web Vitals.</description><pubDate>Wed, 31 Oct 2012 09:47:04 GMT</pubDate><content:encoded>&lt;h2 id=&quot;que-son-los-recursos-que-bloquean-el-renderizado-y-por-que-importan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-son-los-recursos-que-bloquean-el-renderizado-y-por-que-importan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que son los recursos que bloquean el renderizado y por que importan&lt;/h2&gt;
&lt;p&gt;Cuando el navegador carga tu página, lee el código HTML linea por linea. Cuando encuentra una etiqueta &lt;code&gt;&amp;#x3C;script src=&quot;archivo-pesado.js&quot;&gt;&lt;/code&gt; o &lt;code&gt;&amp;#x3C;link rel=&quot;stylesheet&quot;&gt;&lt;/code&gt;, detiene todo lo demas, descarga ese archivo y lo ejecuta. Solo entonces continua renderizando el resto de la página. Esto es lo que se conoce como “render-blocking” o bloqueo de renderizado.&lt;/p&gt;
&lt;p&gt;Descubre nuestros servicios de &lt;a href=&quot;/es/speed-up-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En 2026, con las metricas de Core Web Vitals como factor de posicionamiento en Google, especialmente LCP (Largest Contentful Paint) e INP (Interaction to Next Paint), resolver los problemas de recursos que bloquean el renderizado es una de las optimizaciones técnicas de mayor impacto que puedes implementar.&lt;/p&gt;
&lt;p&gt;El aviso de PageSpeed Insights que dice “Eliminar los recursos que bloquean el renderizado” es uno de los más frecuentes y, al mismo tiempo, uno de los que más confunden a los propietarios de sitios WordPress. Este artículo explica exactamente que significa, por que ocurre y como resolverlo paso a paso.&lt;/p&gt;
&lt;h2 id=&quot;como-funciona-el-renderizado-en-el-navegador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-el-renderizado-en-el-navegador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona el renderizado en el navegador&lt;/h2&gt;
&lt;p&gt;Para entender por que ciertos recursos bloquean el renderizado, necesitas comprender como el navegador construye una página web:&lt;/p&gt;
&lt;h3 id=&quot;el-proceso-de-construccion-del-dom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-proceso-de-construccion-del-dom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El proceso de construccion del DOM&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Descarga del HTML.&lt;/strong&gt; El navegador descarga el documento HTML del servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parsing del HTML.&lt;/strong&gt; El parser recorre el HTML linea por linea, construyendo el DOM (Document Object Model), que es la estructura en arbol de la página.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encuentro con CSS.&lt;/strong&gt; Cuando el parser encuentra una etiqueta &lt;code&gt;&amp;#x3C;link rel=&quot;stylesheet&quot;&gt;&lt;/code&gt;, necesita descargar y procesar ese archivo CSS para construir el CSSOM (CSS Object Model). Mientras tanto, el renderizado se detiene porque el navegador necesita los estilos para saber como pintar los elementos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encuentro con JS.&lt;/strong&gt; Cuando el parser encuentra una etiqueta &lt;code&gt;&amp;#x3C;script src=&quot;...&quot;&gt;&lt;/code&gt;, se detiene completamente. Descarga el archivo JavaScript, lo parsea y lo ejecuta. Solo despues continua con el HTML restante. Esto ocurre porque el JavaScript podria modificar el DOM que se esta construyendo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Render Tree.&lt;/strong&gt; Solo cuando el DOM y el CSSOM estan listos, el navegador puede combinarlos en el Render Tree y pintar la página.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cada archivo CSS o JavaScript en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; de tu página que no tenga atributos especiales bloquea este proceso. Si tienes 5 archivos CSS y 8 archivos JavaScript en el head, el navegador tiene que descargar, parsear y ejecutar los 13 antes de mostrar un solo pixel al usuario.&lt;/p&gt;
&lt;h3 id=&quot;impacto-en-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en Core Web Vitals&lt;/h3&gt;
&lt;p&gt;El bloqueo de renderizado afecta directamente a dos metricas criticas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FCP (First Contentful Paint):&lt;/strong&gt; El momento en que el navegador pinta el primer contenido (texto, imagen, SVG). Cuantos más recursos bloqueen el renderizado, más tarda en ocurrir el primer pintado. El objetivo es un FCP inferior a 1.8 segundos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LCP (Largest Contentful Paint):&lt;/strong&gt; El momento en que se renderiza el elemento más grande visible en la pantalla. Si un archivo CSS pesado impide que el navegador pinte la imagen hero o el bloque de texto principal, el LCP se dispara. El objetivo es un LCP inferior a 2.5 segundos.&lt;/p&gt;
&lt;p&gt;Un sitio WordPress tipico con un tema de page builder, 20 plugins y sin optimizar puede tener entre 15 y 30 archivos CSS y JavaScript cargados en el head. Esto significa que el visitante ve una pantalla en blanco durante 3 a 8 segundos mientras el navegador procesa todos estos recursos. En móvil, con conexiónes más lentas, este tiempo puede duplicarse fácilmente.&lt;/p&gt;
&lt;h2 id=&quot;javascript-async-y-defer-explicados-en-profundidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#javascript-async-y-defer-explicados-en-profundidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;JavaScript: async y defer explicados en profundidad&lt;/h2&gt;
&lt;p&gt;La vieja escuela decia “pon los scripts en el footer (wp_footer)”. La nueva escuela dice “usa atributos”. Ambas estrategias buscan lo mismo: evitar que los scripts bloqueen el parsing del HTML. Pero los atributos ofrecen un control más fino.&lt;/p&gt;
&lt;h3 id=&quot;script-normal-sin-atributos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#script-normal-sin-atributos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Script normal (sin atributos)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;archivo.js&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El parser HTML se detiene. Descarga el archivo. Lo ejecuta. Solo entonces continua con el HTML. Esto es el maximo bloqueo posible.&lt;/p&gt;
&lt;h3 id=&quot;script-con-async&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#script-con-async&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Script con async&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;archivo.js&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El archivo se descarga en segundo plano mientras el parser continua con el HTML. Sin embargo, en cuanto la descarga termina, el parser se detiene para ejecutar el script. Esto significa que el momento de la ejecucion es impredecible y depende de la velocidad de descarga.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuando usar async:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scripts de analítica (Google Analytics, Matomo).&lt;/li&gt;
&lt;li&gt;Pixels de seguimiento (Facebook Pixel, Google Ads).&lt;/li&gt;
&lt;li&gt;Scripts que no dependen de otros scripts ni del DOM.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cuando NO usar async:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scripts que dependen de jQuery u otra libreria.&lt;/li&gt;
&lt;li&gt;Scripts que manipulan elementos del DOM que aun no se han cargado.&lt;/li&gt;
&lt;li&gt;Scripts que tienen dependencias de orden de ejecucion entre si.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;script-con-defer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#script-con-defer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Script con defer&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; defer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;archivo.js&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El archivo se descarga en segundo plano mientras el parser continua con el HTML. Pero a diferencia de async, la ejecucion se pospone hasta que el HTML esta completamente parseado. Además, los scripts con defer se ejecutan en el orden en que aparecen en el HTML.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuando usar defer:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La mayoria de scripts de WordPress (es la opción segura por defecto).&lt;/li&gt;
&lt;li&gt;Scripts que dependen del DOM.&lt;/li&gt;
&lt;li&gt;Scripts con dependencias entre si (ya que se ejecutan en orden).&lt;/li&gt;
&lt;li&gt;Plugins de WordPress que cargan su JS en el head.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;como-anadir-defer-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-anadir-defer-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como anadir defer en WordPress&lt;/h3&gt;
&lt;p&gt;La forma más directa es usar un plugin de cache/optimización. WP Rocket, Autoptimize y LiteSpeed Cache tienen una opción “Defer JS” que aplica el atributo automáticamente a todos los scripts. Activarla resuelve el 90% de los problemas de JavaScript bloqueante.&lt;/p&gt;
&lt;p&gt;Si prefieres una solución manual sin plugins adicionales, puedes usar un filtro en functions.php:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_defer_to_scripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tag, $handle, $src) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // No aplicar a scripts criticos que necesiten ejecutarse inmediatamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $exclude &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery-core&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-polyfill&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($handle, $exclude)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tag;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Anadir defer si el script no tiene ya async o defer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tag, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;defer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($tag, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;async&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $tag &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; src=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; defer src=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $tag);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $tag;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script_loader_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_defer_to_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este filtro anade el atributo &lt;code&gt;defer&lt;/code&gt; a todos los scripts excepto jQuery core y otros scripts críticos que necesitan ejecutarse inmediatamente. La lista de exclusiones debe ajustarse según los requisitos de tu sitio.&lt;/p&gt;
&lt;h3 id=&quot;mover-scripts-al-footer-programaticamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mover-scripts-al-footer-programaticamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mover scripts al footer programaticamente&lt;/h3&gt;
&lt;p&gt;Además de defer, puedes mover scripts que se cargan en el head al footer usando WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; move_scripts_to_footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Mover scripts no criticos al footer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_deregister_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_register_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/ruta/al/script.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;move_scripts_to_footer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El parametro &lt;code&gt;true&lt;/code&gt; al final de &lt;code&gt;wp_register_script&lt;/code&gt; indica a WordPress que cargue el script en el footer en lugar del head.&lt;/p&gt;
&lt;h2 id=&quot;css-critical-css-la-solución-al-bloqueo-de-estilos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-critical-css-la-solución-al-bloqueo-de-estilos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS: Critical CSS, la solución al bloqueo de estilos&lt;/h2&gt;
&lt;p&gt;El CSS es más complejo que el JavaScript en lo que respecta al bloqueo de renderizado. No puedes simplemente “retrasar” la carga de CSS porque la página se mostraria como texto sin formato durante un momento, creando el efecto FOUC (Flash of Unstyled Content), que es una experiencia de usuario terrible.&lt;/p&gt;
&lt;h3 id=&quot;que-es-critical-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-critical-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es Critical CSS&lt;/h3&gt;
&lt;p&gt;Critical CSS es la técnica de extraer solo los estilos necesarios para renderizar el contenido “above the fold” (lo visible sin hacer scroll) e incrustarlo directamente en el HTML, mientras el resto del CSS se carga de forma asincrona en segundo plano.&lt;/p&gt;
&lt;p&gt;El proceso funciona asi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Identificar los estilos críticos.&lt;/strong&gt; Analizar que reglas CSS son necesarias para renderizar correctamente la parte visible de la página sin scroll.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incrustar los estilos críticos inline.&lt;/strong&gt; Pegar esos estilos dentro de una etiqueta &lt;code&gt;&amp;#x3C;style&gt;&lt;/code&gt; en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; del HTML, eliminando la necesidad de descargar un archivo CSS externo antes de pintar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cargar el CSS completo de forma asincrona.&lt;/strong&gt; El resto del CSS (estilos del footer, secciones inferiores, modals, etc.) se carga en segundo plano y se aplica cuando este listo.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;implementación-manual-de-critical-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-manual-de-critical-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación manual de Critical CSS&lt;/h3&gt;
&lt;p&gt;Para un sitio simple, puedes generar Critical CSS manualmente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- Critical CSS inline: solo estilos del above the fold --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;system-ui&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;sans-serif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        .header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#1a1a2e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;white&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        .hero&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; auto&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        .hero&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2.5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;line-height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        /* ... solo los estilos necesarios para la parte visible */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    &amp;#x3C;!-- CSS completo cargado de forma asincrona --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/styles/main.css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;style&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;          onload&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;onload&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;stylesheet&apos;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/styles/main.css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;noscript&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El patron &lt;code&gt;preload&lt;/code&gt; con &lt;code&gt;onload&lt;/code&gt; es la técnica estándar para cargar CSS de forma asincrona. El &lt;code&gt;&amp;#x3C;noscript&gt;&lt;/code&gt; fallback asegura que la hoja de estilos completa se cargue normalmente si JavaScript esta deshabilitado.&lt;/p&gt;
&lt;h3 id=&quot;critical-css-con-plugins-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#critical-css-con-plugins-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Critical CSS con plugins de WordPress&lt;/h3&gt;
&lt;p&gt;La mayoria de los plugins de optimización modernos generan Critical CSS automáticamente:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WP Rocket:&lt;/strong&gt; Genera Critical CSS automáticamente para cada página. Es la solución más completa y requiere minima configuración. Al activar la opción “Optimizar la entrega de CSS”, el plugin analiza cada página, extrae los estilos críticos y los incrusta inline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Autoptimize + CriticalCSS.com:&lt;/strong&gt; Autoptimize puede integrarse con el servicio CriticalCSS.com para generar Critical CSS automáticamente. Requiere una API key pero el proceso es completamente automático.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LiteSpeed Cache:&lt;/strong&gt; Si tu servidor usa LiteSpeed, este plugin genera Critical CSS de forma nativa con excelente rendimiento, ya que se integra directamente con el servidor web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Perfmatters:&lt;/strong&gt; Un plugin ligero que permite cargar CSS de forma condicional por página, eliminar CSS no utilizado y generar Critical CSS.&lt;/p&gt;
&lt;h3 id=&quot;eliminar-css-no-utilizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminar-css-no-utilizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminar CSS no utilizado&lt;/h3&gt;
&lt;p&gt;Además del Critical CSS, otra optimización importante es eliminar el CSS que no se usa en cada página. Un sitio WordPress tipico carga entre 200 KB y 1 MB de CSS en cada página, pero cada página individual solo necesita entre un 10% y un 30% de esos estilos.&lt;/p&gt;
&lt;p&gt;Herramientas como PurgeCSS, UnCSS o las funcionalidades integradas de WP Rocket pueden analizar que selectores CSS se usan realmente en cada página y eliminar el resto. Esto reduce dramaticamente el tamaño de los archivos CSS que el navegador tiene que descargar y parsear.&lt;/p&gt;
&lt;p&gt;En WordPress, puedes desencolar las hojas de estilo de plugins que no se usan en determinadas páginas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; remove_unused_css&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // No cargar los estilos de WooCommerce en páginas que no son de tienda&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_woocommerce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_cart&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_checkout&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce-general&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce-layout&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woocommerce-smallscreen&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // No cargar los estilos de Contact Form 7 excepto en la página de contacto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contacto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_dequeue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;contact-form-7&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;remove_unused_css&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;optimización-de-fuentes-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-fuentes-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de fuentes web&lt;/h2&gt;
&lt;p&gt;Las fuentes web son otro recurso frecuente que bloquea el renderizado. Cuando el navegador encuentra una declaracion &lt;code&gt;@font-face&lt;/code&gt; en el CSS, necesita descargar el archivo de fuente antes de poder pintar el texto. Esto crea un retraso visible que afecta tanto al FCP como al LCP.&lt;/p&gt;
&lt;h3 id=&quot;font-display-swap&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#font-display-swap&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;font-display: swap&lt;/h3&gt;
&lt;p&gt;La propiedad CSS &lt;code&gt;font-display: swap&lt;/code&gt; indica al navegador que muestre el texto inmediatamente con una fuente del sistema (fallback) mientras la fuente web se descarga en segundo plano. Cuando la fuente web esta lista, el navegador la intercambia automáticamente.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@font-face&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-family&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;MiFuente&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/fonts/mi-fuente.woff2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;woff2&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;swap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto elimina el periodo de texto invisible (FOIT, Flash of Invisible Text) y mejora significativamente el FCP.&lt;/p&gt;
&lt;h3 id=&quot;precargar-fuentes-criticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#precargar-fuentes-criticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Precargar fuentes criticas&lt;/h3&gt;
&lt;p&gt;Para las fuentes que se usan en el above the fold, anade una etiqueta de preload en el head:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/fonts/mi-fuente.woff2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;font&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;font/woff2&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; crossorigin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El atributo &lt;code&gt;crossorigin&lt;/code&gt; es necesario incluso cuando las fuentes se sirven desde tu propio dominio, debido a como los navegadores manejan las peticiones de fuentes.&lt;/p&gt;
&lt;h3 id=&quot;alojar-fuentes-localmente-en-lugar-de-google-fonts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alojar-fuentes-localmente-en-lugar-de-google-fonts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alojar fuentes localmente en lugar de Google Fonts&lt;/h3&gt;
&lt;p&gt;Google Fonts es la fuente de fuentes web más popular, pero tiene implicaciones de rendimiento y privacidad:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento:&lt;/strong&gt; Cargar fuentes de Google requiere conexiónes DNS adicionales, handshakes TLS y peticiones HTTP al CDN de Google. Alojar las fuentes localmente elimina toda esta latencia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Privacidad (RGPD):&lt;/strong&gt; Google Fonts transmite la dirección IP del visitante a servidores de Google, lo que ha sido declarado ilegal en varios paises de la UE sin consentimiento previo del usuario.&lt;/p&gt;
&lt;p&gt;Para alojar Google Fonts localmente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Descarga los archivos de fuente desde google-webfonts-helper.herokuapp.com o directamente del repositorio de Google Fonts.&lt;/li&gt;
&lt;li&gt;Sube los archivos WOFF2 a tu servidor (WOFF2 ofrece la mejor compresion).&lt;/li&gt;
&lt;li&gt;Actualiza las declaraciones &lt;code&gt;@font-face&lt;/code&gt; en tu CSS para apuntar a los archivos locales.&lt;/li&gt;
&lt;li&gt;Elimina las referencias a fonts.googleapis.com y fonts.gstatic.com de tu HTML.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En WordPress, el plugin OMGF (Optimize My Google Fonts) automatiza este proceso completamente.&lt;/p&gt;
&lt;h2 id=&quot;minificacion-y-combinación-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#minificacion-y-combinación-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Minificacion y combinación de archivos&lt;/h2&gt;
&lt;h3 id=&quot;minificacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#minificacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Minificacion&lt;/h3&gt;
&lt;p&gt;La minificacion elimina espacios en blanco, comentarios y caracteres innecesarios de los archivos CSS y JavaScript sin cambiar su funcionalidad. Un archivo CSS de 100 KB puede reducirse a 70 KB despues de la minificacion. Multiplicado por 10 archivos, el ahorro es significativo.&lt;/p&gt;
&lt;p&gt;En WordPress, la minificacion se gestiona tipicamente con plugins de cache:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP Rocket:&lt;/strong&gt; Minifica CSS y JS automáticamente con una casilla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoptimize:&lt;/strong&gt; Especializado en minificacion y combinación de archivos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LiteSpeed Cache:&lt;/strong&gt; Incluye minificacion integrada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;combinación-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#combinación-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Combinación de archivos&lt;/h3&gt;
&lt;p&gt;Combinar multiples archivos CSS en uno (y multiples archivos JS en uno) reduce el número de peticiones HTTP. Sin embargo, en 2026 con HTTP/2 y HTTP/3, la combinación de archivos es menos crítica que antes, ya que estos protocolos permiten multiples descargas simultaneas sobre una sola conexión.&lt;/p&gt;
&lt;p&gt;La combinación puede incluso ser contraproducente si invalida la cache con demasiada frecuencia. Si combinas 15 archivos CSS en uno y cambias una sola linea en un plugin, todo el archivo combinado necesita re-descargarse. Con archivos separados, solo el archivo modificado necesita actualizarse.&lt;/p&gt;
&lt;p&gt;La recomendación actual es minificar siempre, pero combinar solo cuando el sitio todavia usa HTTP/1.1 o cuando el número de archivos es excesivo (más de 30 peticiones CSS o JS).&lt;/p&gt;
&lt;h2 id=&quot;estrategia-de-priorizacion-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-priorizacion-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de priorizacion de recursos&lt;/h2&gt;
&lt;p&gt;Además de async, defer y Critical CSS, los navegadores modernos soportan directivas de priorizacion que permiten indicar que recursos son críticos y cuales pueden esperar:&lt;/p&gt;
&lt;h3 id=&quot;preload&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#preload&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Preload&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/critical-script.js&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;script&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;preload&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/hero-image.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preload indica al navegador que descargue un recurso lo antes posible, antes de que lo descubra naturalmente durante el parsing del HTML. Usalo para recursos críticos como la imagen LCP, la fuente principal o un script esencial.&lt;/p&gt;
&lt;h3 id=&quot;prefetch&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prefetch&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prefetch&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;prefetch&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/página-siguiente.html&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;prefetch&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/estilos-página2.css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prefetch indica al navegador que descargue un recurso con baja prioridad durante el tiempo libre, anticipando que el usuario lo necesitara pronto. Es útil para precargar recursos de la siguiente página probable de navegación.&lt;/p&gt;
&lt;h3 id=&quot;fetchpriority&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fetchpriority&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fetchpriority&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/hero.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetchpriority&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;high&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/decorativa.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetchpriority&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;low&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El atributo &lt;code&gt;fetchpriority&lt;/code&gt; permite ajustar la prioridad de descarga de recursos individuales. Usalo para aumentar la prioridad de la imagen LCP y reducir la de imágenes decorativas o fuera de pantalla.&lt;/p&gt;
&lt;h2 id=&quot;diagnostico-como-identificar-recursos-bloqueantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diagnostico-como-identificar-recursos-bloqueantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diagnostico: como identificar recursos bloqueantes&lt;/h2&gt;
&lt;h3 id=&quot;usando-pagespeed-insights&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usando-pagespeed-insights&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usando PageSpeed Insights&lt;/h3&gt;
&lt;p&gt;PageSpeed Insights lista los recursos que bloquean el renderizado en la sección “Oportunidades” bajo “Eliminar los recursos que bloquean el renderizado”. Cada recurso listado muestra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El URL del archivo.&lt;/li&gt;
&lt;li&gt;El tamaño del archivo.&lt;/li&gt;
&lt;li&gt;El ahorro potencial en milisegundos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto te da una lista clara de los archivos que necesitas optimizar, ordenados por impacto.&lt;/p&gt;
&lt;h3 id=&quot;usando-chrome-devtools&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usando-chrome-devtools&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usando Chrome DevTools&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Abre Chrome DevTools (F12).&lt;/li&gt;
&lt;li&gt;Ve a la pestana “Performance”.&lt;/li&gt;
&lt;li&gt;Graba una carga de página.&lt;/li&gt;
&lt;li&gt;Busca barras largas de color amarillo (JavaScript) y morado (CSS) en la sección “Main” del timeline.&lt;/li&gt;
&lt;li&gt;Los bloques que aparecen antes del primer pintado son los recursos que bloquean el renderizado.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La pestana “Network” también es util. Filtra por CSS y JS, ordena por prioridad y busca archivos que se descargan con prioridad “High” o “Highest” antes del primer pintado.&lt;/p&gt;
&lt;h3 id=&quot;usando-webpagetest&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usando-webpagetest&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usando WebPageTest&lt;/h3&gt;
&lt;p&gt;WebPageTest ofrece un waterfall detallado que muestra visualmente la secuencia de carga de cada recurso. Las barras de color azul claro representan DNS, las verdes la conexión TCP, las moradas el TLS, y las azul oscuro la descarga del archivo. Busca archivos CSS y JS que bloquean el inicio del renderizado, representado por la linea vertical verde.&lt;/p&gt;
&lt;h2 id=&quot;estrategia-completa-de-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-completa-de-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia completa de optimización&lt;/h2&gt;
&lt;p&gt;Para un sitio WordPress, la estrategia optima combina todas estas técnicas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt; Todo con &lt;code&gt;defer&lt;/code&gt; excepto scripts absolutamente críticos (analítica básica, scripts de consentimiento de cookies). Nunca uses &lt;code&gt;async&lt;/code&gt; para scripts que dependen de jQuery.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CSS:&lt;/strong&gt; Critical CSS inline en el head para cada tipo de página (home, artículo, producto, categoría). Resto del CSS cargado de forma asincrona con la técnica preload/onload.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fuentes:&lt;/strong&gt; Alojadas localmente, formato WOFF2, con &lt;code&gt;font-display: swap&lt;/code&gt; y preload para la fuente principal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Imágenes:&lt;/strong&gt; La imagen LCP con &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; y preload. Resto de imágenes con lazy loading nativo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Terceros:&lt;/strong&gt; Scripts de terceros (analítica, chat, redes sociales) cargados con defer o, mejor aun, con carga diferida tras la interacción del usuario.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Minificacion:&lt;/strong&gt; Todos los archivos CSS y JS minificados. Combinación solo si es beneficiosa.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Con esta estrategia, el usuario ve contenido inmediatamente mientras los recursos pesados (scripts de galeria, mapas, widgets) se cargan en segundo plano. El resultado tipico es una mejora del FCP de 3-5 segundos a menos de 1.5 segundos y una mejora del LCP por debajo de 2.5 segundos.&lt;/p&gt;
&lt;h2 id=&quot;errores-comunes-al-optimizar-recursos-bloqueantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-al-optimizar-recursos-bloqueantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes al optimizar recursos bloqueantes&lt;/h2&gt;
&lt;h3 id=&quot;aplicar-defer-a-jquery-cuando-plugins-lo-necesitan-sincronamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aplicar-defer-a-jquery-cuando-plugins-lo-necesitan-sincronamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aplicar defer a jQuery cuando plugins lo necesitan sincronamente&lt;/h3&gt;
&lt;p&gt;Muchos plugins de WordPress dependen de jQuery y esperan que este disponible inmediatamente. Aplicar defer a jQuery puede romper sliders, modals, validación de formularios y otras funcionalidades. La solución es excluir jQuery del defer o migrar a una versión del plugin que no dependa de jQuery.&lt;/p&gt;
&lt;h3 id=&quot;eliminar-css-crítico-por-error&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminar-css-crítico-por-error&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminar CSS crítico por error&lt;/h3&gt;
&lt;p&gt;Al purgar CSS no utilizado, herramientas automáticas pueden eliminar estilos que solo se activan con interacción del usuario (hovers, estados activos, modals) o que se aplican a contenido cargado dinamicamente. Siempre verifica el resultado visual despues de purgar CSS, especialmente en dispositivos móviles.&lt;/p&gt;
&lt;h3 id=&quot;no-probar-en-móvil&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#no-probar-en-móvil&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;No probar en móvil&lt;/h3&gt;
&lt;p&gt;Un sitio puede cargar rápido en escritorio con una conexión de fibra y fallar completamente en móvil con 4G. Siempre prueba las optimizaciones en la vista móvil de PageSpeed Insights y en dispositivos reales.&lt;/p&gt;
&lt;h3 id=&quot;confiar-solo-en-la-puntuacion-de-pagespeed&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#confiar-solo-en-la-puntuacion-de-pagespeed&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Confiar solo en la puntuacion de PageSpeed&lt;/h3&gt;
&lt;p&gt;PageSpeed Insights es una herramienta de diagnóstico, no un objetivo en si mismo. Un sitio con puntuacion 100 pero que no convierte es inutil. Optimiza para la experiencia real del usuario, no para un número.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Los recursos que bloquean el renderizado son uno de los problemas de rendimiento más comunes y más soluciónables en sitios WordPress. La combinación de &lt;code&gt;defer&lt;/code&gt; para JavaScript, Critical CSS para hojas de estilo y &lt;code&gt;font-display: swap&lt;/code&gt; para fuentes web puede transformar un sitio que tarda 5 segundos en mostrar contenido en uno que pinta en menos de 1.5 segundos.&lt;/p&gt;
&lt;p&gt;La clave es entender el mecanismo: el navegador no puede pintar hasta que ha procesado los recursos en el head. Reducir, retrasar o eliminar esos recursos acelera directamente el primer pintado y mejora las metricas de Core Web Vitals que Google usa para posicionar.&lt;/p&gt;
&lt;p&gt;Comienza por PageSpeed Insights para identificar los recursos problematicos, implementa las soluciones con un plugin de cache como WP Rocket o mediante código personalizado, y verifica los resultados. La mejora suele ser dramatica e inmediata.&lt;/p&gt;</content:encoded><category>optimization</category><category>performance</category><category domain="tag">core web vitals</category><category domain="tag">pagespeed</category><category domain="tag">css</category><enclosure url="https://wppoland.com/images/og/jak-usunac-blokade-renderowania-strony-przez-javascript-i-css.jpg" type="image/jpeg"/></item><item><title>Como personalizar la página de inicio de sesion de WordPress sin plugins</title><link>https://wppoland.com/es/customize-wordpress-login-page/</link><guid isPermaLink="true">https://wppoland.com/es/customize-wordpress-login-page/</guid><description>Personaliza tu pantalla de login de WordPress con marca blanca. Cambia el logo, personaliza CSS, desactiva el efecto &quot;Shake&quot; y refuerza los mensajes de error para seguridad.</description><pubDate>Sat, 27 Oct 2012 11:47:04 GMT</pubDate><content:encoded>&lt;p&gt;La pantalla de login predeterminada de WordPress (&lt;code&gt;wp-login.php&lt;/code&gt;) es iconica, pero grita “Blog generico”.
Si eres una agencia construyendo un sitio para un clientes (p. ej., Coca-Cola), ver el logo de WordPress es un fallo de branding.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.
En 2026, el &lt;strong&gt;White-Labeling&lt;/strong&gt; es práctica estándar.
Esta guía te muestra como personalizar completamente la experiencia de login usando &lt;code&gt;functions.php&lt;/code&gt;, haciendola parecer una aplicación a medida.&lt;/p&gt;
&lt;p&gt;Si solo necesitas la versión práctica, usa los hooks de login para reemplazar el logo, cargar CSS dedicado y devolver mensajes de error menos reveladores, todo sin instalar otro plugin solo para branding.&lt;/p&gt;
&lt;h2 id=&quot;1-cambiar-el-logo-lo-básico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-cambiar-el-logo-lo-básico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Cambiar el logo (lo básico)&lt;/h2&gt;
&lt;p&gt;Primero, eliminemos la “W” de WordPress y reemplazala con el logo de tu clientes.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_login_logo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;text/css&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        #login h1 a, .login h1 a {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_stylesheet_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;images&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;logo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 65px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 320px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;contain&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;no&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;bottom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;30px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_login_logo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Consejo profesional&lt;/strong&gt;: El enlace predeterminado va a WordPress.org. Cambialo a la página principal de tu sitio:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_login_logo_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_headerurl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_login_logo_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;2-renovacion-completa-del-css-el-look-moderno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-renovacion-completa-del-css-el-look-moderno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Renovacion completa del CSS (el look moderno)&lt;/h2&gt;
&lt;p&gt;El fondo gris predeterminado (#f1f1f1) es aburrido. Hagamoslo una experiencia de marca a pantalla completa.
Crea un archivo &lt;code&gt;login-style.css&lt;/code&gt; en tu tema y encolalo solo en la página de login.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_login_stylesheet&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_enqueue_style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;custom-login&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_stylesheet_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/style-login.css&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_login_stylesheet&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de &lt;code&gt;style-login.css&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#0d1117&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Modo oscuro */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    align-items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    justify-content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; form&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#161b22&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; #30363d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    box-shadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-radius&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#c9d1d9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.wp-core-ui&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; .button-primary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#238636&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Verde GitHub */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;rgba&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;27&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;31&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;35&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;3-refuerzo-de-seguridad-oscuridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-refuerzo-de-seguridad-oscuridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Refuerzo de seguridad (oscuridad)&lt;/h2&gt;
&lt;p&gt;Por defecto, si escribes una contrasena incorrecta, WordPress dice: &lt;em&gt;“La contrasena que introdujiste para el usuario &lt;strong&gt;admin&lt;/strong&gt; es incorrecta.”&lt;/em&gt;
Esto le dice a un hacker: “El usuario &lt;strong&gt;admin&lt;/strong&gt; existe! Ahora solo hay que hacer fuerza bruta en la contrasena.”&lt;/p&gt;
&lt;p&gt;Forcemos a WordPress a ser vago.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_login_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Algo esta mal!&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_errors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_login_errors&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora el mensaje de error es generico, sin revelar nada.&lt;/p&gt;
&lt;h2 id=&quot;4-eliminar-el-efecto-shake&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-eliminar-el-efecto-shake&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Eliminar el efecto “shake”&lt;/h2&gt;
&lt;p&gt;Cuando fallas un login, el formulario se sacude. Algunos clientes encuentran esto molesto o poco profesional.
Puedes eliminar el JS que lo activa.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_remove_login_shake&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_shake_js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_login_shake&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-anadiendo-2fa--passkeys-el-futuro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-anadiendo-2fa--passkeys-el-futuro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Anadiendo 2FA / Passkeys (el futuro)&lt;/h2&gt;
&lt;p&gt;En 2026, las contrasenas son posiblemente obsoletas.
Aunque no puedes construir fácilmente 2FA (Autenticación de Dos Factores) desde cero en &lt;code&gt;functions.php&lt;/code&gt;, deberias estilizar los campos de 2FA si usas un plugin como &lt;strong&gt;Two Factor&lt;/strong&gt;.
Apunta a la clase CSS &lt;code&gt;.login .backup-methods&lt;/code&gt; para asegurarte de que los botones “Usar una llave de seguridad” coincidan con tu branding.&lt;/p&gt;
&lt;h2 id=&quot;6-personalización-avanzada-del-formulario&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-personalización-avanzada-del-formulario&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Personalización avanzada del formulario&lt;/h2&gt;
&lt;h3 id=&quot;campos-personalizados-en-el-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#campos-personalizados-en-el-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Campos personalizados en el login&lt;/h3&gt;
&lt;p&gt;Puedes anadir campos adicionales al formulario de login para requisitos específicos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Anadir campo personalizado al formulario de login&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_form&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;login-department&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; for=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;department&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Departamento&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;department&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;department&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;marketing&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Marketing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;development&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Desarrollo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;management&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Direccion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;redireccion-personalizada-según-rol&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#redireccion-personalizada-según-rol&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Redireccion personalizada según rol&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $redirect_to, $request, $user ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $user ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;administrator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; admin_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;customer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wc_get_page_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;myaccount&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;subscriber&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;roles ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;miembros&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $redirect_to;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-limitacion-de-intentos-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-limitacion-de-intentos-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Limitacion de intentos de login&lt;/h2&gt;
&lt;p&gt;Además de la personalización visual, es fundamental limitar los intentos de login:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_limit_login_attempts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $max_attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $lockout_time &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; MINUTE_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $ip &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REMOTE_ADDR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $transient_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;login_attempts_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ip );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $transient_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attempts ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $max_attempts ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;Demasiados intentos de inicio de sesion. Intentalo de nuevo en 15 minutos.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;Acceso bloqueado&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;response&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 403&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_login_failed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $ip &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REMOTE_ADDR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $transient_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;login_attempts_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $ip );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $transient_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $attempts ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $transient_key, $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; MINUTE_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_limit_login_attempts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;8-página-de-login-completamente-personalizada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-página-de-login-completamente-personalizada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Página de login completamente personalizada&lt;/h2&gt;
&lt;p&gt;Para una experiencia totalmente a medida, puedes crear una página de login personalizada usando una plantilla de WordPress:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Redirigir wp-login.php a página personalizada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_user_logged_in&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $custom_login_page &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;acceso&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REQUEST_URI&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-login.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;             &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $_GET[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;action&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $custom_login_page );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;9-consideraciones-de-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-consideraciones-de-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Consideraciones de accesibilidad&lt;/h2&gt;
&lt;p&gt;Al personalizar la página de login, no olvides la accesibilidad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Asegurar contraste suficiente */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#c9d1d9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Focus visible para navegación por teclado */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; input&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;:focus&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    outline&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; solid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; #238636&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    outline-offset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    box-shadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Respetar preferencias de movimiento reducido */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (prefers-reduced-motion: reduce) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; form&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Modo oscuro automático */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (prefers-color-scheme: dark) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    body&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.login&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        background-color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#0d1117&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;10-pruebas-y-verificación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-pruebas-y-verificación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Pruebas y verificación&lt;/h2&gt;
&lt;p&gt;Despues de personalizar la página de login, verifica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El logo se muestra correctamente en diferentes tamaños de pantalla&lt;/li&gt;
&lt;li&gt;Los mensajes de error son genericos y no revelan información&lt;/li&gt;
&lt;li&gt;El formulario funciona correctamente con gestores de contrasenas&lt;/li&gt;
&lt;li&gt;La accesibilidad por teclado es completa&lt;/li&gt;
&lt;li&gt;Los plugins de 2FA siguen funcionando correctamente&lt;/li&gt;
&lt;li&gt;La redireccion despues del login es correcta para cada rol&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Una página de login personalizada es la “guinda del pastel” de un proyecto WordPress profesional.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ponle marca&lt;/strong&gt;: Logo + Enlace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dale estilo&lt;/strong&gt;: Control total del CSS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protegela&lt;/strong&gt;: Mensajes de error genericos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No dejes que tu clientes vea la interfaz predeterminada de WordPress. Rompe la inmersion de una solución construida a medida.&lt;/p&gt;</content:encoded><category>branding</category><category>security</category><category>development</category><category domain="tag">login</category><category domain="tag">white-label</category><category domain="tag">css</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Dominando Google Search Console y la API de Indexacion en 2026</title><link>https://wppoland.com/es/mastering-google-search-console-indexing-api/</link><guid isPermaLink="true">https://wppoland.com/es/mastering-google-search-console-indexing-api/</guid><description>Esperar a que Google indexe tu sitio es cosa de 2015. Aprende como usar la API de Indexacion para actualizaciones instantaneas, depurar errores de cobertura y enviar sitemaps XML programaticamente.</description><pubDate>Sat, 06 Oct 2012 06:56:49 GMT</pubDate><content:encoded>&lt;p&gt;En 2012, para agregar un sitio a Google, completabas un formulario &lt;code&gt;add-url.html&lt;/code&gt;.
En 2026, si dependes del rastreo pasivo de Google, tu contenido puede tardar semanas en aparecer.&lt;/p&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Especialmente para sitios de &lt;strong&gt;Noticias&lt;/strong&gt;, &lt;strong&gt;Empleos&lt;/strong&gt; e &lt;strong&gt;Inmobiliaria&lt;/strong&gt;, el rastreo pasivo esta muerto.
Necesitas empujar datos a Google usando APIs.&lt;/p&gt;
&lt;h2 id=&quot;1-la-api-de-indexacion-de-google-no-solo-para-empleos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-la-api-de-indexacion-de-google-no-solo-para-empleos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. La API de Indexacion de Google (no solo para empleos)&lt;/h2&gt;
&lt;p&gt;Oficialmente, Google dice que la API de Indexacion es solo para &lt;code&gt;JobPosting&lt;/code&gt; y &lt;code&gt;BroadcastEvent&lt;/code&gt;.
Extraoficialmente, los desarrolladores la han estado usando para contenido regular durante años con éxito variable.
Sin embargo, la estrategia es clara: &lt;strong&gt;Usala para actualizaciones sensibles al tiempo.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como implementarla en WordPress:&lt;/strong&gt;
No escribas la solicitud cURL tu mismo. Usa una libreria como &lt;code&gt;googleapis/google-api-php-clientes&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo: Notificando a Google de una actualización de URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$clientes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Client&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setAuthConfig&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;service_account.json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addScope&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Google_Service_Indexing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;INDEXING&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$service &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Service_Indexing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($clientes);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$postBody &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Service_Indexing_UrlNotification&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$postBody&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setUrl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://tusitio.com/nuevo-artículo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$postBody&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;URL_UPDATED&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$service&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;urlNotifications&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;publish&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($postBody);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;automatizacion-con-wordpress-hooks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-con-wordpress-hooks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion con WordPress hooks&lt;/h3&gt;
&lt;p&gt;Para que la indexacion sea automática cada vez que publiques o actualices contenido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; notificar_google_al_publicar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, $post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_status &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;publish&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $clientes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Client&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setAuthConfig&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ABSPATH&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;service_account.json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addScope&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Google_Service_Indexing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;INDEXING&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $service &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Service_Indexing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($clientes);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $postBody &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Service_Indexing_UrlNotification&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $postBody&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setUrl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $postBody&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;URL_UPDATED&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $service&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;urlNotifications&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;publish&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($postBody);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;_indexing_api_notified&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mysql&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $e) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        error_log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Error API Indexacion: &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getMessage&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;publish_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;notificar_google_al_publicar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;limites-y-mejores-prácticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limites-y-mejores-prácticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limites y mejores prácticas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cuota diaria&lt;/strong&gt;: 200 solicitudes por dia por propiedad de GSC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prioriza contenido nuevo&lt;/strong&gt;: No desperdicies la cuota en páginas antiguas sin cambios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorea resultados&lt;/strong&gt;: Verifica en GSC si las URLs realmente se indexan más rápido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No abuses&lt;/strong&gt;: Google puede revocar el acceso si detecta abuso.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-depurando-descubierta---actualmente-no-indexada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-depurando-descubierta---actualmente-no-indexada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Depurando “Descubierta - actualmente no indexada”&lt;/h2&gt;
&lt;p&gt;Este es el error más comun en GSC en 2026.
Significa: &lt;em&gt;Google sabe que tu página existe, pero decidio que no valia el presupuesto de rastreo.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La solución NO es técnica.&lt;/strong&gt; Generalmente esta relacionada con la calidad.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenido duplicado&lt;/strong&gt;: Esta página es 90% similar a otra?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido delgado&lt;/strong&gt;: La página depende de JS para renderizar texto que Googlebot no esta ejecutando?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces internos&lt;/strong&gt;: Es una “página huerfana”? (Sin enlaces apuntando a ella).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-depuracion-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-depuracion-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de depuracion paso a paso&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Identifica las páginas afectadas&lt;/strong&gt;: Usa el informe de Cobertura en GSC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agrupa por patron&lt;/strong&gt;: Las páginas afectadas comparten una plantilla o tipo de contenido?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica contenido único&lt;/strong&gt;: Usa herramientas como Siteliner para detectar duplicados internos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejora los enlaces internos&lt;/strong&gt;: Asegurate de que cada página importante tenga al menos 3-5 enlaces internos apuntando a ella.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solicita indexacion manual&lt;/strong&gt;: Despues de las mejoras, usa “Inspeccionar URL” en GSC.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;señales-de-calidad-que-google-evalua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-calidad-que-google-evalua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de calidad que Google evalua&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;E-E-A-T&lt;/strong&gt;: Experiencia, Conocimiento, Autoridad, Confianza del autor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Freshness&lt;/strong&gt;: Cuando fue la última actualización del contenido?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Engagement&lt;/strong&gt;: Tasa de rebote, tiempo en página, interacción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces entrantes&lt;/strong&gt;: Otras páginas (internas y externas) enlazan a esta?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-sitemaps-xml-la-forma-moderna&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-sitemaps-xml-la-forma-moderna&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Sitemaps XML: La forma moderna&lt;/h2&gt;
&lt;p&gt;Yoast y RankMath hacen esto automáticamente, pero como desarrollador, debes saber que los &lt;strong&gt;Sitemaps de imágenes&lt;/strong&gt; son críticos para la indexacion de AVIF/WebP.&lt;/p&gt;
&lt;p&gt;Asegurate de que tu &lt;code&gt;sitemap.xml&lt;/code&gt; incluya etiquetas &lt;code&gt;&amp;#x3C;image:image&gt;&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;https://tusitio.com/mi-artículo&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;image:image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;image:loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;https://tusitio.com/wp-content/uploads/imagen.avif&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;image:loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;image:title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Descripcion de la imagen para SEO&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;image:title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;image:image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si tu sitemap carece de imágenes, pierdes tráfico de Google Images/Lens.&lt;/p&gt;
&lt;h3 id=&quot;sitemaps-avanzados-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitemaps-avanzados-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitemaps avanzados para WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar imagenes destacadas al sitemap personalizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; agregar_imagenes_sitemap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($url_list) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($url_list &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$url) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; url_to_postid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($url[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;loc&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $url[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;images&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_post_thumbnail_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;full&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                    &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $url_list;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sitemaps-por-tipo-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitemaps-por-tipo-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitemaps por tipo de contenido&lt;/h3&gt;
&lt;p&gt;Para sitios grandes, divide tus sitemaps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sitemap-posts.xml&lt;/code&gt; - Artículos del blog&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sitemap-pages.xml&lt;/code&gt; - Páginas estaticas&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sitemap-products.xml&lt;/code&gt; - Productos WooCommerce&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sitemap-images.xml&lt;/code&gt; - Galeria de imágenes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un sitemap index los agrupa todos:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemapindex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; xmlns&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;https://tusitio.com/sitemap-posts.xml&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;https://tusitio.com/sitemap-pages.xml&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;https://tusitio.com/sitemap-products.xml&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;loc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;sitemapindex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-robotstxt-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-robotstxt-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Robots.txt en 2026&lt;/h2&gt;
&lt;p&gt;Con bots de IA rastreando todo, tu &lt;code&gt;robots.txt&lt;/code&gt; es tu primera linea de defensa.
Bloquea los scrapers de IA que no envian tráfico, pero permite los motores de búsqueda.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: GPTBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Disallow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: CCBot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Disallow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: anthropic-ai&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Disallow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: Googlebot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: Bingbot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Proteger areas administrativas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-agent: *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Disallow: /wp-admin/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Allow: /wp-admin/admin-ajax.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Sitemap&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sitemap: https://tusitio.com/sitemap_index.xml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;gestión-dinámica-de-robotstxt-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-dinámica-de-robotstxt-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión dinámica de robots.txt en WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Personalizar robots.txt programaticamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; personalizar_robots_txt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($output, $public) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;# Bloquear scrapers de IA&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;User-agent: GPTBot&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Disallow: /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;User-agent: CCBot&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Disallow: /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;User-agent: anthropic-ai&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Disallow: /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;# Permitir motores de búsqueda&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;User-agent: Googlebot&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Allow: /&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Sitemap: &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/sitemap_index.xml&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $output;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;robots_txt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;personalizar_robots_txt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-monitoreo-programatico-con-la-api-de-gsc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-monitoreo-programatico-con-la-api-de-gsc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Monitoreo programatico con la API de GSC&lt;/h2&gt;
&lt;p&gt;No te limites al panel web de GSC. Usa la API para monitoreo automatizado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Consultar datos de rendimiento via API de GSC&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; obtener_rendimiento_gsc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sitio_url, $fecha_inicio, $fecha_fin) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $clientes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Client&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setAuthConfig&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;service_account.json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $clientes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addScope&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Google_Service_SearchConsole&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;WEBMASTERS_READONLY&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $service &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Service_SearchConsole&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($clientes);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $request &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Google_Service_SearchConsole_SearchAnalyticsQueryRequest&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setStartDate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fecha_inicio);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setEndDate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fecha_fin);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setDimensions&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $request&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setRowLimit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $service&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;searchanalytics&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($sitio_url, $request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;El SEO ya no es solo “palabras clave”. Es “Infraestructura”.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Empuja&lt;/strong&gt;: Usa APIs para notificar a Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorea&lt;/strong&gt;: Comprueba la API de GSC para errores de cobertura programaticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Defiende&lt;/strong&gt;: Bloquea bots de IA inutiles via robots.txt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No esperes a Google. Invitalos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con tu estrategia de indexacion? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; puede implementar la API de Indexacion en tu sitio. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>development</category><category domain="tag">google-search-console</category><category domain="tag">api-indexacion</category><category domain="tag">seo</category><category domain="tag">sitemap</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Cómo añadir un widget en WordPress</title><link>https://wppoland.com/es/how-to-add-widget-wordpress/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-add-widget-wordpress/</guid><description>¿Dónde fueron los widgets en el nuevo WordPress? Guía para añadir elementos a la barra lateral y al pie de página en la era de los temas de bloques.</description><pubDate>Mon, 24 Sep 2012 20:23:45 GMT</pubDate><content:encoded>&lt;p&gt;Durante años, los “Widgets” eran bloques simples: “Buscar”, “Entradas recientes”, “Categorías”. Los arrastrabas a la barra lateral y listo. Con la llegada de la era de &lt;strong&gt;Full Site Editing (FSE)&lt;/strong&gt; y los temas de bloques, el concepto de widget ha cambiado completamente.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Si quieres la respuesta práctica primero, los temas clásicos todavía usan áreas de widgets, mientras que los temas de bloques generalmente trasladan ese trabajo al Editor del Sitio y a la estructura de plantillas.&lt;/p&gt;
&lt;h2 id=&quot;1-temás-clásicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-temás-clásicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Temás clásicos&lt;/h2&gt;
&lt;p&gt;Si estás usando un tipo de tema más antiguo (como Astra, GeneratePress o el clásico Twenty Twenty-One), todavía tienes acceso al menú &lt;strong&gt;Apariencia &gt; Widgets&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Sin embargo, incluso allí, desde WP 5.8, se usa el &lt;strong&gt;Editor de Bloques&lt;/strong&gt; por defecto. En lugar de campos simples, tienes la interfaz completa de Gutenberg dentro de la barra lateral. Puedes añadir cualquier cosa ahí: Párrafo, Imagen, incluso un Shortcode.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Consejo:&lt;/em&gt; Si echas de menos la vista antigua, instala el plugin oficial &lt;strong&gt;Classic Widgets&lt;/strong&gt;. Restaura la pantalla más simple de arrastrar y soltar para las áreas de widgets clásicos.&lt;/p&gt;
&lt;h2 id=&quot;2-temás-de-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-temás-de-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Temás de bloques&lt;/h2&gt;
&lt;p&gt;En los temas modernos (como Twenty Twenty-Four o Twenty Twenty-Five) &lt;strong&gt;no hay menú de Widgets&lt;/strong&gt;. Ha desaparecido.&lt;/p&gt;
&lt;p&gt;En su lugar, ve a &lt;strong&gt;Apariencia &gt; Editor&lt;/strong&gt;. Todo tu sitio es editable.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;¿Quieres añadir algo al pie de página? Abre la parte de plantilla correspondiente en el Editor del Sitio.&lt;/li&gt;
&lt;li&gt;¿Quieres una barra lateral? Constrúyela con bloques de diseño como Columnas o Grupo, dependiendo de la estructura del tema.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;qué-elegir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-elegir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué elegir?&lt;/h2&gt;
&lt;p&gt;Para principiantes, la experiencia de widgets basada en bloques suele ser más flexible porque puedes añadir contenido más rico sin HTML personalizado. Si estás manteniendo un flujo de trabajo más antiguo, el plugin Classic Widgets sigue siendo la opción más fácil.&lt;/p&gt;
&lt;h2 id=&quot;comprendiendo-la-transición-de-widgets-clásicos-a-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprendiendo-la-transición-de-widgets-clásicos-a-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprendiendo la transición de widgets clásicos a bloques&lt;/h2&gt;
&lt;p&gt;La transición de los widgets clásicos al editor de bloques representa uno de los cambios más significativos en la historia de la interfaz de WordPress. Cuando WordPress 5.8 se lanzó en julio de 2021, introdujo el editor de bloques en las áreas de widgets por primera vez. Este cambio significó que los usuarios que estaban acostumbrados a la simple interfaz de arrastrar y soltar de repente se encontraron con la interfaz completa de Gutenberg.&lt;/p&gt;
&lt;h3 id=&quot;por-qué-wordpress-hizo-el-cambio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-wordpress-hizo-el-cambio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué WordPress hizo el cambio&lt;/h3&gt;
&lt;p&gt;El equipo del núcleo de WordPress tenía varias razones para esta transición. En primer lugar, los bloques ofrecen capacidades mucho más ricas que los widgets tradicionales. Donde antes estabas limitado a opciones predefinidas como “Entradas recientes” o “Categorías”, ahora puedes usar cualquier bloque de Gutenberg, incluyendo columnas, galerías, tablas, código personalizado y más. Esto significa que tus barras laterales y pies de página pueden ser tan ricos y personalizados como tu contenido principal.&lt;/p&gt;
&lt;p&gt;En segundo lugar, mantener dos sistemas de interfaz separados era una carga técnica para el equipo de desarrollo de WordPress. Al unificar todo bajo el paradigma de bloques, el equipo puede concentrar sus esfuerzos en mejorar una única interfaz en lugar de mantener dos.&lt;/p&gt;
&lt;p&gt;Tercero, la dirección de WordPress hacia Full Site Editing (FSE) requería que todo el sitio fuera editable a través de bloques. Los widgets eran uno de los últimos vestigios de la interfaz antigua que necesitaba ser integrado en el nuevo sistema.&lt;/p&gt;
&lt;h3 id=&quot;el-impacto-en-los-desarrolladores-de-plugins&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-impacto-en-los-desarrolladores-de-plugins&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El impacto en los desarrolladores de plugins&lt;/h3&gt;
&lt;p&gt;Para los desarrolladores de plugins que habían creado widgets personalizados, el cambio requirió adaptación. Los widgets creados con la clase &lt;code&gt;WP_Widget&lt;/code&gt; de WordPress siguen funcionando, ya que WordPress los envuelve automáticamente en un bloque “Widget heredado”. Sin embargo, para la mejor experiencia de usuario, los desarrolladores son alentados a crear bloques nativos de Gutenberg en lugar de widgets clásicos.&lt;/p&gt;
&lt;p&gt;Esto significa que si estás desarrollando nuevas funcionalidades para WordPress, deberías crear bloques en lugar de widgets. Los bloques ofrecen una experiencia de edición más rica, mejor integración con el editor de bloques y compatibilidad futura con la dirección de Full Site Editing de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;guía-paso-a-paso-para-añadir-widgets-en-wordpress-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guía-paso-a-paso-para-añadir-widgets-en-wordpress-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guía paso a paso para añadir widgets en WordPress 2026&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-identifica-tu-tipo-de-tema&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-identifica-tu-tipo-de-tema&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Identifica tu tipo de tema&lt;/h3&gt;
&lt;p&gt;Lo primero que necesitas hacer es determinar si estás usando un tema clásico o un tema de bloques. Esto determina completamente cómo gestionarás los widgets y las áreas de contenido de tu sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo verificar tu tipo de tema:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ve a Apariencia en tu panel de WordPress&lt;/li&gt;
&lt;li&gt;Si ves “Widgets” en el menú, tienes un tema clásico&lt;/li&gt;
&lt;li&gt;Si ves “Editor” pero no “Widgets”, tienes un tema de bloques&lt;/li&gt;
&lt;li&gt;Alternativamente, revisa el archivo &lt;code&gt;theme.json&lt;/code&gt; en la carpeta de tu tema: si existe, es probable que sea un tema de bloques&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-2-configurar-widgets-en-temas-clásicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-configurar-widgets-en-temas-clásicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Configurar widgets en temas clásicos&lt;/h3&gt;
&lt;p&gt;Si estás trabajando con un tema clásico, el proceso sigue siendo relativamente familiar, aunque ahora usa la interfaz de bloques:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navega a &lt;strong&gt;Apariencia &gt; Widgets&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Verás tus áreas de widgets definidas (Barra lateral, Pie de página, etc.)&lt;/li&gt;
&lt;li&gt;Haz clic en el botón &lt;strong&gt;+&lt;/strong&gt; (Insertar bloque) en cualquier área de widgets&lt;/li&gt;
&lt;li&gt;Busca y selecciona el bloque que deseas añadir&lt;/li&gt;
&lt;li&gt;Configura el bloque según tus necesidades&lt;/li&gt;
&lt;li&gt;Haz clic en &lt;strong&gt;Actualizar&lt;/strong&gt; para guardar los cambios&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Los bloques más comúnmente usados como widgets incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bloque de Párrafo&lt;/strong&gt;: Para texto simple, enlaces o anuncios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloque de Imagen&lt;/strong&gt;: Para banners, logotipos o imágenes promocionales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloque de Lista&lt;/strong&gt;: Para listas de navegación personalizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloque de HTML personalizado&lt;/strong&gt;: Para insertar código personalizado, scripts de terceros o widgets embebidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloque de Shortcode&lt;/strong&gt;: Para ejecutar shortcodes de plugins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloque de Iconos Sociales&lt;/strong&gt;: Para mostrar enlaces a redes sociales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloque de Navegación&lt;/strong&gt;: Para menús de navegación personalizados en la barra lateral&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-3-crear-áreas-tipo-widget-en-temas-de-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-crear-áreas-tipo-widget-en-temas-de-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Crear áreas tipo widget en temas de bloques&lt;/h3&gt;
&lt;p&gt;En los temas de bloques, no existen áreas de widgets como tal. En cambio, trabajas directamente con las plantillas y las partes de plantilla de tu sitio:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ve a &lt;strong&gt;Apariencia &gt; Editor&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Selecciona la plantilla que deseas editar (por ejemplo, “Entrada individual”, “Página”, “Archivo”)&lt;/li&gt;
&lt;li&gt;Para añadir una “barra lateral”, inserta un bloque de &lt;strong&gt;Columnas&lt;/strong&gt; y configúralo con una proporción como 70/30 o 66/33&lt;/li&gt;
&lt;li&gt;Coloca tu contenido principal en la columna más ancha&lt;/li&gt;
&lt;li&gt;Usa la columna más estrecha como tu “barra lateral”, añadiendo los bloques que necesites&lt;/li&gt;
&lt;li&gt;Para el pie de página, edita la parte de plantilla “Pie de página”&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;paso-4-optimizar-el-rendimiento-de-los-widgets&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-optimizar-el-rendimiento-de-los-widgets&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Optimizar el rendimiento de los widgets&lt;/h3&gt;
&lt;p&gt;Independientemente de si usas temas clásicos o de bloques, es importante considerar el rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Minimiza los scripts externos&lt;/strong&gt;: Cada widget que carga JavaScript o CSS externos puede ralentizar tu sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa carga diferida&lt;/strong&gt;: Para widgets con contenido pesado, considera implementar carga diferida&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audita regularmente&lt;/strong&gt;: Revisa periódicamente qué widgets realmente necesitas y elimina los que no aportan valor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cacheo&lt;/strong&gt;: Asegúrate de que tu solución de cacheo incluya las áreas de widgets&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;plugins-esenciales-para-la-gestión-de-widgets&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-esenciales-para-la-gestión-de-widgets&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins esenciales para la gestión de widgets&lt;/h2&gt;
&lt;h3 id=&quot;classic-widgets&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#classic-widgets&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Classic Widgets&lt;/h3&gt;
&lt;p&gt;El plugin &lt;strong&gt;Classic Widgets&lt;/strong&gt; es la opción oficial para restaurar la interfaz de widgets antigua. Desarrollado y mantenido por el equipo del núcleo de WordPress, este plugin es la forma más segura de volver a la experiencia clásica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Características principales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restaura completamente la interfaz de arrastrar y soltar&lt;/li&gt;
&lt;li&gt;No requiere configuración, simplemente instalar y activar&lt;/li&gt;
&lt;li&gt;Compatible con todos los widgets clásicos existentes&lt;/li&gt;
&lt;li&gt;Mantenido oficialmente por el equipo de WordPress&lt;/li&gt;
&lt;li&gt;Sin impacto en el rendimiento del frontend&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;widget-options&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#widget-options&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Widget Options&lt;/h3&gt;
&lt;p&gt;Este plugin te permite controlar la visibilidad de los widgets basándose en diferentes condiciones como tipo de página, rol del usuario, dispositivo y más. Es especialmente útil para sitios que necesitan mostrar diferentes contenidos en diferentes secciones.&lt;/p&gt;
&lt;h3 id=&quot;custom-sidebars&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#custom-sidebars&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Custom Sidebars&lt;/h3&gt;
&lt;p&gt;Si necesitas diferentes conjuntos de widgets para diferentes páginas o categorías, Custom Sidebars te permite crear múltiples áreas de widgets y asignarlas selectivamente.&lt;/p&gt;
&lt;h2 id=&quot;mejores-prácticas-para-widgets-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-para-widgets-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas para widgets en 2026&lt;/h2&gt;
&lt;h3 id=&quot;diseño-responsive&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diseño-responsive&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diseño responsive&lt;/h3&gt;
&lt;p&gt;En 2026, con más del 60% del tráfico web proveniente de dispositivos móviles, es crucial que tus widgets se vean bien en todas las pantallas. Los temas de bloques manejan esto de forma nativa a través del sistema de diseño responsive de WordPress, pero en los temas clásicos, necesitas asegurarte de que tus widgets se apilen correctamente en pantallas pequeñas.&lt;/p&gt;
&lt;h3 id=&quot;accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Accesibilidad&lt;/h3&gt;
&lt;p&gt;Los widgets deben ser accesibles para todos los usuarios, incluyendo aquellos que usan lectores de pantalla o navegación por teclado. Los bloques nativos de Gutenberg cumplen con los estándares de accesibilidad WCAG 2.1, pero los widgets personalizados o de terceros pueden necesitar verificación adicional.&lt;/p&gt;
&lt;h3 id=&quot;seo-y-widgets&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-y-widgets&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO y widgets&lt;/h3&gt;
&lt;p&gt;Los motores de búsqueda leen el contenido de los widgets como parte de tu página. Esto significa que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El contenido de los widgets debe ser relevante para el contenido de la página&lt;/li&gt;
&lt;li&gt;Los enlaces en los widgets son rastreados e indexados&lt;/li&gt;
&lt;li&gt;El contenido duplicado en widgets (que aparece en todas las páginas) tiene menos peso SEO&lt;/li&gt;
&lt;li&gt;Los widgets con demasiados enlaces pueden diluir el “link juice” de tu página&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad&lt;/h3&gt;
&lt;p&gt;Siempre instala widgets y plugins de fuentes confiables. Los widgets de terceros desconocidos pueden introducir vulnerabilidades de seguridad en tu sitio. Mantén todos los plugins de widgets actualizados y revisa regularmente los permisos que requieren.&lt;/p&gt;
&lt;h2 id=&quot;el-futuro-de-los-widgets-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-de-los-widgets-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro de los widgets en WordPress&lt;/h2&gt;
&lt;p&gt;Con la evolución continua de Full Site Editing, es probable que el concepto tradicional de “widget” desaparezca gradualmente. En su lugar, todo se convertirá en bloques que pueden ser colocados en cualquier parte del sitio. WordPress 7.x probablemente eliminará completamente la distinción entre “widgets” y “bloques”, ofreciendo una experiencia unificada donde cualquier bloque puede ser colocado en cualquier área del sitio.&lt;/p&gt;
&lt;p&gt;Para los desarrolladores y administradores de sitios, esto significa que es aconsejable comenzar a pensar en términos de bloques en lugar de widgets. Invertir tiempo en aprender el sistema de bloques de Gutenberg hoy te preparará mejor para el futuro de WordPress.&lt;/p&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;La era de los widgets tal como los conocíamos está evolucionando. Ya sea que trabajes con temas clásicos y la interfaz de widgets actualizada, o con temas de bloques y el Editor del Sitio, WordPress ofrece herramientas poderosas para personalizar tu sitio. La clave es entender qué enfoque funciona mejor para tu situación específica y aprovechar al máximo las herramientas disponibles.&lt;/p&gt;
&lt;p&gt;Para sitios existentes con temas clásicos, no hay urgencia de migrar inmediatamente. El plugin Classic Widgets proporciona una transición suave mientras te familiarizas con el nuevo sistema. Para nuevos proyectos, los temas de bloques ofrecen la mayor flexibilidad y están alineados con la dirección futura de WordPress.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; y &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>wordpress</category><category>basics</category><category domain="tag">widgets</category><category domain="tag">fse</category><category domain="tag">gutenberg</category><enclosure url="https://wppoland.com/images/og/jak-dodac-widzet-do-strony.jpg" type="image/jpeg"/></item><item><title>Como mostrar valores de campos personalizados en WordPress (guía 2026)</title><link>https://wppoland.com/es/how-to-display-custom-fields-wordpress/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-display-custom-fields-wordpress/</guid><description>La función get_post_meta() es fundamental. Aprenda a obtener, mostrar y gestionar datos de campos personalizados en su tema. Guia avanzada para desarrolladores.</description><pubDate>Sun, 29 Jul 2012 10:48:06 GMT</pubDate><content:encoded>&lt;h2 id=&quot;los-campos-personalizados-de-wordpress-la-base-del-contenido-estructurado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-campos-personalizados-de-wordpress-la-base-del-contenido-estructurado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los campos personalizados de WordPress: La base del contenido estructurado&lt;/h2&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional de WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Los campos personalizados (Custom Fields) son una de las características más poderosas de WordPress. Permiten almacenar datos adicionales asociados a cualquier entrada, página o tipo de contenido personalizado. Desde precios de productos hasta fechas de eventos, los campos personalizados extienden WordPress más alla de un simple blog.&lt;/p&gt;
&lt;h3 id=&quot;la-función-fundamental-get_post_meta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-función-fundamental-get_post_meta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La función fundamental: get_post_meta()&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;get_post_meta()&lt;/code&gt; es la puerta de entrada a todos los metadatos de una entrada. Acepta tres parametros:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$valor &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nombre_campo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $single);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$post_id&lt;/strong&gt;: El ID de la entrada (use &lt;code&gt;get_the_ID()&lt;/code&gt; dentro del Loop)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;‘nombre_campo’&lt;/strong&gt;: La clave del campo personalizado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$single&lt;/strong&gt;: &lt;code&gt;true&lt;/code&gt; retorna un valor único, &lt;code&gt;false&lt;/code&gt; retorna un array&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ejemplo-básico-mostrar-un-campo-personalizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-básico-mostrar-un-campo-personalizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo básico: Mostrar un campo personalizado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Dentro del Loop de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$precio &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio_producto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($precio) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div class=&quot;precio&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;strong&gt;Precio:&amp;#x3C;/strong&gt; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($precio) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos; EUR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;mostrar-multiples-campos-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mostrar-multiples-campos-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mostrar multiples campos personalizados&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Obtener todos los metadatos de una entrada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$todos_los_meta &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O obtener campos específicos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$campos &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Ubicacion&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;fecha_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Fecha del evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;capacidad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Capacidad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;dl class=&quot;detalles-evento&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($campos &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $label) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $valor &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), $key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($valor) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;dt&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($label) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/dt&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;dd&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($valor) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/dd&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/dl&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;seguridad-sanitizacion-y-escape&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-sanitizacion-y-escape&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad: Sanitizacion y escape&lt;/h2&gt;
&lt;p&gt;Nunca confie en los datos de campos personalizados sin sanitizar y escapar adecuadamente.&lt;/p&gt;
&lt;h3 id=&quot;escapar-en-la-salida&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escapar-en-la-salida&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escapar en la salida&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Para texto plano&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($valor);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Para URLs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($valor);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Para atributos HTML&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($valor);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Para contenido HTML (permite etiquetas seguras)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_kses_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($valor);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sanitizar-al-guardar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sanitizar-al-guardar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sanitizar al guardar&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Guardar campo de texto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;título&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sanitize_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;título&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Guardar URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;enlace&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;esc_url_raw&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;enlace&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Guardar número entero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cantidad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;absint&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cantidad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Guardar email&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;correo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sanitize_email&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;correo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;filtrar-entradas-por-campos-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#filtrar-entradas-por-campos-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Filtrar entradas por campos personalizados&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;WP_Query&lt;/code&gt; con &lt;code&gt;meta_query&lt;/code&gt; para filtrar entradas basandose en valores de campos personalizados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;meta_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;relation&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;fecha_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Y-m-d&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;compare&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&gt;=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;DATE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;     =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ciudad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Madrid&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;compare&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;meta_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;meta_key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;fecha_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ASC&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;consideraciones-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de rendimiento&lt;/h3&gt;
&lt;p&gt;Las consultas &lt;code&gt;meta_query&lt;/code&gt; generan JOINs SQL que pueden ser costosos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Para sitios pequeños&lt;/strong&gt; (&amp;#x3C;10.000 entradas): &lt;code&gt;meta_query&lt;/code&gt; funciona bien&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Para sitios medianos&lt;/strong&gt; (10.000-100.000): Agregue indices personalizados a &lt;code&gt;wp_postmeta&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Para sitios grandes&lt;/strong&gt; (100.000+): Considere tablas personalizadas o Elasticsearch&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Agregar indice para acelerar consultas meta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; INDEX&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; idx_postmeta_key_value&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_postmeta (meta_key, meta_value(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;guardar-campos-personalizados-desde-el-editor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guardar-campos-personalizados-desde-el-editor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guardar campos personalizados desde el editor&lt;/h2&gt;
&lt;h3 id=&quot;metabox-personalizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metabox-personalizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metabox personalizado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Registrar metabox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_meta_boxes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;detalles_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Detalles del Evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;renderizar_metabox_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;high&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Renderizar metabox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; renderizar_metabox_evento&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_nonce_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;guardar_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;evento_nonce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $precio &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $fecha &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fecha_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;label for=&quot;precio&quot;&gt;Precio (EUR):&amp;#x3C;/label&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;input type=&quot;number&quot; id=&quot;precio&quot; name=&quot;precio&quot; value=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($precio) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;label for=&quot;fecha_evento&quot;&gt;Fecha:&amp;#x3C;/label&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;input type=&quot;date&quot; id=&quot;fecha_evento&quot; name=&quot;fecha_evento&quot; value=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($fecha) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Guardar metabox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;evento_nonce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_verify_nonce&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;evento_nonce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;guardar_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;defined&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DOING_AUTOSAVE&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; DOING_AUTOSAVE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edit_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post_id)) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;absint&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fecha_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fecha_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sanitize_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fecha_evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;integración-con-acf-advanced-custom-fields&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-acf-advanced-custom-fields&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con ACF (Advanced Custom Fields)&lt;/h2&gt;
&lt;p&gt;ACF simplifica enormemente el trabajo con campos personalizados. En lugar de &lt;code&gt;get_post_meta()&lt;/code&gt;, puede usar las funciones de ACF:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ACF: obtener campo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$valor &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nombre_campo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ACF: mostrar campo directamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;nombre_campo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ACF: obtener campo de imagen (retorna array)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$imagen &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;imagen_destacada&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($imagen) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;img src=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($imagen[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;              alt=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($imagen[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;alt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;              width=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($imagen[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;width&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;              height=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($imagen[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;height&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;campos-personalizados-en-la-rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#campos-personalizados-en-la-rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Campos personalizados en la REST API&lt;/h2&gt;
&lt;p&gt;Exponga campos personalizados a través de la REST API para integraciones headless:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_api_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_rest_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;evento&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;get_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;update_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($value, $post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            update_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;precio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;absint&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($value));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;schema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;integer&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Precio del evento en EUR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Los campos personalizados son esenciales para cualquier proyecto WordPress que vaya más alla de un blog simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;get_post_meta()&lt;/code&gt;&lt;/strong&gt; como función base para obtener metadatos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Siempre escape la salida&lt;/strong&gt; con &lt;code&gt;esc_html()&lt;/code&gt;, &lt;code&gt;esc_url()&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sanitice al guardar&lt;/strong&gt; con &lt;code&gt;sanitize_text_field()&lt;/code&gt;, &lt;code&gt;absint()&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifique nonces&lt;/strong&gt; en formularios para seguridad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Considere el rendimiento&lt;/strong&gt; de &lt;code&gt;meta_query&lt;/code&gt; en sitios grandes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use ACF&lt;/strong&gt; para interfaces de edicion más ricas sin escribir metaboxes manualmente&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y el &lt;a href=&quot;/es/rediseno-wordpress/&quot;&gt;rediseño WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>development</category><category>snippets</category><category domain="tag">campos-personalizados</category><category domain="tag">php</category><category domain="tag">metadata-api</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>SEO PBN (Red Privada de Blogs) vs Link Building 2026</title><link>https://wppoland.com/es/seo-pbn-private-blog-network-vs-link-building-2026/</link><guid isPermaLink="true">https://wppoland.com/es/seo-pbn-private-blog-network-vs-link-building-2026/</guid><description>Construir tu propia PBN todavia tiene sentido? Como construir enlaces de forma segura en la era de los algoritmos de IA de Google.</description><pubDate>Sat, 28 Jul 2012 09:27:12 GMT</pubDate><content:encoded>&lt;h2 id=&quot;que-es-pbn-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-pbn-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es PBN link building&lt;/h2&gt;
&lt;p&gt;PBN link building es una táctica SEO donde alguien compra dominios expirados con autoridad de backlinks existente, los configura como sitios web de apariencia independiente y los usa para crear backlinks apuntando a un sitio objetivo - el “money site”. El objetivo es inflar artificialmente el perfil de enlaces del sitio objetivo para manipular las posiciones en los resultados de busqueda.&lt;/p&gt;
&lt;p&gt;La técnica se basa en una premisa simple: Google trata los backlinks como votos de confianza. Si controlas los sitios que votan, controlas tus rankings. En la práctica, los operadores de PBN compran de 10 a más de 100 dominios expirados, instalan WordPress con diferentes temas y proveedores de hosting, publican contenido de relleno e insertan enlaces a su sitio objetivo con anchor texts ricos en palabras clave.&lt;/p&gt;
&lt;p&gt;El PBN link building fue efectivo aproximadamente desde 2008 hasta 2020. En 2026, es una estrategia de alto riesgo que falla más a menudo de lo que funciona, como se detalla en las secciones siguientes.&lt;/p&gt;
&lt;h2 id=&quot;mejores-alternativas-a-pbn-para-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-alternativas-a-pbn-para-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores alternativas a PBN para SEO&lt;/h2&gt;
&lt;p&gt;Si tu objetivo es construir un perfil de backlinks fuerte sin arriesgar penalizaciones, estas estrategias superan consistentemente a los PBN tanto en durabilidad como en ROI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Digital PR&lt;/strong&gt;: Publica investigación original, encuestas o estudios de datos que periodistas y publicaciónes del sector quieran citar. Un artículo bien colocado en una publicación real genera más valor que 50 enlaces de PBN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guest posting en sitios reales&lt;/strong&gt;: Contribuye con contenido genuinamente útil a blogs establecidos en tu nicho. El enlace es un subproducto del valor, no el propósito.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activos enlazables&lt;/strong&gt;: Crea herramientas, calculadoras, infografias o guías completas que otros referencien naturalmente. Nuestra &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;guía de optimización de velocidad WordPress&lt;/a&gt; es un ejemplo — gana enlaces porque resuelve un problema real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Broken link building&lt;/strong&gt;: Encuentra enlaces externos rotos en sitios de autoridad, recrea el recurso faltante y sugiere tu reemplazo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HARO y solicitudes de periodistas&lt;/strong&gt;: Responde a consultas de periodistas con comentarios expertos. Estas colocaciones vienen con enlaces editoriales de dominios de noticias de alta autoridad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La comparación de ROI es clara. Los enlaces de PBN cuestan 50-200 USD cada uno, duran 6-18 meses antes de ser detectados y conllevan riesgo de penalización. Una sola colocación de Digital PR cuesta 500-2.000 USD pero genera un enlace permanente, a prueba de penalizaciones, de un dominio con tráfico real y confianza. Para el fundamento técnico de SEO que hace que el contenido merezca ser enlazado, consulta nuestra &lt;a href=&quot;/es/endurecimiento-seguridad-wordpress-gu%C3%ADa-completa-2026/&quot;&gt;guía de seguridad y rendimiento WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En los “buenos viejos tiempos” del SEO (alrededor de 2012), la estrategia era simple: comprar 10 dominios, configurar blogs simples de WordPress, agregar algo de texto y enlazar a tu sitio principal. Esto se llamaba &lt;strong&gt;PBN (Private Blog Network)&lt;/strong&gt; o Red Privada de Blogs.&lt;/p&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Hoy, en 2026, los algoritmos de Google (SpamBrain, Helpful Content Update) son implacables contra tales estructuras artificiales.&lt;/p&gt;
&lt;h2 id=&quot;por-que-las-pbn-son-riesgosas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-las-pbn-son-riesgosas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que las PBN son riesgosas?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Huellas digitales:&lt;/strong&gt; Google ve que estos 10 sitios tienen el mismo propietario (WHOIS), la misma IP del servidor, el mismo tema o incluso el mismo ID de Google Analytics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad del contenido:&lt;/strong&gt; Los “textos” generados por IA ahora son fácilmente reconocibles y marcados como spam.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces toxicos:&lt;/strong&gt; En lugar de ayudar, un enlace de una PBN debil puede danar tu dominio (deduccion de trust flow).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;que-hacer-en-lugar-de-pbn-link-building-moderno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hacer-en-lugar-de-pbn-link-building-moderno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hacer en lugar de PBN? (Link Building Moderno)&lt;/h2&gt;
&lt;p&gt;En lugar de gastar presupuesto manteniendo 10 sitios muertos, invierte en:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Digital PR:&lt;/strong&gt; Publicaciones en portales reales de la industria. Un enlace de un sitio de noticias importante vale más que 100 enlaces de PBN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guest Posting:&lt;/strong&gt; Escribe artículos valiosos en blogs de otros expertos de tu nicho.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activos Enlazables:&lt;/strong&gt; Crea algo que la gente QUIERA enlazar por si misma (por ejemplo, informe, herramienta gratuita, infografia, calculadora).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;la-evolucion-del-link-building-de-la-manipulación-a-la-creación-de-valor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-evolucion-del-link-building-de-la-manipulación-a-la-creación-de-valor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La evolucion del link building: de la manipulación a la creación de valor&lt;/h2&gt;
&lt;h3 id=&quot;era-1-directorios-web-2000-2008&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#era-1-directorios-web-2000-2008&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Era 1: Directorios web (2000-2008)&lt;/h3&gt;
&lt;p&gt;En los primeros dias del SEO, los directorios web eran la principal fuente de backlinks. Sitios como DMOZ y Yahoo Directory eran considerados fuentes de alta autoridad. Los SEOs simplemente enviaban sus sitios a cientos de directorios y esperaban resultados. Google eventualmente devaluo estos enlaces casí por completo.&lt;/p&gt;
&lt;h3 id=&quot;era-2-presell-pages-y-pbns-2008-2012&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#era-2-presell-pages-y-pbns-2008-2012&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Era 2: Presell Pages y PBNs (2008-2012)&lt;/h3&gt;
&lt;p&gt;La era dorada de las PBNs. Los especialistas en SEO compraban dominios expirados con autoridad, instalaban WordPress con contenido spineado y creaban redes masivas de enlaces. El costo era bajo y los resultados eran rápidos, pero la calidad era terrible.&lt;/p&gt;
&lt;h3 id=&quot;era-3-guest-posting-masivo-2012-2018&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#era-3-guest-posting-masivo-2012-2018&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Era 3: Guest Posting masivo (2012-2018)&lt;/h3&gt;
&lt;p&gt;Despues de las actualizaciones Panda y Penguin, el guest posting se convirtio en la nueva norma. Sin embargo, rápidamente degenero: agencias ofrecian “paquetes de guest posting” con artículos genericos en blogs de baja calidad. Google emitio advertencias explicitas sobre el guest posting manipulativo.&lt;/p&gt;
&lt;h3 id=&quot;era-4-digital-pr-y-contenido-de-valor-2018-presente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#era-4-digital-pr-y-contenido-de-valor-2018-presente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Era 4: Digital PR y contenido de valor (2018-presente)&lt;/h3&gt;
&lt;p&gt;El paradigma actual se basa en crear valor real. Los enlaces se ganan, no se construyen. Las estrategias incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Investigacion original&lt;/strong&gt;: Encuestas, estudios de caso, análisis de datos que los periodistas quieren citar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herramientas gratuitas&lt;/strong&gt;: Calculadoras, generadores, analizadores que otros sitios enlazan como recursos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido visual&lt;/strong&gt;: Infografias, visualizaciones de datos, mapas interactivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relaciones con medios&lt;/strong&gt;: Construir relaciones genuinas con periodistas y editores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HARO/Fuentes de expertos&lt;/strong&gt;: Responder a consultas de periodistas como fuente experta&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;metricas-que-importan-en-link-building-moderno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-que-importan-en-link-building-moderno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas que importan en link building moderno&lt;/h2&gt;
&lt;p&gt;No todos los enlaces son iguales. Estas son las metricas clave para evaluar la calidad de un backlink:&lt;/p&gt;
&lt;h3 id=&quot;domain-authority--domain-rating&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#domain-authority--domain-rating&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Domain Authority / Domain Rating&lt;/h3&gt;
&lt;p&gt;Un número de 0 a 100 que indica la autoridad general del dominio que enlaza. Busca dominios con DA/DR de 40+ para enlaces significativos.&lt;/p&gt;
&lt;h3 id=&quot;relevancia-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#relevancia-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Relevancia temática&lt;/h3&gt;
&lt;p&gt;Un enlace de un sitio sobre tu misma industria vale mucho más que un enlace de un sitio no relacionado. Google usa modelos semánticos para evaluar la relevancia temática del sitio que enlaza.&lt;/p&gt;
&lt;h3 id=&quot;tráfico-del-sitio-que-enlaza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tráfico-del-sitio-que-enlaza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tráfico del sitio que enlaza&lt;/h3&gt;
&lt;p&gt;Los sitios con tráfico real tienen más valor que los sitios fantasma. Verifica con herramientas como Ahrefs o SEMrush que el sitio tiene tráfico organico.&lt;/p&gt;
&lt;h3 id=&quot;posición-del-enlace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#posición-del-enlace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Posición del enlace&lt;/h3&gt;
&lt;p&gt;Un enlace dentro del contenido editorial (in-content) vale más que un enlace en el pie de página, la barra lateral o la página de socios. La posición contextual indica una recomendación editorial genuina.&lt;/p&gt;
&lt;h3 id=&quot;texto-ancla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#texto-ancla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Texto ancla&lt;/h3&gt;
&lt;p&gt;La diversidad de texto ancla es crucial. Un perfil natural de backlinks tiene una mezcla de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nombre de marca (40-50%)&lt;/li&gt;
&lt;li&gt;URL desnuda (15-20%)&lt;/li&gt;
&lt;li&gt;Generico (“haz clic aqui”, “aprende mas”) (15-20%)&lt;/li&gt;
&lt;li&gt;Palabra clave exacta (5-10%)&lt;/li&gt;
&lt;li&gt;Palabra clave parcial (10-15%)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;estrategia-práctica-de-link-building-para-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-práctica-de-link-building-para-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia práctica de link building para 2026&lt;/h2&gt;
&lt;h3 id=&quot;mes-1-2-fundamentos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-1-2-fundamentos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 1-2: Fundamentos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Audita tu perfil de backlinks actual&lt;/li&gt;
&lt;li&gt;Identifica y desautoriza enlaces toxicos&lt;/li&gt;
&lt;li&gt;Crea 2-3 piezas de contenido enlazable (investigación original, herramientas)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;mes-3-4-outreach&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-3-4-outreach&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 3-4: Outreach&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Identifica 50+ sitios objetivo relevantes a tu industria&lt;/li&gt;
&lt;li&gt;Construye relaciones con editores y periodistas&lt;/li&gt;
&lt;li&gt;Envia 2-3 pitches de guest post por semana&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;mes-5-6-escalamiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-5-6-escalamiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 5-6: Escalamiento&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Crea un sistema de Digital PR recurrente&lt;/li&gt;
&lt;li&gt;Registrate en plataformas de fuentes de expertos&lt;/li&gt;
&lt;li&gt;Lanza una herramienta gratuita o recurso enlazable&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;continuo-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#continuo-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Continuo: Monitoreo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Rastrea nuevos backlinks semanalmente&lt;/li&gt;
&lt;li&gt;Monitorea la velocidad de adquisicion de enlaces&lt;/li&gt;
&lt;li&gt;Compara tu perfil de backlinks con competidores&lt;/li&gt;
&lt;li&gt;Ajusta la estrategia basandote en resultados&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;cuando-tiene-sentido-una-pbn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-tiene-sentido-una-pbn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando tiene sentido una PBN?&lt;/h2&gt;
&lt;p&gt;Solo si es una &lt;strong&gt;PBN premium&lt;/strong&gt;. Es decir, un portal tematico completo con tráfico real, newsletter y comunidad. Pero entonces ya no es una “PBN”: es simplemente tu segundo negocio de medios.&lt;/p&gt;
&lt;p&gt;Las PBNs premium requieren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contenido original de alta calidad publicado regularmente&lt;/li&gt;
&lt;li&gt;Tráfico organico real (no solo tráfico de referencia)&lt;/li&gt;
&lt;li&gt;Una audiencia y comunidad genuinas&lt;/li&gt;
&lt;li&gt;Inversión significativa en contenido y mantenimiento&lt;/li&gt;
&lt;li&gt;Separacion total de infraestructura (hosting, IPs, registro)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si vas a invertir todo eso, mejor construye un negocio de medios real que genere ingresos propios además de los beneficios de SEO.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;El link building en 2026 no se trata de cantidad sino de calidad. Un solo enlace editorial de un sitio de noticias respetado vale más que cien enlaces de una red de blogs falsos. Invierte en crear valor real: contenido original, herramientas utiles, relaciones genuinas con medios. Los atajos de las PBNs no solo son riesgosos, son una perdida de recursos que podrian invertirse en estrategias sostenibles.&lt;/p&gt;
&lt;p&gt;Explora nuestros servicios de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; para construir un sitio web que atraiga enlaces naturalmente.&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category domain="tag">link building</category><category domain="tag">pbn</category><category domain="tag">white hat</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Como mostrar la categoría actual y padre de una entrada (fragmento WordPress)</title><link>https://wppoland.com/es/display-current-and-parent-category/</link><guid isPermaLink="true">https://wppoland.com/es/display-current-and-parent-category/</guid><description>Necesitas mostrar la jerarquía de categorías en tu tema? Aprende como obtener la categoría actual y su padre usando get_the_category() y cat_is_ancestor_of().</description><pubDate>Thu, 26 Jul 2012 11:46:11 GMT</pubDate><content:encoded>&lt;p&gt;Cuando construyes temas WordPress personalizados, a menudo necesitas mostrar no solo la categoría actual, sino también su categoría padre (para navegación de migas de pan o menús jerarquicos).&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.
WordPress almacena las categorías en una estructura jerarquica, pero &lt;code&gt;get_the_category()&lt;/code&gt; devuelve un array plano. Aqui te mostramos como extraer la jerarquía.&lt;/p&gt;
&lt;h2 id=&quot;método-get_the_category--comprobacion-de-padre&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-get_the_category--comprobacion-de-padre&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método: get_the_category() + comprobacion de padre&lt;/h2&gt;
&lt;p&gt;Aqui tienes una función lista para pegar en &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_category_hierarchy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $categories ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Obtener la primera categoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $category &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $categories[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Si la categoria tiene padre&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;parent ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $parent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;parent );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_category_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $parent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;term_id ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $parent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/a&gt; &amp;#x26;raquo; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Categoria actual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_category_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;term_id ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/a&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $output;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;uso-en-la-plantilla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-en-la-plantilla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso en la plantilla&lt;/h2&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$hierarchy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_category_hierarchy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $hierarchy ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div class=&quot;category-breadcrumb&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $hierarchy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto mostrara algo como: &lt;strong&gt;Tecnologia &gt;&gt; WordPress&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;alternativa-rastro-completo-de-migas-de-pan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativa-rastro-completo-de-migas-de-pan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativa: Rastro completo de migas de pan&lt;/h2&gt;
&lt;p&gt;Si necesitas la jerarquía completa (abuelo, padre, hijo), usa este enfoque recursivo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_full_category_trail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $category_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $trail &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $category_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $category &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $category_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        array_unshift&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $trail, $category );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $category_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;parent;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $trail &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cat ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_category_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;term_id ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/a&gt; &amp;#x26;raquo; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; rtrim&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; &amp;#x26;raquo; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;seleccion-de-la-categoría-primaria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seleccion-de-la-categoría-primaria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seleccion de la categoría primaria&lt;/h2&gt;
&lt;p&gt;Cuando una entrada tiene multiples categorías, necesitas determinar cual es la “primaria”. Varios plugins SEO ofrecen esta funcionalidad:&lt;/p&gt;
&lt;h3 id=&quot;con-yoast-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#con-yoast-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Con Yoast SEO&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_primary_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Comprobar si Yoast tiene una categoria primaria definida&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;class_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WPSEO_Primary_Term&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $primary_term &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WPSEO_Primary_Term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $primary_cat_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $primary_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_primary_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $primary_cat_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $primary_cat_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Fallback: primera categoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $categories ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $categories[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;con-rankmath&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#con-rankmath&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Con RankMath&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_rankmath_primary_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // RankMath almacena la categoria primaria en post meta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $primary_cat_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rank_math_primary_category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $primary_cat_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $primary_cat_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Fallback&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $categories ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $categories[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;implementación-con-schemaorg-breadcrumblist&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-con-schemaorg-breadcrumblist&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación con Schema.org BreadcrumbList&lt;/h2&gt;
&lt;p&gt;Para SEO, es importante marcar las migas de pan con datos estructurados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_schema_breadcrumbs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $categories ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $category &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $categories[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $trail &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Construir rastro de categorias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $current &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $category;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $current ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        array_unshift&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $trail, $current );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $current &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $current&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;parent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $current&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;parent ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Generar JSON-LD&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $items &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $position &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Inicio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $items[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ListItem&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;position&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Inicio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Categorias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $trail &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cat ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $items[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ListItem&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;position&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_category_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;term_id )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Entrada actual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $items[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ListItem&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;position&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $position,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@context&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://schema.org&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;BreadcrumbList&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;itemListElement&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $items&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;script type=&quot;application/ld+json&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_json_encode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $schema ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/script&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_schema_breadcrumbs&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;estilizacion-css-de-las-migas-de-pan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estilizacion-css-de-las-migas-de-pan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estilizacion CSS de las migas de pan&lt;/h2&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.category-breadcrumb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;flex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    align-items&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;center&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    gap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.875&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#6b7280&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    margin-bottom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.category-breadcrumb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#3b82f6&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    text-decoration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    transition&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ease&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.category-breadcrumb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#1d4ed8&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    text-decoration&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;underline&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Separador personalizado */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.category-breadcrumb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.separator&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#d1d5db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Responsivo */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;max-width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;640&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    .category-breadcrumb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        font-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        flex-wrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;wrap&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;migas-de-pan-para-taxonomías-personalizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migas-de-pan-para-taxonomías-personalizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migas de pan para taxonomías personalizadas&lt;/h2&gt;
&lt;p&gt;La misma lógica se aplica a taxonomías personalizadas. Solo necesitas reemplazar las funciones de categoría con las equivalentes de taxonomía:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_custom_taxonomy_trail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $taxonomy, $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $terms &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_terms&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id, $taxonomy );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $terms &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $terms ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Tomar el primer termino&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $term &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $terms[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $trail &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Construir jerarquia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $current &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $term;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $current ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        array_unshift&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $trail, $current );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $current &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $current&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;parent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $current&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;parent, $taxonomy ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $trail &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $t ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $link &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_term_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $t, $taxonomy );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $link ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $link ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $t&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/a&gt; &amp;#x26;raquo; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; rtrim&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; &amp;#x26;raquo; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;rendimiento-y-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-y-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento y cache&lt;/h2&gt;
&lt;p&gt;Para sitios con alto tráfico, considera almacenar en cache el resultado de las migas de pan:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_cached_breadcrumbs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;breadcrumbs_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $output ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $output &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_full_category_trail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;term_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $output, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;DAY_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $output;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Invalidar cache cuando se actualiza la entrada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    delete_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;breadcrumbs_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;integración-con-block-editor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-block-editor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con Block Editor&lt;/h2&gt;
&lt;p&gt;En temas de bloques, puedes crear un bloque personalizado para migas de pan de categorías:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;register_block_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/category-breadcrumbs&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;render_callback&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $hierarchy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_category_hierarchy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $hierarchy ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; sprintf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;&amp;#x3C;nav class=&quot;wp-block-wppoland-breadcrumbs&quot; aria-label=&quot;Migas de pan&quot;&gt;%s&amp;#x3C;/nav&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $hierarchy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Esta solución es limpia, eficiente y maneja correctamente jerarquías de categorías de multiples niveles. Los puntos clave son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa &lt;code&gt;get_the_category()&lt;/code&gt; para obtener las categorías de la entrada&lt;/li&gt;
&lt;li&gt;Recorre la propiedad &lt;code&gt;parent&lt;/code&gt; para construir la jerarquía&lt;/li&gt;
&lt;li&gt;Implementa Schema.org BreadcrumbList para SEO&lt;/li&gt;
&lt;li&gt;Considera la cache para sitios de alto tráfico&lt;/li&gt;
&lt;li&gt;Soporta tanto categorías nativas como taxonomías personalizadas&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>php</category><category domain="tag">categories</category><category domain="tag">taxonomy</category><category domain="tag">snippets</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Migración de URLs en la base de datos WordPress: Guia completa 2026</title><link>https://wppoland.com/es/how-to-update-urls-in-the-wordpress-database-when-the-site-is-moved-to-a-new-domain/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-update-urls-in-the-wordpress-database-when-the-site-is-moved-to-a-new-domain/</guid><description>Guia completa para actualizar URLs de forma segura al migrar WordPress. Aprenda sobre el manejo de datos serializados, comandos WP-CLI, métodos con plugins y evite romper su sitio con técnicas adecuadas de buscar-reemplazar.</description><pubDate>Sun, 15 Jul 2012 11:46:11 GMT</pubDate><content:encoded>&lt;p&gt;Mover un sitio WordPress (ej. de &lt;code&gt;dev.site.com&lt;/code&gt; a &lt;code&gt;site.com&lt;/code&gt;) parece simple: solo ejecute un “Buscar y Reemplazar” en la base de datos, verdad?&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración de sitios web a Astro y Next.js&lt;/a&gt; en WPPoland.
&lt;strong&gt;INCORRECTO.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si intenta ejecutar una consulta SQL cruda como:
&lt;code&gt;UPDATE wp_options SET option_value = replace(option_value, &apos;old.com&apos;, &apos;new.com&apos;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;…rompera su sitio. Especificamente, perdera Widgets, Opciones de Tema y algunas configuraciónes de Plugins.&lt;/p&gt;
&lt;h2 id=&quot;el-error-comun-buscar-y-reemplazar-simple&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-error-comun-buscar-y-reemplazar-simple&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El error comun: Buscar y reemplazar simple&lt;/h2&gt;
&lt;p&gt;Muchos desarrolladores (e incluso algunos proveedores de hosting) sugieren usar una simple función SQL &lt;code&gt;REPLACE()&lt;/code&gt; para actualizar URLs. Este enfoque parece lógico pero es fundamentalmente defectuoso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La tentacion:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;-- Esto parece seguro, pero NO lo es&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;UPDATE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wp_options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; option_value &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; REPLACE&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(option_value, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Que sucede:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Algunas URLs se actualizan correctamente&lt;/li&gt;
&lt;li&gt;Los datos serializados se corrompen&lt;/li&gt;
&lt;li&gt;Los widgets desaparecen&lt;/li&gt;
&lt;li&gt;Las opciones de tema se rompen&lt;/li&gt;
&lt;li&gt;Las configuraciónes de plugins se pierden&lt;/li&gt;
&lt;li&gt;El sitio queda parcialmente roto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Por que falla:&lt;/strong&gt;
WordPress no almacena datos como texto plano. Gran parte se almacena como &lt;strong&gt;datos PHP serializados&lt;/strong&gt;, que requieren manejo especial.&lt;/p&gt;
&lt;h2 id=&quot;entendiendo-los-datos-serializados-el-problema-central&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-los-datos-serializados-el-problema-central&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo los datos serializados: El problema central&lt;/h2&gt;
&lt;h3 id=&quot;que-es-la-serializacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-la-serializacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es la serializacion?&lt;/h3&gt;
&lt;p&gt;WordPress almacena datos complejos (arrays, objetos) en la base de datos como &lt;strong&gt;cadenas serializadas&lt;/strong&gt;. La serializacion convierte estructuras de datos PHP en cadenas que pueden almacenarse en la base de datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de datos serializados:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Array PHP original&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;home&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;siteurl&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;admin_email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;admin@old.com&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cadena serializada (almacenada en la base de datos)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;home&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;17&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://old.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;siteurl&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;17&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://old.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;admin_email&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;admin@old.com&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;desglose-de-la-cadena-serializada&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desglose-de-la-cadena-serializada&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desglose de la cadena serializada&lt;/h3&gt;
&lt;p&gt;Decodifiquemos &lt;code&gt;a:3:{s:4:&quot;home&quot;;s:17:&quot;https://old.com&quot;;...}&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a:3&lt;/code&gt; = array con 3 elementos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s:4:&quot;home&quot;&lt;/code&gt; = cadena, 4 caracteres, valor “home”&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s:17:&quot;https://old.com&quot;&lt;/code&gt; = cadena, 17 caracteres, valor “&lt;a href=&quot;https://old.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://old.com&lt;/a&gt;”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;La parte crítica:&lt;/strong&gt;
El número &lt;code&gt;17&lt;/code&gt; representa el &lt;strong&gt;conteo exacto de caracteres&lt;/strong&gt; de la cadena &lt;code&gt;&quot;https://old.com&quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;que-ocurre-con-un-reemplazo-simple&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-ocurre-con-un-reemplazo-simple&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que ocurre con un reemplazo simple?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Original:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;s:17:&quot;https://old.com&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Despues del reemplazo simple (old.com a new-domain.com):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;s:17:&quot;https://new-domain.com&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;El problema:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La longitud de la cadena cambio de 17 a 23 caracteres&lt;/li&gt;
&lt;li&gt;La serializacion aun dice &lt;code&gt;s:17&lt;/code&gt; (espera 17 caracteres)&lt;/li&gt;
&lt;li&gt;PHP intenta leer 17 caracteres: &lt;code&gt;&quot;https://new-domain&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Falta la parte &lt;code&gt;.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El array completo se vuelve invalido&lt;/li&gt;
&lt;li&gt;Los datos se corrompen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;la-solución-herramientas-conscientes-de-serializacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-herramientas-conscientes-de-serializacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La solución: Herramientas conscientes de serializacion&lt;/h2&gt;
&lt;p&gt;Necesita una herramienta que:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deserialice&lt;/strong&gt; los datos (convierta la cadena de vuelta a un array PHP)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reemplace&lt;/strong&gt; el texto dentro del array&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recalcule&lt;/strong&gt; los conteos de caracteres&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reserialice&lt;/strong&gt; los datos (convierta de vuelta a cadena)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualice&lt;/strong&gt; la base de datos&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;método-1-wp-cli-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-wp-cli-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: WP-CLI (recomendado)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;La forma profesional:&lt;/strong&gt;
Si tiene acceso SSH, WP-CLI es la mejor herramienta para el trabajo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Uso básico:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Opciones avanzadas:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Prueba en seco (ver que cambiaria)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Solo tablas específicas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp_postmeta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Omitir columnas específicas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --skip-columns=guid&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Exportar cambios a archivo SQL primero&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --export=changes.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Por que WP-CLI es la mejor opción:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maneja la serializacion correctamente&lt;/li&gt;
&lt;li&gt;Rápido y eficiente&lt;/li&gt;
&lt;li&gt;Puede previsualizar cambios (dry-run)&lt;/li&gt;
&lt;li&gt;Control por linea de comandos&lt;/li&gt;
&lt;li&gt;Scriptable y automatizable&lt;/li&gt;
&lt;li&gt;Sin sobrecarga de plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;método-2-plugin-better-search-replace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-plugin-better-search-replace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Plugin Better Search Replace&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Para usuarios sin linea de comandos:&lt;/strong&gt;
Si no tiene acceso SSH, use el plugin Better Search Replace de WP Engine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Uso:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vaya a &lt;strong&gt;Herramientas &gt; Better Search Replace&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Ingrese URL antigua: &lt;code&gt;https://old.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ingrese URL nueva: &lt;code&gt;https://new.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seleccione tablas (o marque “Seleccionar todas”)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importante:&lt;/strong&gt; Marque “Ejecutar como prueba en seco?” primero&lt;/li&gt;
&lt;li&gt;Haga clic en “Ejecutar buscar/reemplazar”&lt;/li&gt;
&lt;li&gt;Revise los resultados&lt;/li&gt;
&lt;li&gt;Desmarque “Ejecutar como prueba en seco?”&lt;/li&gt;
&lt;li&gt;Haga clic en “Ejecutar buscar/reemplazar” nuevamente para ejecutar&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lista-de-verificación-de-migración-completa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-de-migración-completa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación de migración completa&lt;/h2&gt;
&lt;h3 id=&quot;antes-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#antes-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Antes de la migración&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Hacer backup de todo:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Backup de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Backup de archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; site-backup.tar.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /path/to/wordpress&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Probar en staging:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nunca pruebe en producción&lt;/li&gt;
&lt;li&gt;Use entorno de staging&lt;/li&gt;
&lt;li&gt;Verifique toda la funcionalidad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;durante-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#durante-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Durante la migración&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Actualizar URLs de base de datos:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Usando WP-CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Actualizar wp-config.php:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_HOME&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WP_SITEURL&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https://new.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;despues-de-la-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#despues-de-la-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Despues de la migración&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Verificar URLs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verificar página principal&lt;/li&gt;
&lt;li&gt;Probar enlaces internos&lt;/li&gt;
&lt;li&gt;Verificar que las imágenes cargan&lt;/li&gt;
&lt;li&gt;Verificar area de administración&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Actualizar Search Console:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agregar nueva propiedad&lt;/li&gt;
&lt;li&gt;Enviar sitemap&lt;/li&gt;
&lt;li&gt;Solicitar indexacion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Limpiar caches:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Limpiar todos los transients&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Optimizar tablas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; optimize&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;escenarios-comunes-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenarios-comunes-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenarios comunes de migración&lt;/h2&gt;
&lt;h3 id=&quot;staging-a-producción&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#staging-a-producción&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Staging a producción&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;staging.site.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;site.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;http-a-https&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#http-a-https&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;HTTP a HTTPS&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;http://site.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://site.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;cambio-de-dominio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cambio-de-dominio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cambio de dominio&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;old-domain.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;new-domain.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resolución-de-problemas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resolución-de-problemas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resolución de problemas&lt;/h2&gt;
&lt;h3 id=&quot;los-widgets-desaparecieron&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-widgets-desaparecieron&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los widgets desaparecieron&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Causa:&lt;/strong&gt; Datos serializados corrompidos
&lt;strong&gt;Solución:&lt;/strong&gt; Restaure desde su backup y use una herramienta consciente de serializacion.&lt;/p&gt;
&lt;h3 id=&quot;opciones-de-tema-se-restablecieron&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opciones-de-tema-se-restablecieron&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opciones de tema se restablecieron&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Causa:&lt;/strong&gt; Mods de tema corrompidos
&lt;strong&gt;Solución:&lt;/strong&gt; Restaure desde backup si esta corrupto.&lt;/p&gt;
&lt;h3 id=&quot;imágenes-no-cargan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#imágenes-no-cargan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Imágenes no cargan&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Causa:&lt;/strong&gt; URLs de imágenes no actualizadas
&lt;strong&gt;Solución:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://old.com/wp-content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://new.com/wp-content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mejores-prácticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Siempre haga backup primero&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use prueba en seco primero&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualice multiples patrones&lt;/strong&gt; (HTTP y HTTPS, con y sin www)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifique despues de la migración&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualice archivos de configuración&lt;/strong&gt; (wp-config.php, .htaccess)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Conclusion clave:&lt;/strong&gt; WordPress usa datos serializados extensivamente. El buscar y reemplazar simple rompe estos datos. Siempre use herramientas que entiendan la serializacion. El comando &lt;code&gt;search-replace&lt;/code&gt; de WP-CLI es el estándar de oro: es rápido, seguro y maneja todos los casos extremos correctamente.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/migracion-nextjs-astro/&quot;&gt;migración a Astro y Next.js&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>hosting</category><category>database</category><category domain="tag">migración</category><category domain="tag">sql</category><category domain="tag">datos-serializados</category><category domain="tag">wp-cli</category><category domain="tag">cambio-dominio</category><category domain="tag">https</category><enclosure url="https://wppoland.com/images/og/how-to-update-urls-in-the-wordpress-database-when-the-site-is-moved-to-a-new-domain.jpg" type="image/jpeg"/></item><item><title>Como extraer el primer enlace del contenido de una entrada (fragmento PHP)</title><link>https://wppoland.com/es/extract-first-link-from-post-content/</link><guid isPermaLink="true">https://wppoland.com/es/extract-first-link-from-post-content/</guid><description>Necesitas obtener la URL de la primera imagen o enlace en un artículo? Usa Expresiones Regulares (Regex) o DOMDocument. Código para desarrolladores.</description><pubDate>Sat, 07 Jul 2012 11:46:11 GMT</pubDate><content:encoded>&lt;p&gt;A veces construimos temas tipo “Agregador de Noticias”, donde una entrada no tiene su propio contenido, sino que solo enlaza a un artículo externo. O queremos que la primera imagen del contenido se convierta automáticamente en la “Imagen Destacada” si el editor olvida establecerla.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.
En ambos casos, necesitamos “escanear” el contenido de la entrada (&lt;code&gt;the_content&lt;/code&gt;) y extraer la primera etiqueta &lt;code&gt;&amp;#x3C;a&gt;&lt;/code&gt; o &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt; de el.&lt;/p&gt;
&lt;h2 id=&quot;método-1-clase-domdocument-recomendado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-clase-domdocument-recomendado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Clase DOMDocument (recomendado)&lt;/h2&gt;
&lt;p&gt;Muchos desarrolladores usan Expresiones Regulares (Regex) para esto, pero analizar HTML con Regex es una &lt;a href=&quot;https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;mala practica&lt;/a&gt;. Es mejor usar la clase integrada &lt;code&gt;DOMDocument&lt;/code&gt; de PHP.&lt;/p&gt;
&lt;p&gt;Aqui tienes una función lista para pegar en &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Si el contenido esta vacio, devolver false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; DOMDocument&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Suprimir errores de HTML5 (DOMDocument es antiguo y a veces se queja de &amp;#x3C;section&gt; etc.)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    libxml_use_internal_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Cargar HTML (con hack UTF-8)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;loadHTML&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;mb_convert_encoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTML-ENTITIES&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;UTF-8&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Devolver href del primer enlace&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;href&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;uso-en-el-loop&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-en-el-loop&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso en el Loop&lt;/h2&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$link &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $link ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;   echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($link) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot; class=&quot;read-more-external&quot;&gt;Leer original&amp;#x3C;/a&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta solución es solida, segura y maneja errores en la estructura HTML mejor que cualquier Regex.&lt;/p&gt;
&lt;h2 id=&quot;método-2-extraer-la-primera-imagen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-extraer-la-primera-imagen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Extraer la primera imagen&lt;/h2&gt;
&lt;p&gt;El mismo enfoque funciona para imágenes. Esto es útil para temas de “lista de posts” donde necesitas una miniatura automática:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_image_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; DOMDocument&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    libxml_use_internal_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;loadHTML&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;mb_convert_encoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTML-ENTITIES&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;UTF-8&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $images &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;img&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $images&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $images&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;uso-como-imagen-destacada-automática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-como-imagen-destacada-automática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso como imagen destacada automática&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Establecer automáticamente la primera imagen del contenido como imagen destacada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * si no se ha establecido una manualmente.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Evitar autoguardados y revisiones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_is_post_revision&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_is_post_autosave&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Si ya tiene imagen destacada, no hacer nada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $image_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_image_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_content );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $image_url ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Buscar el attachment por URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $attachment_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; attachment_url_to_postid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $image_url );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $attachment_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            set_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id, $attachment_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;método-3-regex-solo-como-referencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-regex-solo-como-referencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Regex (solo como referencia)&lt;/h2&gt;
&lt;p&gt;Aunque no se recomienda, aquí esta el enfoque con Regex para comparación:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url_regex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Patron para encontrar la primera etiqueta &amp;#x3C;a&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $pattern &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&amp;#x3C;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-light-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold&quot;&gt;\s&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;[^&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;href=[&quot;\&apos;]([^&quot;\&apos;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;)[&quot;\&apos;][^&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;/i&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;preg_match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $pattern, $content, $matches ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $matches[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Por que no usar Regex:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Falla con HTML malformado&lt;/li&gt;
&lt;li&gt;No maneja correctamente atributos en diferente orden&lt;/li&gt;
&lt;li&gt;Problemás con HTML anidado&lt;/li&gt;
&lt;li&gt;Dificil de mantener y depurar&lt;/li&gt;
&lt;li&gt;No entiende la estructura del DOM&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;versión-avanzada-extraer-multiples-datos-del-primer-enlace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#versión-avanzada-extraer-multiples-datos-del-primer-enlace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Versión avanzada: Extraer multiples datos del primer enlace&lt;/h2&gt;
&lt;p&gt;A veces necesitas más que solo la URL. Aqui hay una versión que extrae toda la información del enlace:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; DOMDocument&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    libxml_use_internal_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;loadHTML&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;mb_convert_encoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTML-ENTITIES&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;UTF-8&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;length &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $first_link &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;href&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;   =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;textContent,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;target&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;target&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;rel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;uso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso:&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$link_data &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $link_data ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    printf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;&amp;#x3C;a href=&quot;%s&quot; title=&quot;%s&quot; target=&quot;%s&quot; rel=&quot;noopener noreferrer&quot;&gt;%s&amp;#x3C;/a&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $link_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $link_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        esc_attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $link_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;target&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_blank&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $link_data[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;filtrar-enlaces-por-tipo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#filtrar-enlaces-por-tipo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Filtrar enlaces por tipo&lt;/h2&gt;
&lt;p&gt;Para temas más complejos, puedes necesitar filtrar enlaces por tipo (internos vs externos):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_external_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; DOMDocument&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    libxml_use_internal_errors&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;loadHTML&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;mb_convert_encoding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;HTML-ENTITIES&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;UTF-8&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $doc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $site_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $link ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $href &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;href&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Saltar enlaces vacios, anclas y enlaces internos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $href ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $href, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;#&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            continue&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Comprobar si es externo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $href, $site_url ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $href, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;http&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $href;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;consideraciones-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;cache-de-resultados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cache-de-resultados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cache de resultados&lt;/h3&gt;
&lt;p&gt;Si extraes enlaces frecuentemente, almacena en cache los resultados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cached_first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;first_link_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_content );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;none&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Almacenar &apos;none&apos; para evitar consultas repetidas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $result, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;none&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Invalidar cache al actualizar la entrada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;save_post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    delete_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;first_link_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;uso-con-object-cache&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-con-object-cache&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso con Object Cache&lt;/h3&gt;
&lt;p&gt;Para sitios con Redis o Memcached:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_cached_first_link_object_cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cache_key &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;first_link_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_cache_get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $post &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_content ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_cache_set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cache_key, $result, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $result &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;seguridad-validación-de-urls&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seguridad-validación-de-urls&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Seguridad: Validación de URLs&lt;/h2&gt;
&lt;p&gt;Siempre válida las URLs extraidas antes de usarlas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_safe_first_link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $content );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $url ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Validar que es una URL valida&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; filter_var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $url, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;FILTER_VALIDATE_URL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Solo permitir protocolos seguros&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $allowed_protocols &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;http&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;https&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $parsed &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_parse_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $url );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $parsed[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;scheme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; in_array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $parsed[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;scheme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], $allowed_protocols ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $url );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;integración-con-formatos-de-entrada-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-con-formatos-de-entrada-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración con formatos de entrada de WordPress&lt;/h2&gt;
&lt;p&gt;WordPress tiene formatos de entrada como “Link” que se benefician de esta funcionalidad:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En functions.php - Soporte para formatos de entrada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post-formats&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;video&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;quote&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En el template - Obtener URL para formato &apos;link&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_post_format&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $link &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $link ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $link ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot; class=&quot;post-link-format&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/a&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/a&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;aplicación-práctica-tema-de-agregador-de-noticias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aplicación-práctica-tema-de-agregador-de-noticias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aplicación práctica: Tema de agregador de noticias&lt;/h2&gt;
&lt;p&gt;Un caso de uso completo para un tema estilo “agregador de noticias”:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En archive.php o index.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) : &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $external_link &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_first_link_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $target_url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $external_link &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $is_external &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;bool&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) $external_link;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;news-item &amp;#x3C;?php echo &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$is_external&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ? &apos;external&apos; : &apos;internal&apos;; ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_url( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$target_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;               &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $is_external &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;medium&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo esc_url( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$target_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;               &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $is_external &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $is_external ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;external-icon&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; aria&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Enlace externo&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#8599;&amp;#x3C;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;meta&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $is_external ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;source&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_parse_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $external_link, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;PHP_URL_HOST&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo get_the_date(&apos;c&apos;); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;La extraccion de enlaces del contenido es una técnica fundamental para desarrolladores WordPress. DOMDocument es siempre la opción correcta sobre Regex para analizar HTML. Recuerda siempre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usar &lt;code&gt;DOMDocument&lt;/code&gt; en lugar de Regex para analizar HTML&lt;/li&gt;
&lt;li&gt;Manejar correctamente la codificacion UTF-8&lt;/li&gt;
&lt;li&gt;Validar y sanitizar las URLs extraidas&lt;/li&gt;
&lt;li&gt;Almacenar en cache los resultados para rendimiento&lt;/li&gt;
&lt;li&gt;Considerar la seguridad al mostrar enlaces externos&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>php</category><category domain="tag">regex</category><category domain="tag">domdocument</category><category domain="tag">snippets</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Dominando la personalización del admin WordPress: Guia del desarrollador 2026</title><link>https://wppoland.com/es/mastering-wordpress-admin-customization/</link><guid isPermaLink="true">https://wppoland.com/es/mastering-wordpress-admin-customization/</guid><description>Deja de entregar dashboards genericos. Aprende a personalizar el Menú Admin, Toolbar y Widgets del Dashboard de WordPress para crear una experiencia white-label para tus clientes.</description><pubDate>Fri, 01 Jun 2012 11:46:11 GMT</pubDate><content:encoded>&lt;h2 id=&quot;por-que-personalizar-el-admin-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-personalizar-el-admin-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que personalizar el admin de WordPress&lt;/h2&gt;
&lt;p&gt;Entregar un panel WordPress generico a tus clientes es como entregar las llaves de un avion a alguien que solo necesita conducir un coche. El admin de WordPress esta disenado para desarrolladores, no para usuarios finales. Los clientes no necesitan ver “Herramientas”, “Ajustes” ni “Plugins” ya que esas opciones solo generan confusion, errores accidentales y tickets de soporte innecesarios.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;La personalización del admin no es solo una cuestion estetica; es una estrategia de negocio que reduce los costos de soporte, mejora la satisfaccion del clientes y diferencia tu agencia de la competencia. Un dashboard personalizado con la marca del clientes transmite profesionalismo y atención al detalle.&lt;/p&gt;
&lt;h2 id=&quot;1-limpiando-el-menú-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-limpiando-el-menú-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Limpiando el menú admin&lt;/h2&gt;
&lt;p&gt;El primer paso para crear una experiencia white-label es eliminar los elementos del menú que tus clientes no necesitan. WordPress proporciona la función &lt;code&gt;remove_menu_page()&lt;/code&gt; para esto, pero es importante entender sus limitaciones.&lt;/p&gt;
&lt;h3 id=&quot;eliminando-menús-innecesarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminando-menús-innecesarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminando menús innecesarios&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_clean_admin_menu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Solo para usuarios que NO son administradores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; current_user_can&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;manage_options&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tools.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );           &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Herramientas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;options-general.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ajustes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;edit-comments.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Comentarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;plugins.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );          &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        remove_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;themes.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );           &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Apariencia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_clean_admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;advertencia-de-seguridad-importante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#advertencia-de-seguridad-importante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Advertencia de seguridad importante&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;remove_menu_page()&lt;/code&gt; solo oculta los enlaces del menú. Los usuarios todavia pueden acceder a las URLs directamente si las conocen. Para seguridad real, siempre combina la ocultacion del menú con verificaciónes de capacidades apropiadas. Nunca confies únicamente en la ocultacion visual para el control de acceso.&lt;/p&gt;
&lt;h3 id=&quot;submenus&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#submenus&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Submenus&lt;/h3&gt;
&lt;p&gt;Para eliminar submenus específicos sin eliminar el menú padre completo, usa &lt;code&gt;remove_submenu_page()&lt;/code&gt;. Esto te permite mantener “Publicaciones” visible pero ocultar “Categorías” o “Etiquetas” para ciertos roles de usuario.&lt;/p&gt;
&lt;h2 id=&quot;2-creando-páginas-admin-personalizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-creando-páginas-admin-personalizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Creando páginas admin personalizadas&lt;/h2&gt;
&lt;p&gt;Una de las formás más poderosas de mejorar la experiencia del clientes es crear páginas admin personalizadas que proporcionen exactamente la información y funcionalidad que necesitan.&lt;/p&gt;
&lt;h3 id=&quot;página-de-soporte-para-el-clientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#página-de-soporte-para-el-clientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Página de soporte para el clientes&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_support_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_menu_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Soporte&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,                    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Título de la página&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Soporte&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,                    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Título del menu&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;read&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,                       &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Capacidad requerida&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland-support&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,           &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Slug del menu&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland_render_support&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Funcion de renderizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;dashicons-sos&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,              &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Icono&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;                             // Posicion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_add_support_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_render_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div class=&quot;wrap&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;h1&gt;Soporte WPPoland&amp;#x3C;/h1&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;p&gt;Para asistencia técnica, contactanos:&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;ul&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;li&gt;Email: soporte@wppoland.com&amp;#x3C;/li&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;li&gt;Telefono: +34 XXX XXX XXX&amp;#x3C;/li&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/ul&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;páginas-con-formularios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#páginas-con-formularios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Páginas con formularios&lt;/h3&gt;
&lt;p&gt;Las páginas admin personalizadas pueden incluir formularios para que los clientes soliciten cambios, reporten problemas o gestiónen configuraciónes específicas de su sitio. Usa los nonces de WordPress para seguridad y la Options API para almacenar datos.&lt;/p&gt;
&lt;h2 id=&quot;3-personalizando-el-toolbar-admin-bar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-personalizando-el-toolbar-admin-bar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Personalizando el Toolbar (Admin Bar)&lt;/h2&gt;
&lt;p&gt;El toolbar de WordPress ocupa espacio valioso en la parte superior de la pantalla. Personalizarlo elimina distracciones y agrega funcionalidad útil para tus clientes.&lt;/p&gt;
&lt;h3 id=&quot;eliminando-el-logo-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminando-el-logo-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminando el logo de WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_customize_toolbar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $wp_admin_bar ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar logo de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $wp_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp-logo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar enlace de comentarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $wp_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;comments&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Agregar boton de accion rápida&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $wp_admin_bar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_node&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;id&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;clear-cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Limpiar Cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;href&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; admin_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin.php?action=clear_cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;meta&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;wppoland-quick-action&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_bar_menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_customize_toolbar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;agregando-información-util&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agregando-información-util&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agregando información util&lt;/h3&gt;
&lt;p&gt;Agrega indicadores de estado del sitio al toolbar: versión de WordPress, estado de la cache, último backup, número de publicaciónes pendientes de revision. Esta información permite a los administradores del sitio tener una vision rápida del estado sin navegar a páginas específicas.&lt;/p&gt;
&lt;h2 id=&quot;4-widgets-de-dashboard-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-widgets-de-dashboard-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Widgets de dashboard personalizados&lt;/h2&gt;
&lt;p&gt;El dashboard predeterminado de WordPress esta lleno de widgets inutiles para la mayoria de los clientes. Reemplazarlos con widgets personalizados transforma el dashboard en un centro de operaciones util.&lt;/p&gt;
&lt;h3 id=&quot;eliminando-widgets-por-defecto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminando-widgets-por-defecto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminando widgets por defecto&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_remove_default_widgets&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard_quick_press&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;side&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard_primary&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;side&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_meta_box&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard_site_health&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;dashboard&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;normal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;welcome_panel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_welcome_panel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_dashboard_setup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_default_widgets&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;agregando-widget-de-estado-del-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#agregando-widget-de-estado-del-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Agregando widget de estado del sitio&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_add_status_widget&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_add_dashboard_widget&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland_site_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;Estado del Sitio - WPPoland&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;wppoland_render_status_widget&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_dashboard_setup&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_add_status_widget&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_render_status_widget&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_count &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_count_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;publish;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $php_versión &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; phpversión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $wp_versión &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_bloginfo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;versión&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;p&gt;&amp;#x3C;strong&gt;Publicaciones:&amp;#x3C;/strong&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$post_count&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x3C;/p&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;p&gt;&amp;#x3C;strong&gt;WordPress:&amp;#x3C;/strong&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$wp_versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x3C;/p&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;p&gt;&amp;#x3C;strong&gt;PHP:&amp;#x3C;/strong&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$php_versión&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x3C;/p&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&amp;#x3C;p&gt;&amp;#x3C;strong&gt;Soporte:&amp;#x3C;/strong&gt; soporte@wppoland.com&amp;#x3C;/p&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-branding-personalizado-con-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-branding-personalizado-con-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Branding personalizado con CSS&lt;/h2&gt;
&lt;p&gt;Inyectar CSS personalizado en el admin permite crear una experiencia completamente branded que refuerza la identidad de tu agencia o la del clientes.&lt;/p&gt;
&lt;h3 id=&quot;inyectando-estilos-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#inyectando-estilos-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Inyectando estilos personalizados&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_admin_branding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;style&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        #wpadminbar { background: #1a1a2e !important; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        #adminmenu .wp-has-current-submenu .wp-submenu-head,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        #adminmenu .wp-menu-arrow { background: #16213e !important; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        .wrap h1 { color: #0f3460 !important; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &amp;#x3C;/style&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_admin_branding&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;logo-personalizado-en-la-página-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#logo-personalizado-en-la-página-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Logo personalizado en la página de login&lt;/h3&gt;
&lt;p&gt;Personaliza la página de login con el logo del clientes usando el hook &lt;code&gt;login_enqueue_scripts&lt;/code&gt;. Esto completa la experiencia white-label desde el primer contacto del usuario con el panel de administración.&lt;/p&gt;
&lt;h2 id=&quot;6-configuración-técnica-y-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-configuración-técnica-y-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Configuración técnica y SEO&lt;/h2&gt;
&lt;p&gt;Implementar estas técnicas de personalización requiere un enfoque sistematico que equilibre la optimización técnica con la calidad de la experiencia del usuario.&lt;/p&gt;
&lt;h3 id=&quot;configuración-inicial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-inicial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración inicial&lt;/h3&gt;
&lt;p&gt;Comienza realizando una auditoria completa de tu configuración actual. Usa herramientas como Google Search Console, Screaming Frog o SEMrush para identificar problemas existentes y oportunidades. Documenta tus metricas base incluyendo rankings actuales, tráfico organico y tasas de conversión.&lt;/p&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización de contenido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de investigación de palabras clave&lt;/strong&gt;: Identifica palabras clave primarias y secundarias, analiza la intencion de búsqueda, mapea palabras clave al contenido existente e identifica brechas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación y optimización de contenido&lt;/strong&gt;: Escribe títulos y meta descripciones atractivas, estructura el contenido con jerarquía de encabezados adecuada, incluye enlaces internos y externos relevantes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;: Asegura responsividad móvil, mejora la velocidad de carga, implementa schema markup y corrige errores de rastreo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;medicion-del-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-del-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion del éxito&lt;/h3&gt;
&lt;p&gt;Monitorea estos indicadores clave: crecimiento del tráfico organico, mejoras en rankings de palabras clave, tasas de clics (CTR), tasas de conversión y tasas de rebote. El monitoreo regular permite ajustar tu estrategia basandote en resultados reales.&lt;/p&gt;
&lt;p&gt;Consulta también nuestros servicios de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; y &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad&lt;/a&gt; para mantener tu sitio optimizado y seguro.&lt;/p&gt;</content:encoded><category>development</category><category>wordpress</category><category domain="tag">admin-menú</category><category domain="tag">toolbar</category><category domain="tag">white-label</category><category domain="tag">ux</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-resized.jpg" type="image/jpeg"/></item><item><title>WordPress no envia correos: guía SMTP</title><link>https://wppoland.com/es/wordpress-not-sending-emails-smtp-guide/</link><guid isPermaLink="true">https://wppoland.com/es/wordpress-not-sending-emails-smtp-guide/</guid><description>Los formularios parecen funcionar, pero la bandeja de entrada esta vacia? Aprenda por que PHP mail() es obsoleto y como configurar la entrega de correo profesional.</description><pubDate>Thu, 31 May 2012 11:46:27 GMT</pubDate><content:encoded>&lt;p&gt;El escenario siempre es el mismo: Lanza un sitio nuevo, instala Contact Form 7 (o Elementor Forms), completa un formulario de prueba, ve el mensaje verde “Enviado exitosamente”… y silencio. El correo nunca llega, o aterriza en SPAM.&lt;/p&gt;
&lt;p&gt;En 2026, la capacidad de entrega de correo es uno de los mayores desafios. Los filtros de spam de Gmail, Outlook y Yahoo son implacables.&lt;/p&gt;
&lt;p&gt;En esta guía, explicare por que la configuración predeterminada de WordPress esta rota y como arreglarla de una vez por todas usando herramientas profesionales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;por-que-no-funciona-php-mail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-no-funciona-php-mail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que no funciona PHP &lt;code&gt;mail()&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;Por defecto, WordPress usa la antigua función PHP &lt;code&gt;mail()&lt;/code&gt;. Funciona asi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;WordPress le dice al servidor (ej. Apache/Nginx): “Envia este texto al administrador”.&lt;/li&gt;
&lt;li&gt;El servidor envia el correo “desde si mismo”, a menudo usando una dirección como &lt;code&gt;wordpress@su-servidor.hosting.com&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;El problema principal: Falta de identidad (Spoofing)&lt;/strong&gt;
Su dominio es &lt;code&gt;miempresa.com&lt;/code&gt;, pero el correo técnicamente sale del servidor &lt;code&gt;s123.proveedordehosting.net&lt;/code&gt;. Para Gmail, esto se ve sospechoso: “Alguien esta suplantando a la empresa pero enviando desde un servidor de hosting extrano”.&lt;/p&gt;
&lt;p&gt;Resultado? &lt;strong&gt;Rebote o carpeta de SPAM.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;por-que-esto-empeora-cada-año&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-esto-empeora-cada-año&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que esto empeora cada año&lt;/h3&gt;
&lt;p&gt;Los proveedores de correo principales han endurecido sus politicas drasticamente en los últimos años. Google y Yahoo ahora requieren autenticación DMARC para remitentes de alto volumen. Microsoft ha implementado verificaciónes de reputacion de IP más estrictas. Y los filtros de inteligencia artificial pueden detectar patrones de envio sospechosos con una precision sin precedentes.&lt;/p&gt;
&lt;p&gt;Para un sitio WordPress que depende de PHP mail(), esto significa que la tasa de entrega exitosa disminuye cada año, incluso si no cambia nada en su configuración.&lt;/p&gt;
&lt;h3 id=&quot;el-impacto-en-su-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-impacto-en-su-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El impacto en su negocio&lt;/h3&gt;
&lt;p&gt;Los correos que no llegan no son solo una molestia técnica. Representan oportunidades de negocio perdidas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Formularios de contacto&lt;/strong&gt;: Un clientes potencial llena su formulario pero usted nunca recibe la notificación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confirmaciones de pedido&lt;/strong&gt;: Los clientes de WooCommerce no reciben confirmaciones de compra, generando preocupacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restablecimiento de contrasenas&lt;/strong&gt;: Los usuarios no pueden recuperar sus cuentas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notificaciones de comentarios&lt;/strong&gt;: Pierde la oportunidad de interactuar con su comunidad&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;paso-1-instalar-un-plugin-smtp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-instalar-un-plugin-smtp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Instalar un plugin SMTP&lt;/h2&gt;
&lt;p&gt;Debe forzar a WordPress a iniciar sesion en un buzon de correo real, exactamente como su clientes de correo (Outlook/Thunderbird) en su telefono.&lt;/p&gt;
&lt;h3 id=&quot;plugins-recomendados-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plugins-recomendados-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plugins recomendados (2026):&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FluentSMTP (Gratuito y el mejor)&lt;/strong&gt;
Ligero, rápido, tiene registros de correo y soporta APIs nativas (más sobre esto en un momento). Sin versión de pago, todo es gratuito.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WP Mail SMTP (El más popular)&lt;/strong&gt;
Estándar del mercado. La versión gratuita es suficiente para SMTP básico.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;configuración-datos-del-hosting&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-datos-del-hosting&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración (datos del hosting):&lt;/h3&gt;
&lt;p&gt;Inicie sesion en el panel de su hosting y encuentre los detalles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Servidor SMTP (Host):&lt;/strong&gt; ej. &lt;code&gt;smtp.gmail.com&lt;/code&gt;, &lt;code&gt;mail.sudominio.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puerto:&lt;/strong&gt; &lt;code&gt;465&lt;/code&gt; (SSL) o &lt;code&gt;587&lt;/code&gt; (TLS). &lt;em&gt;Evite el puerto 25!&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autenticación:&lt;/strong&gt; Si.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Login:&lt;/strong&gt; Su dirección de correo completa (ej. &lt;code&gt;notificaciones@sudominio.com&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasena:&lt;/strong&gt; La contrasena de este buzon.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Despues de la configuración, envie un correo de prueba desde el plugin. Si pasa, esta a mitad del camino.&lt;/p&gt;
&lt;h3 id=&quot;configuración-avanzada-del-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-avanzada-del-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración avanzada del plugin&lt;/h3&gt;
&lt;p&gt;FluentSMTP ofrece opciones avanzadas que vale la pena configurar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Registro de correos&lt;/strong&gt;: Active el registro para diagnosticar problemas de entrega. Cada correo enviado queda registrado con su estado (exitoso, fallido, en cola).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reintento automático&lt;/strong&gt;: Configure reintentos automáticos para correos fallidos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dirección de respuesta&lt;/strong&gt;: Configure una dirección Reply-To diferente de la dirección From para mejor gestión de respuestas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correo de respaldo&lt;/strong&gt;: Configure un método de envio alternativo en caso de que el principal falle.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;paso-2-autenticación-de-dominio-dns&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-autenticación-de-dominio-dns&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Autenticación de dominio (DNS)&lt;/h2&gt;
&lt;p&gt;Esta es la parte más importante que el 90% de los implementadores olvidan. Enviar via SMTP solo no es suficiente. Debe probar al mundo que este servidor tiene el derecho de enviar correos en su nombre.&lt;/p&gt;
&lt;p&gt;Esto se hace agregando registros TXT en la zona DNS de su dominio (ej. en Cloudflare, GoDaddy, Namecheap).&lt;/p&gt;
&lt;h3 id=&quot;1-spf-sender-policy-framework&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-spf-sender-policy-framework&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. SPF (Sender Policy Framework)&lt;/h3&gt;
&lt;p&gt;Dice: “Solo estas direcciones IP pueden enviar correos desde este dominio”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de registro TXT:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;v=spf1 include:_spf.google.com include:spf.proveedordehosting.com -all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;include&lt;/code&gt; - autoriza a Google y su hosting.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-all&lt;/code&gt; (menos all) - fallo estricto. Cualquier otro servidor deberia ser rechazado.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;errores-comunes-con-spf&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-con-spf&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes con SPF&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multiples registros SPF&lt;/strong&gt;: Solo puede tener UN registro SPF por dominio. Si necesita autorizar multiples servicios, combine todos los &lt;code&gt;include&lt;/code&gt; en un solo registro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uso excesivo de lookups&lt;/strong&gt;: SPF tiene un limite de 10 lookups DNS. Cada &lt;code&gt;include&lt;/code&gt; cuenta como uno. Si excede este limite, el registro SPF falla silenciosamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Softfail vs Hardfail&lt;/strong&gt;: Use &lt;code&gt;-all&lt;/code&gt; (hardfail) en producción, no &lt;code&gt;~all&lt;/code&gt; (softfail). El softfail solo marca los correos como sospechosos, no los rechaza.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-dkim-domainkeys-identified-mail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-dkim-domainkeys-identified-mail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. DKIM (DomainKeys Identified Mail)&lt;/h3&gt;
&lt;p&gt;Es una firma digital para mensajes. El servidor de correo “sella” cada correo con una clave privada, y el destinatario lo verifica con una clave pública del DNS.&lt;/p&gt;
&lt;p&gt;Genere la clave DKIM en el panel de su hosting de correo.
&lt;strong&gt;Registro TXT:&lt;/strong&gt; generalmente con nombre &lt;code&gt;default._domainkey&lt;/code&gt; y contiene una cadena larga como &lt;code&gt;v=DKIM1; k=rsa; p=MIIBIjANBgkqh...&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;como-verificar-que-dkim-funciona&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-verificar-que-dkim-funciona&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como verificar que DKIM funciona&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar registro DKIM via terminal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;dig&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; TXT&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; default._domainkey.sudominio.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Deberia ver su clave pública en la respuesta. Si no aparece, espere la propagacion DNS (hasta 48 horas) o verifique que el nombre del registro es correcto.&lt;/p&gt;
&lt;h3 id=&quot;3-dmarc-domain-based-message-authentication&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-dmarc-domain-based-message-authentication&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. DMARC (Domain-based Message Authentication)&lt;/h3&gt;
&lt;p&gt;Es una instruccion para Gmail sobre que hacer cuando SPF o DKIM fallan. En 2026, Gmail y Yahoo &lt;strong&gt;requieren&lt;/strong&gt; DMARC para grandes remitentes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Registro TXT básico para &lt;code&gt;_dmarc&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;v=DMARC1; p=none; rua=mailto:admin@sudominio.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;p=none&lt;/code&gt; - inicialmente solo monitorear, no bloquear.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p=quarantine&lt;/code&gt; - poner en spam.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p=reject&lt;/code&gt; - rechazar completamente (el objetivo final).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-implementación-dmarc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-implementación-dmarc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de implementación DMARC&lt;/h3&gt;
&lt;p&gt;No salte directamente a &lt;code&gt;p=reject&lt;/code&gt;. Siga esta progresion:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Semana 1-4&lt;/strong&gt;: &lt;code&gt;p=none&lt;/code&gt; con reportes activados. Analice los reportes para identificar fuentes legitimás de correo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 5-8&lt;/strong&gt;: &lt;code&gt;p=quarantine; pct=25&lt;/code&gt; - aplique cuarentena al 25% de los correos que fallan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 9-12&lt;/strong&gt;: &lt;code&gt;p=quarantine; pct=100&lt;/code&gt; - cuarentena completa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 13+&lt;/strong&gt;: &lt;code&gt;p=reject&lt;/code&gt; - rechazo completo una vez que todos los flujos de correo estan autenticados.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;paso-3-smtp-vs-api-por-que-api-gana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-smtp-vs-api-por-que-api-gana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: SMTP vs API (por que API gana?)&lt;/h2&gt;
&lt;p&gt;Enviar via SMTP estándar (login/contrasena) tiene desventajas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lentitud:&lt;/strong&gt; SMTP es un protocolo “conversador”. Enviar un correo toma 1-3 segundos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloqueo por contrasena:&lt;/strong&gt; Si cambia la contrasena del buzon, el sitio deja de enviar correos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limites:&lt;/strong&gt; Los hosts estándar tienen limites, ej. 500 correos/dia.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;solución-servicios-de-correo-transaccional-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-servicios-de-correo-transaccional-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución: Servicios de correo transaccional (API)&lt;/h3&gt;
&lt;p&gt;En lugar de un buzon regular, use un servicio dedicado para “correos transaccionales” (notificaciones, restablecimiento de contrasenas, pedidos). Se conecta via API HTTP (instantanea) en lugar de SMTP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores proveedores en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Brevo (anteriormente Sendinblue):&lt;/strong&gt; Buenos limites gratuitos (300/dia).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Postmark:&lt;/strong&gt; Maxima capacidad de entrega, pero de pago.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MailerSend:&lt;/strong&gt; Excelente plan gratuito.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Amazon SES:&lt;/strong&gt; El más economico, pero dificil de configurar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El plugin &lt;strong&gt;FluentSMTP&lt;/strong&gt; soporta estas APIs de forma nativa. Solo pegue la clave API y listo.&lt;/p&gt;
&lt;h3 id=&quot;comparación-detallada-de-proveedores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-detallada-de-proveedores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación detallada de proveedores&lt;/h3&gt;













































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Proveedor&lt;/th&gt;&lt;th&gt;Plan gratuito&lt;/th&gt;&lt;th&gt;Precio inicial&lt;/th&gt;&lt;th&gt;Entrega&lt;/th&gt;&lt;th&gt;API&lt;/th&gt;&lt;th&gt;Soporte&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Brevo&lt;/td&gt;&lt;td&gt;300/dia&lt;/td&gt;&lt;td&gt;$9/mes&lt;/td&gt;&lt;td&gt;Buena&lt;/td&gt;&lt;td&gt;REST, SMTP&lt;/td&gt;&lt;td&gt;Chat, email&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Postmark&lt;/td&gt;&lt;td&gt;100/mes&lt;/td&gt;&lt;td&gt;$15/mes&lt;/td&gt;&lt;td&gt;Excelente&lt;/td&gt;&lt;td&gt;REST&lt;/td&gt;&lt;td&gt;Email prioritario&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MailerSend&lt;/td&gt;&lt;td&gt;3000/mes&lt;/td&gt;&lt;td&gt;$28/mes&lt;/td&gt;&lt;td&gt;Muy buena&lt;/td&gt;&lt;td&gt;REST, SMTP&lt;/td&gt;&lt;td&gt;Chat&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Amazon SES&lt;/td&gt;&lt;td&gt;62K/mes (si en EC2)&lt;/td&gt;&lt;td&gt;$0.10/1000&lt;/td&gt;&lt;td&gt;Buena&lt;/td&gt;&lt;td&gt;REST, SMTP&lt;/td&gt;&lt;td&gt;Foros&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&quot;como-probar-la-capacidad-de-entrega&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-probar-la-capacidad-de-entrega&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como probar la capacidad de entrega?&lt;/h2&gt;
&lt;p&gt;No adivine. Use &lt;strong&gt;Mail-Tester.com&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vaya al sitio, copie la dirección de correo extrana.&lt;/li&gt;
&lt;li&gt;Envie un correo desde su sitio WordPress.&lt;/li&gt;
&lt;li&gt;Verifique el resultado (Puntuacion).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si tiene menos de &lt;strong&gt;9/10&lt;/strong&gt;, lea el informe. Generalmente muestra SPF, DKIM faltantes o presencia en listas negras.&lt;/p&gt;
&lt;h3 id=&quot;otras-herramientas-de-diagnóstico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#otras-herramientas-de-diagnóstico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Otras herramientas de diagnóstico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MXToolbox.com&lt;/strong&gt;: Verifica registros DNS (SPF, DKIM, DMARC) y presencia en listas negras&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Postmaster Tools&lt;/strong&gt;: Muestra la reputacion de su dominio según Gmail&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMARC Analyzer&lt;/strong&gt;: Analiza reportes DMARC para identificar problemas de autenticación&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;contact-form-7---problemás-específicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contact-form-7---problemás-específicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contact Form 7 - Problemás específicos&lt;/h2&gt;
&lt;p&gt;CF7 tiene sus peculiaridades.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Campo “De”:&lt;/strong&gt; Debe contener una dirección de SU dominio!
&lt;ul&gt;
&lt;li&gt;MAL: &lt;code&gt;[your-email]&lt;/code&gt; (No puede enviar “como el clientes”).&lt;/li&gt;
&lt;li&gt;BIEN: &lt;code&gt;Notificaciones &amp;#x3C;no-reply@miempresa.com&gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Campo “Cabeceras adicionales”:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Ponga aqui: &lt;code&gt;Reply-To: [your-email]&lt;/code&gt;. Asi, cuando haga clic en “Responder”, el correo va al clientes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;configuración-optima-de-contact-form-7&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-optima-de-contact-form-7&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración optima de Contact Form 7&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;De: Formulario Web &amp;#x3C;notificaciones@miempresa.com&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Asunto: Nuevo mensaje de [your-name]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cabeceras adicionales:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reply-To: [your-email]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cc: ventas@miempresa.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cuerpo del mensaje:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Nombre: [your-name]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Email: [your-email]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Telefono: [your-phone]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Mensaje: [your-message]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;elementor-forms-y-otros-constructores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#elementor-forms-y-otros-constructores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Elementor Forms y otros constructores&lt;/h3&gt;
&lt;p&gt;Los mismos principios aplican para Elementor Forms, WPForms, Gravity Forms y otros constructores de formularios. La regla de oro es siempre:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use una dirección de correo de su propio dominio como remitente&lt;/li&gt;
&lt;li&gt;Configure el correo del visitante como Reply-To, nunca como From&lt;/li&gt;
&lt;li&gt;Asegurese de que el plugin SMTP este activo y funcionando antes de configurar formularios&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;monitoreo-continuo-de-la-entrega&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-continuo-de-la-entrega&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo continuo de la entrega&lt;/h2&gt;
&lt;p&gt;La configuración inicial no es suficiente. La capacidad de entrega de correo requiere monitoreo continuo.&lt;/p&gt;
&lt;h3 id=&quot;señales-de-alerta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-alerta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de alerta&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tasa de apertura en caida&lt;/strong&gt;: Si sus correos de notificación solian tener buenas tasas de apertura y empiezan a bajar, es posible que esten llegando a spam.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quejas de clientes&lt;/strong&gt;: Si los clientes reportan que no reciben correos, investigue inmediatamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Errores en los logs&lt;/strong&gt;: Revise los logs de FluentSMTP regularmente en busca de errores de entrega.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;calendario-de-mantenimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#calendario-de-mantenimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Calendario de mantenimiento&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Semanal&lt;/strong&gt;: Revise los logs de correo en busca de fallos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mensual&lt;/strong&gt;: Verifique la puntuacion en Mail-Tester&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trimestral&lt;/strong&gt;: Revise y actualice registros DNS si ha agregado nuevos servicios de envio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anual&lt;/strong&gt;: Renueve claves DKIM y revise la politica DMARC&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.
La batalla por la capacidad de entrega de correo es un proceso continuo. No puede confiar en &lt;code&gt;php mail()&lt;/code&gt;.
Kit minimo profesional:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Plugin SMTP (FluentSMTP).&lt;/li&gt;
&lt;li&gt;Proveedor API externo (Brevo/MailerSend) O SMTP de hosting correcto.&lt;/li&gt;
&lt;li&gt;Registros DNS completos: SPF, DKIM y DMARC.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Solo esto le da la seguridad de que una solicitud de presupuesto de un clientes no se perdera en el abismo digital. La inversión de 30 minutos en configurar correctamente la entrega de correo puede ahorrarle miles de euros en oportunidades de negocio perdidas.&lt;/p&gt;</content:encoded><category>hosting</category><category>plugins</category><category>debugging</category><category domain="tag">contact form 7</category><category domain="tag">smtp</category><category domain="tag">email</category><category domain="tag">dns</category><enclosure url="https://wppoland.com/images/og/contact-form-7-problem-z-dostarczaniem-powiadomien-na-zenbox-pl.jpg" type="image/jpeg"/></item><item><title>Como construir un portfolio de desarrollador WordPress en 2026?</title><link>https://wppoland.com/es/how-to-build-a-wordpress-developer-portfolio-in-2026/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-build-a-wordpress-developer-portfolio-in-2026/</guid><description>Solo decir &apos;Se PHP&apos; no es suficiente. Aprenda a crear un portfolio efectivo que atraiga clientes de alto presupuesto. Casos de estudio y mejores prácticas.</description><pubDate>Sun, 04 Mar 2012 20:23:45 GMT</pubDate><content:encoded>&lt;p&gt;Como freelancers y agencias, a menudo cometemos un error: tratamos la sección de “Portfolio” como una galeria de imágenes bonitas. “Aqui hay un sitio web de una pizzeria. Bonito, verdad?”.&lt;/p&gt;
&lt;p&gt;En 2026, cuando el mercado esta saturado, los clientes esperan mas. No compran un “sitio web”; compran una &lt;strong&gt;solución a un problema&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;por-que-el-portfolio-importa-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-portfolio-importa-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el portfolio importa en 2026&lt;/h2&gt;
&lt;p&gt;En la era de la IA y la automatizacion, el portfolio de un &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; no es solo una tarjeta de presentacion, es su &lt;strong&gt;estrategia de ventas&lt;/strong&gt;. Segun investigaciónes, el 78% de los clientes eligen trabajar con alguien basandose en su portfolio, no en su CV. Un portfolio habla más fuerte que mil palabras porque muestra no solo lo que puede hacer, sino &lt;strong&gt;como piensa&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;el-mercado-2026-competencia-y-expectativas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-mercado-2026-competencia-y-expectativas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El mercado 2026: Competencia y expectativas&lt;/h3&gt;
&lt;p&gt;El mercado de desarrollo WordPress en 2026 es más competitivo que nunca. Hay más de 200,000 freelancers de WordPress en Upwork. Como se destaca? &lt;strong&gt;A través de la calidad del portfolio, no la cantidad de proyectos&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Los clientes en 2026 buscan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Soluciónes, no tecnologías&lt;/strong&gt; - no les importa que uso React, les importa que resolvio un problema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metricas y resultados&lt;/strong&gt; - números concretos, no declaraciones vagas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proceso de pensamiento&lt;/strong&gt; - como llego a la solución&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-caso-de-estudio-sobre-galeria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-caso-de-estudio-sobre-galeria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Caso de estudio sobre galeria&lt;/h2&gt;
&lt;p&gt;En lugar de publicar una captura de pantalla y un enlace, describa el proceso. Un buen portfolio es una coleccion de &lt;strong&gt;casos de estudio&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;estructura-de-un-caso-de-estudio-ideal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estructura-de-un-caso-de-estudio-ideal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estructura de un caso de estudio ideal&lt;/h3&gt;
&lt;p&gt;Cada proyecto deberia responder:&lt;/p&gt;
&lt;h4 id=&quot;desafio-el-problema-del-clientes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#desafio-el-problema-del-clientes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Desafio: El problema del clientes&lt;/h4&gt;
&lt;p&gt;No escriba “Construi un sitio web”. Escriba el &lt;strong&gt;problema específico&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“E-commerce con 10,000 productos cargaba en 8 segundos, causando 40% de abandono de carrito”&lt;/li&gt;
&lt;li&gt;“El sitio generaba 500GB de ancho de banda mensual por imágenes no optimizadas”&lt;/li&gt;
&lt;li&gt;“El clientes perdio 30% de conversión por falta de responsividad móvil”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Por que esto importa:&lt;/strong&gt; Un clientes leyendo su portfolio se identifica con el problema. Si tiene un problema similar, inmediatamente sabe que usted entiende su situación.&lt;/p&gt;
&lt;h4 id=&quot;solución-que-hizo-y-por-que&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-que-hizo-y-por-que&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución: Que hizo (y por que)&lt;/h4&gt;
&lt;p&gt;Describa no solo &lt;strong&gt;que&lt;/strong&gt;, sino &lt;strong&gt;por que&lt;/strong&gt; eligio una solución particular:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“En lugar de WooCommerce estándar, elegi WordPress headless con Next.js porque el clientes necesitaba:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo de carga menor a 1s (Core Web Vitals)&lt;/li&gt;
&lt;li&gt;Integración con API externa de ERP&lt;/li&gt;
&lt;li&gt;Capacidad de escalar a 100,000 productos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Solución: WordPress como CMS headless + frontend Next.js + cache Redis + CDN Cloudflare”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Por que esto funciona:&lt;/strong&gt; Muestra que no copia plantillas, sino que &lt;strong&gt;piensa arquitectonicamente&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;resultado-números-y-metricas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resultado-números-y-metricas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resultado: Números y metricas&lt;/h4&gt;
&lt;p&gt;Esta es la parte más importante. Use datos concretos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Antes vs. Despues:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo de carga: 8s a 0.9s (mejora del 88%)&lt;/li&gt;
&lt;li&gt;Conversión: 2.1% a 3.4% (+62%)&lt;/li&gt;
&lt;li&gt;Abandono de carrito: 40% a 18% (-55%)&lt;/li&gt;
&lt;li&gt;Transferencia de datos: 500GB a 120GB (-76%)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Donde obtener datos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Analytics (conversiones, tasa de rebote)&lt;/li&gt;
&lt;li&gt;PageSpeed Insights (Core Web Vitals)&lt;/li&gt;
&lt;li&gt;GTmetrix (tiempo de carga)&lt;/li&gt;
&lt;li&gt;Logs del servidor (transferencia, consultas de base de datos)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ejemplo-completo-de-caso-de-estudio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-completo-de-caso-de-estudio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo completo de caso de estudio&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Proyecto: E-commerce para fabricante de muebles&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desafio:&lt;/strong&gt;
El clientes tenia una &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;tienda WooCommerce&lt;/a&gt; con 8,000 productos. El sitio cargaba en 6 segundos, causando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;45% de abandono de carrito&lt;/li&gt;
&lt;li&gt;Caida de conversión de 3.2% a 1.8% en un año&lt;/li&gt;
&lt;li&gt;Problemás de indexacion en Google (Core Web Vitals en rojo)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Solución:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Migración a WordPress headless&lt;/strong&gt; - WordPress como CMS, Next.js como frontend&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de imágenes&lt;/strong&gt; - conversión a AVIF, carga diferida, imágenes responsivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estrategia de cache&lt;/strong&gt; - Redis para productos, Cloudflare para activos estaticos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de base de datos&lt;/strong&gt; - indices, optimización de consultas WP_Query&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementación de CDN&lt;/strong&gt; - Cloudflare con auto-minificacion CSS/JS&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo de carga: 6s a 0.8s (mejora del 87%)&lt;/li&gt;
&lt;li&gt;Conversión: 1.8% a 3.9% (+117%)&lt;/li&gt;
&lt;li&gt;Abandono de carrito: 45% a 12% (-73%)&lt;/li&gt;
&lt;li&gt;Core Web Vitals: todos en verde&lt;/li&gt;
&lt;li&gt;ROI: El proyecto se pago solo en 3 meses a través del aumento de ventas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-muestreme-el-código-para-reclutadores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-muestreme-el-código-para-reclutadores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Muestreme el código (para reclutadores)&lt;/h2&gt;
&lt;p&gt;Si esta buscando trabajo en una empresa de software, su portfolio debe mostrar calidad de código.&lt;/p&gt;
&lt;h3 id=&quot;github-su-mejor-amigo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#github-su-mejor-amigo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;GitHub: Su mejor amigo&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Incluso si el proyecto es privado&lt;/strong&gt;, cree muestras de código publicas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fragmentos de proyectos&lt;/strong&gt; - extraiga los mejores fragmentos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contribuciones open source&lt;/strong&gt; - contribuciones a WordPress Core, plugins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proyectos personales&lt;/strong&gt; - herramientas pequeñas que muestren sus habilidades&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Que mostrar en código:&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&quot;1-hooks-personalizados-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-hooks-personalizados-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Hooks personalizados de WordPress&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Optimizar WP_Query para catalogos de productos grandes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $query&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pre_get_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($query) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_main_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_shop&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ids&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;no_found_rows&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $meta_query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;relation&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_stock_status&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;instock&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;compare&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;=&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;meta_query&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $meta_query);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;2-php-moderno-81&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-php-moderno-81&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. PHP moderno (8.1+)&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; ProductCache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; __construct&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        private&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Redis&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $redis,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        private&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $ttl &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3600&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ) {}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; getProduct&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $productId)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;Product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $cacheKey &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;product:{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$productId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($cached &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; $this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;redis&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cacheKey)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; unserialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cached);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $product &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wc_get_product&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($productId);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($product) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            $this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;redis&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;setex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cacheKey, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ttl, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;serialize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($product));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $product;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;3-desarrollo-de-bloques-gutenberg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-desarrollo-de-bloques-gutenberg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Desarrollo de bloques Gutenberg&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { registerBlockType } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@wordpress/blocks&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { useBlockProps } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;@wordpress/block-editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;registerBlockType&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland/portfolio-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    edit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: ({ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;setAttributes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; blockProps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; useBlockProps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;blockProps}&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;{attributes.title}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;{attributes.description}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    save&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Renderizado del lado del servidor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;stack-tecnológico-que-vale-la-pena-mostrar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#stack-tecnológico-que-vale-la-pena-mostrar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Stack tecnológico que vale la pena mostrar&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Imprescindible en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gutenberg (FSE)&lt;/strong&gt; - Full Site Editing, desarrollo de bloques&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React/Next.js&lt;/strong&gt; - WordPress headless&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composer&lt;/strong&gt; - gestión de dependencias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WP-CLI&lt;/strong&gt; - automatizacion, despliegue&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt; - entorno local&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt; - control de versiones (no solo push/pull, sino estrategia de branching)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-herramientas-para-construir-un-portfolio-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-herramientas-para-construir-un-portfolio-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Herramientas para construir un portfolio en WordPress&lt;/h2&gt;
&lt;p&gt;No necesita plugins complejos. WordPress tiene todo lo que necesita.&lt;/p&gt;
&lt;h3 id=&quot;custom-post-type-para-portfolio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#custom-post-type-para-portfolio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Custom Post Type para portfolio&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_register_portfolio_cpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    register_post_type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;portfolio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;labels&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Portfolio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;singular_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Proyecto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;public&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;has_archive&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;supports&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;editor&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;thumbnail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;excerpt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;rewrite&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;portfolio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;show_in_rest&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_register_portfolio_cpt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;acf-para-campos-adicionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acf-para-campos-adicionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;ACF para campos adicionales&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;acf_add_local_field_group&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;portfolio_fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Detalles del Portfolio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;clientes_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;label&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Nombre del Cliente&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;project_year&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;label&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Año del Proyecto&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;number&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;tech_stack&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;label&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Stack Tecnologico&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;checkbox&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;choices&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;wordpress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;WordPress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;react&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;React&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;nextjs&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Next.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;                &apos;woocommerce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;WooCommerce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;metrics&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;label&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Metricas (antes/despues)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;repeater&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;sub_fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;metric_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;before_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;after_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;location&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [[[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;param&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;operator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;==&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;portfolio&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]]],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-seo-y-optimización-del-portfolio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-seo-y-optimización-del-portfolio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. SEO y optimización del portfolio&lt;/h2&gt;
&lt;p&gt;El portfolio no es solo para personas: Google también lo lee.&lt;/p&gt;
&lt;h3 id=&quot;marcado-schemaorg-para-portfolio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marcado-schemaorg-para-portfolio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marcado Schema.org para portfolio&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_portfolio_schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@context&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://schema.org&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;CreativeWork&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;description&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;creator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Person&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Mariusz Szatkowski&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;datePublished&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($clientes &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;clientes_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $schema[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;clientes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Organization&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $clientes,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $schema;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;5-resumen-portfolio-como-estrategia-de-ventas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-resumen-portfolio-como-estrategia-de-ventas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Resumen: Portfolio como estrategia de ventas&lt;/h2&gt;
&lt;p&gt;Su portfolio es su mejor vendedor. Dejelo trabajar mientras usted duerme.&lt;/p&gt;
&lt;h3 id=&quot;principios-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#principios-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Principios clave:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Calidad &gt; Cantidad&lt;/strong&gt; - 5 proyectos bien descritos son mejores que 50 capturas sin contexto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Casos de estudio, no galeria&lt;/strong&gt; - muestre el proceso, no solo el resultado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metricas y números&lt;/strong&gt; - datos concretos, no declaraciones vagas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Código en contexto&lt;/strong&gt; - GitHub + explicacion de decisiones tecnológicas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizado para SEO&lt;/strong&gt; - el portfolio también debe estar optimizado&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;proximos-pasos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proximos-pasos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proximos pasos:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Analice sus proyectos&lt;/strong&gt; - elija 5-7 de los mejores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recopile datos&lt;/strong&gt; - metricas, capturas, feedback de clientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escriba casos de estudio&lt;/strong&gt; - según la estructura de este artículo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimice código&lt;/strong&gt; - prepare muestras publicas en GitHub&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construya en WordPress&lt;/strong&gt; - use CPT + ACF + bloques Gutenberg&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Recuerde:&lt;/strong&gt; El portfolio no es un CV. Es su &lt;strong&gt;estrategia de ventas&lt;/strong&gt;. Cada proyecto deberia responder la pregunta: “Por que deberia el clientes elegirle a usted?”.&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>freelancing</category><category>career</category><category domain="tag">portfolio</category><category domain="tag">case study</category><category domain="tag">clientes</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>SEO para sitios pequeños - Como vencer a los gigantes en 2026</title><link>https://wppoland.com/es/seo-for-small-sites-strategy/</link><guid isPermaLink="true">https://wppoland.com/es/seo-for-small-sites-strategy/</guid><description>Tienes un sitio local pequeño? No luches contra Wikipedia o grandes portales por frases genericas. Aprende la estrategia de Long Tail y Autoridad Tematica.</description><pubDate>Fri, 14 Oct 2011 11:24:26 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-el-manual-del-desvalido-en-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-el-manual-del-desvalido-en-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: El Manual del Desvalido en SEO&lt;/h2&gt;
&lt;p&gt;Tener un sitio web pequeño e intentar competir con gigantes de la industria puede sentirse como llevar un cuchillo a una pelea de pistolas. Como puede tu negocio local posicionarse cuando compites contra empresas con presupuestos SEO de millones, equipos de escritores de contenido y autoridades de dominio construidas durante decadas?&lt;/p&gt;
&lt;p&gt;La respuesta: no luchas en sus terminos. Cambias el campo de batalla por completo.&lt;/p&gt;
&lt;p&gt;Esta guía revela las estrategias probadas que permiten a los sitios pequeños no solo sobrevivir, sino prosperar y superar a los principales competidores en los resultados de búsqueda. La clave es entender que el tamaño no lo es todo: la estrategia si lo es.&lt;/p&gt;
&lt;h2 id=&quot;la-realidad-de-david-vs-goliat&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-realidad-de-david-vs-goliat&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La Realidad de David vs. Goliat&lt;/h2&gt;
&lt;h3 id=&quot;por-que-los-sitios-grandes-tienen-debilidades&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-sitios-grandes-tienen-debilidades&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por Que los Sitios Grandes Tienen Debilidades&lt;/h3&gt;
&lt;p&gt;Los sitios web grandes y las marcas nacionales tienen desventajas estructurales que crean oportunidades:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. La Burocracia los Frena&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los cambios de contenido requieren multiples aprobaciones&lt;/li&gt;
&lt;li&gt;Las estrategias SEO se planifican con trimestres de antelacion&lt;/li&gt;
&lt;li&gt;No pueden pivotar rápidamente basandose en resultados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Requisitos de Contenido Generico&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deben atraer a audiencias amplias&lt;/li&gt;
&lt;li&gt;No pueden abordar necesidades hiper-específicas&lt;/li&gt;
&lt;li&gt;El enfoque único para todos deja brechas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Voz Impersonal&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El tono corporativo carece de autenticidad&lt;/li&gt;
&lt;li&gt;Sin historias ni experiencias personales&lt;/li&gt;
&lt;li&gt;Dificil construir conexiónes genuinas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Asignacion de Recursos&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se enfocan solo en palabras clave de alto volumen&lt;/li&gt;
&lt;li&gt;Ignoran nichos más pequeños pero valiosos&lt;/li&gt;
&lt;li&gt;Pierden oportunidades locales por completo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tus-ventajas-como-sitio-pequeño&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tus-ventajas-como-sitio-pequeño&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tus Ventajas como Sitio Pequeño&lt;/h3&gt;
&lt;p&gt;Como propietario de un sitio pequeño, puedes aprovechar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agilidad&lt;/strong&gt;: Cambiar estrategias de la noche a la manana basandote en datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Especificidad&lt;/strong&gt;: Dirigirte a necesidades exactas del clientes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalidad&lt;/strong&gt;: Voz autentica que genera confianza&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enfoque Local&lt;/strong&gt;: Dominar mercados geograficos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profundidad de Nicho&lt;/strong&gt;: Convertirte en el experto definitivo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;estrategia-1-dominio-de-palabras-clave-long-tail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-1-dominio-de-palabras-clave-long-tail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 1: Dominio de Palabras Clave Long-Tail&lt;/h2&gt;
&lt;h3 id=&quot;entendiendo-el-long-tail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-el-long-tail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo el Long-Tail&lt;/h3&gt;
&lt;p&gt;Las palabras clave long-tail son frases de búsqueda más largas y específicas (tipicamente 3+ palabras) que tienen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menor volumen de búsqueda individual&lt;/li&gt;
&lt;li&gt;Mucha menos competencia&lt;/li&gt;
&lt;li&gt;Tasas de conversión más altas (2.5x mejores en promedio)&lt;/li&gt;
&lt;li&gt;Intencion del usuario más específica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Comparación de Ejemplo:&lt;/strong&gt;&lt;/p&gt;

































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tipo de Palabra Clave&lt;/th&gt;&lt;th&gt;Termino de Búsqueda&lt;/th&gt;&lt;th&gt;Volumen Mensual&lt;/th&gt;&lt;th&gt;Competencia&lt;/th&gt;&lt;th&gt;Conversión&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Principal&lt;/td&gt;&lt;td&gt;”zapatos”&lt;/td&gt;&lt;td&gt;1,000,000&lt;/td&gt;&lt;td&gt;Extrema&lt;/td&gt;&lt;td&gt;0.5%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cuerpo&lt;/td&gt;&lt;td&gt;”zapatos para correr”&lt;/td&gt;&lt;td&gt;100,000&lt;/td&gt;&lt;td&gt;Alta&lt;/td&gt;&lt;td&gt;1.2%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Long-tail&lt;/td&gt;&lt;td&gt;”zapatos trail running mujer talla 38 impermeables”&lt;/td&gt;&lt;td&gt;500&lt;/td&gt;&lt;td&gt;Baja&lt;/td&gt;&lt;td&gt;4.8%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;encontrando-tus-minas-de-oro-long-tail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encontrando-tus-minas-de-oro-long-tail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encontrando Tus Minas de Oro Long-Tail&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Método 1: Autocompletar de Google&lt;/strong&gt;
Comienza a escribir tu palabra clave principal y mira lo que Google sugiere. Estas sugerencias representan búsquedas reales que la gente esta haciendo.&lt;/p&gt;
&lt;p&gt;Pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abre una ventana de navegador incognito&lt;/li&gt;
&lt;li&gt;Escribe tu palabra clave base lentamente&lt;/li&gt;
&lt;li&gt;Anota cada sugerencia que aparezca&lt;/li&gt;
&lt;li&gt;Agrega palabras de pregunta (como, que, por que, donde) y ve nuevas sugerencias&lt;/li&gt;
&lt;li&gt;Prueba diferentes variaciones y combinaciones&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Método 2: Cuadros de “La gente también pregunta”&lt;/strong&gt;
Google muestra preguntas relacionadas en los resultados de búsqueda. Estas son minas de oro de contenido porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Son preguntas reales de usuarios&lt;/li&gt;
&lt;li&gt;Revelan la intencion de búsqueda&lt;/li&gt;
&lt;li&gt;Cada pregunta puede convertirse en un artículo&lt;/li&gt;
&lt;li&gt;Oportunidades de fragmentos destacados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Método 3: AnswerThePublic&lt;/strong&gt;
Esta herramienta visualiza preguntas que la gente hace alrededor de una palabra clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas que, como, cuando, donde, por que&lt;/li&gt;
&lt;li&gt;Variaciones con preposiciones (para, con, sin, hacia)&lt;/li&gt;
&lt;li&gt;Consultas de comparación (vs, o, comparado con)&lt;/li&gt;
&lt;li&gt;Variaciones alfabeticas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Método 4: Mineria de Foros&lt;/strong&gt;
Visita foros de la industria y comunidades de Reddit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que preguntas siguen apareciendo?&lt;/li&gt;
&lt;li&gt;Que problemas describen las personas?&lt;/li&gt;
&lt;li&gt;Que lenguaje usan?&lt;/li&gt;
&lt;li&gt;Que soluciones han probado?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;creando-contenido-long-tail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#creando-contenido-long-tail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Creando Contenido Long-Tail&lt;/h3&gt;
&lt;p&gt;Al dirigirte a palabras clave long-tail:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Coincide Exactamente con la Intencion de Búsqueda&lt;/strong&gt;
Si alguien busca “mejor laptop ligera para estudiantes universitarios menos de 800 euros”, quiere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recomendaciones específicas de productos&lt;/li&gt;
&lt;li&gt;Información de rango de precios&lt;/li&gt;
&lt;li&gt;Caracteristicas específicas para estudiantes&lt;/li&gt;
&lt;li&gt;Comparación de opciones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Proporciona Respuestas Completas&lt;/strong&gt;
No solo menciones la palabra clave: responde todo lo relacionado con ella:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Por que existe esta necesidad específica&lt;/li&gt;
&lt;li&gt;Que factores considerar&lt;/li&gt;
&lt;li&gt;Recomendaciones específicas&lt;/li&gt;
&lt;li&gt;Errores comunes a evitar&lt;/li&gt;
&lt;li&gt;Como implementar soluciones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Usa Lenguaje Natural&lt;/strong&gt;
Escribe como hablarías con un clientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa las frases exactas que la gente busca&lt;/li&gt;
&lt;li&gt;Incluye variaciones y sinonimos&lt;/li&gt;
&lt;li&gt;Aborda preguntas relacionadas&lt;/li&gt;
&lt;li&gt;Usa ejemplos e historias&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;estrategia-2-construir-autoridad-tematica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-2-construir-autoridad-tematica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 2: Construir Autoridad Tematica&lt;/h2&gt;
&lt;h3 id=&quot;que-es-la-autoridad-tematica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-la-autoridad-tematica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es la Autoridad Tematica?&lt;/h3&gt;
&lt;p&gt;Autoridad temática significa que Google reconoce tu sitio como un recurso experto en un tema específico. Lo logras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cubriendo cada aspecto de tu tema&lt;/li&gt;
&lt;li&gt;Creando contenido que responda cada posible pregunta&lt;/li&gt;
&lt;li&gt;Vinculando contenido relacionado estrategicamente&lt;/li&gt;
&lt;li&gt;Demostrando profundidad de conocimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-modelo-pilar-cluster&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-modelo-pilar-cluster&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Modelo Pilar-Cluster&lt;/h3&gt;
&lt;p&gt;Estructura tu contenido usando el enfoque pilar-cluster:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Página Pilar&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guia completa del tema principal (3000+ palabras)&lt;/li&gt;
&lt;li&gt;Cobertura amplia de todos los subtemas&lt;/li&gt;
&lt;li&gt;Enlaces a todo el contenido cluster&lt;/li&gt;
&lt;li&gt;Objetivo: Palabra clave principal amplia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contenido Cluster&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5-15 artículos sobre subtemas específicos (1500+ palabras cada uno)&lt;/li&gt;
&lt;li&gt;Inmersion profunda en aspectos individuales&lt;/li&gt;
&lt;li&gt;Enlace de vuelta a la página pilar&lt;/li&gt;
&lt;li&gt;Objetivo: Variaciones long-tail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de Estructura:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PILAR: &quot;Guia Completa de Jardineria Organica&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Cluster: &quot;Mejores Verduras para Jardineros Principiantes&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Cluster: &quot;Como Empezar a Compostar en Casa&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Cluster: &quot;Metodos Naturales de Control de Plagas&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Cluster: &quot;Calendario de Siembra Estacional&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Cluster: &quot;Construccion de Huertos Elevados&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Cluster: &quot;Sistemas de Riego para Jardines Organicos&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;guia-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de Implementación&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Mapeo de Temas&lt;/strong&gt;
Piensa en cada posible subtema relacionado con tu tema principal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas de principiantes&lt;/li&gt;
&lt;li&gt;Técnicas intermedias&lt;/li&gt;
&lt;li&gt;Estrategias avanzadas&lt;/li&gt;
&lt;li&gt;Problemás comunes&lt;/li&gt;
&lt;li&gt;Recomendaciones de herramientas&lt;/li&gt;
&lt;li&gt;Casos de estudio&lt;/li&gt;
&lt;li&gt;Errores a evitar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Calendario de Contenido&lt;/strong&gt;
Crea un cronograma de publicación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Semana 1: Página pilar&lt;/li&gt;
&lt;li&gt;Semanas 2-6: Contenido cluster (1 por semana)&lt;/li&gt;
&lt;li&gt;Semanas 7+: Contenido de soporte&lt;/li&gt;
&lt;li&gt;Continuo: Actualizaciones y expansiones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Estrategia de Enlaces Internos&lt;/strong&gt;
Cada pieza de contenido deberia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enlazar a la página pilar&lt;/li&gt;
&lt;li&gt;Enlazar a 2-3 artículos cluster relacionados&lt;/li&gt;
&lt;li&gt;Usar texto ancla descriptivo&lt;/li&gt;
&lt;li&gt;Crear recorridos logicos del usuario&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Funcion WordPress para mostrar contenido cluster relacionado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; display_cluster_navigation&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $pillar_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pillar_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cluster_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;meta_key&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;pillar_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;meta_value&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $pillar_id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;post__not_in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [$post_id],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($cluster_posts) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div class=&quot;cluster-navigation&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;h4&gt;Sigue Aprendiendo&amp;#x3C;/h4&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;ul&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($cluster_posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;li&gt;&amp;#x3C;a href=&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_permalink&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/a&gt;&amp;#x3C;/li&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/ul&gt;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;estrategia-3-dominio-del-seo-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-3-dominio-del-seo-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 3: Dominio del SEO Local&lt;/h2&gt;
&lt;h3 id=&quot;por-que-el-seo-local-es-tu-arma-secreta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-seo-local-es-tu-arma-secreta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por Que el SEO Local es Tu Arma Secreta&lt;/h3&gt;
&lt;p&gt;Para negocios que sirven areas geograficas específicas, el SEO local nivela el campo de juego:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los competidores nacionales a menudo ignoran la optimización local&lt;/li&gt;
&lt;li&gt;Las búsquedas “cerca de mi” han explotado (crecido 150%+ desde 2020)&lt;/li&gt;
&lt;li&gt;Google prioriza resultados locales para consultas locales&lt;/li&gt;
&lt;li&gt;Altas tasas de conversión (28% de las búsquedas locales resultan en compras)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-del-perfil-de-empresa-de-google&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-perfil-de-empresa-de-google&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del Perfil de Empresa de Google&lt;/h3&gt;
&lt;p&gt;Tu Perfil de Empresa de Google es a menudo más importante que tu sitio web para la búsqueda local:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Completa Cada Campo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nombre del negocio (coincidencia exacta con el mundo real)&lt;/li&gt;
&lt;li&gt;Categorías (primaria + secundarias)&lt;/li&gt;
&lt;li&gt;Descripción (750 caracteres con palabras clave)&lt;/li&gt;
&lt;li&gt;Horarios (incluyendo horarios especiales)&lt;/li&gt;
&lt;li&gt;Servicios (lista detallada)&lt;/li&gt;
&lt;li&gt;Atributos (todas las opciones relevantes)&lt;/li&gt;
&lt;li&gt;Fotos (20+ imágenes de alta calidad)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Actividad Regular:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Posts semanales en Google&lt;/li&gt;
&lt;li&gt;Actualizaciones mensuales de fotos&lt;/li&gt;
&lt;li&gt;Respuestas diarias a resenas&lt;/li&gt;
&lt;li&gt;Monitoreo regular de preguntas y respuestas&lt;/li&gt;
&lt;li&gt;Actualizaciones de servicios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Gestión de Resenas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solicitar resenas de clientes satisfechos&lt;/li&gt;
&lt;li&gt;Responder a cada resena en 24 horas&lt;/li&gt;
&lt;li&gt;Usar palabras clave naturalmente en las respuestas&lt;/li&gt;
&lt;li&gt;Abordar resenas negativas profesionalmente&lt;/li&gt;
&lt;li&gt;Mostrar resenas en tu sitio web&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-contenido-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-contenido-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de Contenido Local&lt;/h3&gt;
&lt;p&gt;Crea contenido que demuestre presencia local:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Guias Específicas por Area&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Mejor [servicio] en [barrio]”&lt;/li&gt;
&lt;li&gt;“Guia de [actividad] para visitantes de [ciudad]”&lt;/li&gt;
&lt;li&gt;“Guia local de [tema] en [area]”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Participacion Comunitaria&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Patrocinar eventos locales y escribir sobre ellos&lt;/li&gt;
&lt;li&gt;Asociarse con otros negocios locales&lt;/li&gt;
&lt;li&gt;Presentar historias de clientes locales&lt;/li&gt;
&lt;li&gt;Participar en iniciativas comunitarias&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Páginas de Destino Locales&lt;/strong&gt;
Crea páginas dedicadas para cada area que sirves:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contenido único para cada ubicacion&lt;/li&gt;
&lt;li&gt;Puntos de referencia y referencias locales&lt;/li&gt;
&lt;li&gt;Testimonios específicos del area&lt;/li&gt;
&lt;li&gt;Imágenes personalizadas de esa area&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;estrategia-4-e-e-a-t-para-sitios-pequeños&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-4-e-e-a-t-para-sitios-pequeños&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia 4: E-E-A-T para Sitios Pequeños&lt;/h2&gt;
&lt;h3 id=&quot;construyendo-señales-de-experiencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construyendo-señales-de-experiencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construyendo Señales de Experiencia&lt;/h3&gt;
&lt;p&gt;Muestra que realmente has hecho lo que ensenas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Casos de Estudio:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escenarios antes/despues&lt;/li&gt;
&lt;li&gt;Resultados y metricas específicos&lt;/li&gt;
&lt;li&gt;Cronograma de implementación&lt;/li&gt;
&lt;li&gt;Desafios enfrentados y superados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contenido Detras de Escenas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documentación de procesos&lt;/li&gt;
&lt;li&gt;Tours de herramientas y configuración&lt;/li&gt;
&lt;li&gt;Contenido del dia a dia&lt;/li&gt;
&lt;li&gt;Actualizaciones de trabajo en progreso&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;demostrando-experiencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#demostrando-experiencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Demostrando Experiencia&lt;/h3&gt;
&lt;p&gt;Establece conocimiento profundo a través de:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guias Completas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cubrir temas exhaustivamente&lt;/li&gt;
&lt;li&gt;Incluir técnicas avanzadas&lt;/li&gt;
&lt;li&gt;Proporcionar pasos accionables&lt;/li&gt;
&lt;li&gt;Actualizar con la información más reciente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Profundidad Técnica:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explicar como funcionan las cosas&lt;/li&gt;
&lt;li&gt;Comparar diferentes enfoques&lt;/li&gt;
&lt;li&gt;Discutir casos limite&lt;/li&gt;
&lt;li&gt;Proporcionar ayuda para solución de problemas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estableciendo-autoridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estableciendo-autoridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estableciendo Autoridad&lt;/h3&gt;
&lt;p&gt;Construye autoridad a través de:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contribuciones de Contenido:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Posts invitados en sitios de la industria&lt;/li&gt;
&lt;li&gt;Citas de expertos en artículos&lt;/li&gt;
&lt;li&gt;Entrevistas en podcasts&lt;/li&gt;
&lt;li&gt;Participaciones como ponente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Reconocimiento:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Premios de la industria&lt;/li&gt;
&lt;li&gt;Certificaciones&lt;/li&gt;
&lt;li&gt;Menciones en medios&lt;/li&gt;
&lt;li&gt;Membresías profesionales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;creando-confiabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#creando-confiabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Creando Confiabilidad&lt;/h3&gt;
&lt;p&gt;Construye confianza con:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transparencia:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precios y terminos claros&lt;/li&gt;
&lt;li&gt;Honestidad sobre limitaciones&lt;/li&gt;
&lt;li&gt;Testimonios reales de clientes&lt;/li&gt;
&lt;li&gt;Páginas sobre nosotros detalladas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Señales de Seguridad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Certificado SSL&lt;/li&gt;
&lt;li&gt;Politica de privacidad&lt;/li&gt;
&lt;li&gt;Terminos de servicio&lt;/li&gt;
&lt;li&gt;Información de contacto&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;seo-técnico-para-sitios-pequeños&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-técnico-para-sitios-pequeños&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO Técnico para Sitios Pequeños&lt;/h2&gt;
&lt;h3 id=&quot;la-regla-8020&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-regla-8020&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La Regla 80/20&lt;/h3&gt;
&lt;p&gt;Enfocate en cambios técnicos de alto impacto:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Críticos (Haz Primero):&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Diseño compatible con móviles&lt;/li&gt;
&lt;li&gt;Velocidad de carga rápida (menos de 3 segundos)&lt;/li&gt;
&lt;li&gt;Seguridad HTTPS&lt;/li&gt;
&lt;li&gt;Mapa del sitio XML&lt;/li&gt;
&lt;li&gt;Etiquetas de título y meta descripciones apropiadas&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Importantes (Haz Despues):&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Marcado schema&lt;/li&gt;
&lt;li&gt;Optimización de imágenes&lt;/li&gt;
&lt;li&gt;Estructura de enlaces internos&lt;/li&gt;
&lt;li&gt;Estructura de URLs&lt;/li&gt;
&lt;li&gt;Jerarquía de encabezados&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Deseables:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tipos avanzados de schema&lt;/li&gt;
&lt;li&gt;Implementación AMP&lt;/li&gt;
&lt;li&gt;Funciones de aplicación web progresiva&lt;/li&gt;
&lt;li&gt;Cache avanzado&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;victorias-rapidas-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#victorias-rapidas-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Victorias Rapidas para WordPress&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar a functions.php para mejoras rápidas de SEO&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 1. Habilitar compresion gzip&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; enable_gzip&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;ob_gzhandler&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;enable_gzip&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// 2. Agregar marcado schema para NegocioLocal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; add_local_schema&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_front_page&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $schema &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@context&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;https://schema.org&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;LocalBusiness&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_bloginfo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;telephone&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;business_phone&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;address&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;@type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;PostalAddress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;streetAddress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;business_street&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;addressLocality&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;business_city&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;postalCode&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;business_postal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;addressCountry&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_option&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;business_country&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;add_local_schema&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;midiendo-tu-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#midiendo-tu-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Midiendo Tu Éxito&lt;/h2&gt;
&lt;h3 id=&quot;indicadores-clave-de-rendimiento-kpis&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-clave-de-rendimiento-kpis&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores Clave de Rendimiento (KPIs)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Metricas de Tráfico:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tráfico de búsqueda organica (crecimiento mes a mes)&lt;/li&gt;
&lt;li&gt;Tráfico organico de búsquedas locales&lt;/li&gt;
&lt;li&gt;Visitantes nuevos vs recurrentes&lt;/li&gt;
&lt;li&gt;Páginas por sesion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Metricas de Posicionamiento:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Posición promedio para palabras clave objetivo&lt;/li&gt;
&lt;li&gt;Palabras clave en el top 3&lt;/li&gt;
&lt;li&gt;Palabras clave en primera página&lt;/li&gt;
&lt;li&gt;Posiciones en el paquete local&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Metricas de Conversión:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Envios de formulario de contacto desde organico&lt;/li&gt;
&lt;li&gt;Llamadas telefonicas desde Perfil de Empresa de Google&lt;/li&gt;
&lt;li&gt;Solicitudes de direcciones&lt;/li&gt;
&lt;li&gt;Conversiones del sitio web&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;herramientas-gratuitas-para-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-gratuitas-para-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas Gratuitas para Monitoreo&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Herramientas Esenciales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Search Console&lt;/strong&gt;: Seguimiento de posiciones y clics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Analytics 4&lt;/strong&gt;: Monitoreo de tráfico y comportamiento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Business Profile Insights&lt;/strong&gt;: Rendimiento local&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PageSpeed Insights&lt;/strong&gt;: Rendimiento técnico&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Configuración de Seguimiento:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Conectar Search Console a Analytics&lt;/li&gt;
&lt;li&gt;Configurar objetivos de conversión&lt;/li&gt;
&lt;li&gt;Crear panel de informes mensuales&lt;/li&gt;
&lt;li&gt;Seguir posiciones de competidores&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;tu-plan-de-accion-proximos-90-dias&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tu-plan-de-accion-proximos-90-dias&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tu Plan de Accion: Proximos 90 Dias&lt;/h2&gt;
&lt;h3 id=&quot;mes-1-fundamentos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-1-fundamentos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 1: Fundamentos&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Completar auditoria SEO técnica&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar Perfil de Empresa de Google&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Crear esquema de página pilar&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Comenzar investigación de palabras clave long-tail&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Optimizar las 5 páginas principales existentes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mes-2-creación-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-2-creación-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 2: Creación de Contenido&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Publicar página pilar&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Crear 4 artículos cluster&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Optimizar Perfil de Empresa de Google&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Construir citas locales&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Iniciar campana de generación de resenas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mes-3-construccion-de-autoridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-3-construccion-de-autoridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 3: Construccion de Autoridad&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Completar 8 artículos cluster&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Implementar enlaces internos&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Crear 2 activos enlazables&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Alcance para posts invitados&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Desarrollo de asociaciones locales&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion-tu-ventaja-competitiva&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-tu-ventaja-competitiva&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Tu Ventaja Competitiva&lt;/h2&gt;
&lt;p&gt;Los sitios pequeños no necesitan gastar más que los gigantes: necesitan pensar mejor que ellos. Enfocandote en:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Palabras clave long-tail&lt;/strong&gt; que ignoran&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad temática&lt;/strong&gt; que no pueden igualar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO local&lt;/strong&gt; que no priorizan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Señales E-E-A-T&lt;/strong&gt; que construyen confianza&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ejecucion agil&lt;/strong&gt; que no pueden replicar&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;…puedes competir y ganar en los resultados de búsqueda.&lt;/p&gt;
&lt;p&gt;Recuerda: es mejor ser un pez grande en un estanque pequeño que un pez pequeño en un oceano grande. Elige tu nicho, dominalo y expandete desde ahi.&lt;/p&gt;
&lt;p&gt;El SEO es un maraton, no un sprint. La consistencia vence a la intensidad. Comienza hoy con una estrategia, dominala y construye desde ahi.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Cual es tu mayor desafio al competir con sitios más grandes? Comparte en los comentarios!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y GEO&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category domain="tag">long tail</category><category domain="tag">topical authority</category><category domain="tag">local seo</category><enclosure url="https://wppoland.com/images/og/jak-osiagnac-wyzsze-pozycje-w-wynikach-wyszukiwania-google-dla-malych-stron.jpg" type="image/jpeg"/></item><item><title>Ocultar la versión de WordPress y endurecer las cabeceras HTTP</title><link>https://wppoland.com/es/remove-wordpress-version-html-security/</link><guid isPermaLink="true">https://wppoland.com/es/remove-wordpress-version-html-security/</guid><description>WordPress muestra su versión por defecto, invitando a los hackers. Aprende como eliminar la etiqueta generator, las versiones de assets e implementar Cabeceras de Seguridad (HSTS, CSP).</description><pubDate>Tue, 11 Oct 2011 12:00:19 GMT</pubDate><content:encoded>&lt;p&gt;En el mundo de la ciberseguridad, existe un concepto conocido como &lt;strong&gt;“Reconocimiento”&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Antes de que un hacker (o un bot automatizado) ataque tu sitio, lo escanean. Buscan fruta al alcance de la mano. Si tu sitio web anuncia orgullosamente: &lt;em&gt;“Hola! Estoy ejecutando WordPress 5.8.1!”&lt;/em&gt;, practicamente estas desplegando la alfombra roja para ellos. Porque saben exactamente que vulnerabilidades existian en la versión 5.8.1.&lt;/p&gt;
&lt;p&gt;En esta guía completa de seguridad, iremos más alla de los simples plugins de “Ocultar Versión”. Nos sumergiremos en &lt;strong&gt;Seguridad por Oscuridad&lt;/strong&gt; (y por que es solo la primera capa de defensa), y luego implementaremos endurecimiento real y robusto a nivel de servidor usando Cabeceras HTTP, protección de login y monitoreo automatizado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-1-entendiendo-seguridad-por-oscuridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-entendiendo-seguridad-por-oscuridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: Entendiendo “Seguridad por Oscuridad”&lt;/h2&gt;
&lt;h3 id=&quot;que-es-seguridad-por-oscuridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-seguridad-por-oscuridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es Seguridad por Oscuridad?&lt;/h3&gt;
&lt;p&gt;La seguridad por oscuridad es la práctica de ocultar información sobre tu sistema para dificultar que los atacantes encuentren vulnerabilidades. Si bien es controvertida en circulos de seguridad, cuando se combina con medidas de seguridad adecuadas, agrega una capa extra de defensa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El Debate:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Los críticos dicen&lt;/strong&gt;: “Un sistema deberia ser seguro incluso si los atacantes saben todo sobre el”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los practicantes dicen&lt;/strong&gt;: “Por que facilitarselo a los atacantes transmitiendo tus vulnerabilidades?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;La Verdad&lt;/strong&gt;: La seguridad por oscuridad &lt;strong&gt;no es suficiente por si sola&lt;/strong&gt;, pero es una &lt;strong&gt;primera capa&lt;/strong&gt; valiosa de defensa. Piensa en ella como quitar el felpudo de bienvenida de tu puerta principal: no detendra a un ladron determinado, pero podria hacer que los oportunistas se muevan a un objetivo más fácil.&lt;/p&gt;
&lt;h3 id=&quot;por-que-importa-ocultar-la-versión-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-importa-ocultar-la-versión-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por Que Importa Ocultar la Versión de WordPress&lt;/h3&gt;
&lt;p&gt;Las vulnerabilidades del core de WordPress estan documentadas publicamente. Cuando se lanza un parche de seguridad, el registro de cambios declara explicitamente que versiones estan afectadas. Al mostrar tu número de versión, esencialmente les dices a los atacantes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Que vulnerabilidades conocidas podrian existir en tu sitio&lt;/li&gt;
&lt;li&gt;Si has aplicado los últimos parches de seguridad&lt;/li&gt;
&lt;li&gt;Que código de exploit específico podria funcionar contra ti&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Puntos Comunes de Fuga de Versión:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Etiqueta meta generator en HTML&lt;/li&gt;
&lt;li&gt;Etiquetas generator en feeds RSS/Atom&lt;/li&gt;
&lt;li&gt;Query strings de scripts y estilos (&lt;code&gt;?ver=6.7.1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Archivo readme.html en el directorio raiz&lt;/li&gt;
&lt;li&gt;Respuestas de la REST API de WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-2-eliminando-la-información-de-versión-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-eliminando-la-información-de-versión-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: Eliminando la Información de Versión de WordPress&lt;/h2&gt;
&lt;h3 id=&quot;la-etiqueta-meta-generator&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-etiqueta-meta-generator&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La Etiqueta Meta Generator&lt;/h3&gt;
&lt;p&gt;Por defecto, WordPress inyecta una etiqueta meta en el &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; de tu HTML:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;generator&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WordPress 6.7.1&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto es inutil para SEO y peligroso para la seguridad.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-fragmento-php&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-fragmento-php&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La Solución (fragmento PHP)&lt;/h3&gt;
&lt;p&gt;No instales un plugin pesado solo para esto. Agrega este código limpio a tu &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Eliminar Version de WordPress del Head y Feeds&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rss2_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;commentsrss2_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wlwmanifest_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Windows Live Writer (Heredado)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rsd_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Really Simple Discovery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Eliminar Version de Scripts y Estilos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_remove_versión_scripts_styles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($src) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($src, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ver=&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; remove_query_arg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ver&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $src);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $src;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;style_loader_src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_versión_scripts_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;script_loader_src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_remove_versión_scripts_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Eliminar Version de Feeds RSS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_empty_string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Por que importa esto:&lt;/strong&gt;
Rompe la lógica de los scrapers simples de “Script Kiddie”. Si un bot esta escaneando 1 millon de sitios buscando “WordPress 5.X”, tu sitio devolvera una mirada en blanco. El bot sigue adelante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota Importante:&lt;/strong&gt; Esto es &lt;strong&gt;Seguridad por Oscuridad&lt;/strong&gt;. Es la primera capa, no la única. Un atacante determinado aun puede identificar WordPress a través de otros métodos (endpoints de REST API, estructura de archivos, etc.).&lt;/p&gt;
&lt;h3 id=&quot;métodos-adicionales-de-eliminacion-de-versión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métodos-adicionales-de-eliminacion-de-versión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métodos Adicionales de Eliminacion de Versión&lt;/h3&gt;
&lt;h4 id=&quot;eliminar-de-rest-api&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminar-de-rest-api&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminar de REST API&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Eliminar versión de WordPress de cabeceras REST API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_api_init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_pre_serve_request&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_send_cors_headers&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_pre_serve_request&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($value) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;X-Powered-By: WordPress&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;eliminar-archivos-readme-y-licencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminar-archivos-readme-y-licencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminar Archivos Readme y Licencia&lt;/h4&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Bloquear acceso a readme.html y license.txt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_block_readme_access&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REQUEST_URI&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;readme.html&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        strpos&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REQUEST_URI&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;license.txt&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Acceso denegado&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;403 Prohibido&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;response&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 403&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_block_readme_access&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O via &lt;code&gt;.htaccess&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;^(readme\.html|license\.txt)$&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Order&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; deny,allow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Deny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;FilesMatch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-3-cabeceras-de-seguridad-http-la-defensa-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-cabeceras-de-seguridad-http-la-defensa-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Cabeceras de Seguridad HTTP (La Defensa Real)&lt;/h2&gt;
&lt;p&gt;Ocultar la versión es como quitar el número de la casa de tu puerta. Ayuda, pero no cierra la puerta con llave. &lt;strong&gt;Las Cabeceras de Seguridad HTTP&lt;/strong&gt; son los cerrojos.&lt;/p&gt;
&lt;p&gt;En 2026, los navegadores son estrictos. Si no envias las cabeceras correctas, eres vulnerable a XSS (Cross-Site Scripting), Clickjacking y fugas de datos.&lt;/p&gt;
&lt;h3 id=&quot;1-x-frame-options-anti-clickjacking&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-x-frame-options-anti-clickjacking&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. X-Frame-Options (Anti-Clickjacking)&lt;/h3&gt;
&lt;p&gt;Esta cabecera le dice al navegador: “No permitas que nadie ponga mi sitio dentro de un &lt;code&gt;&amp;#x3C;iframe&gt;&lt;/code&gt;.” Esto previene que los hackers creen un sitio falso que cargue tu página de banco/login en un marco invisible y capture tus clics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación (.htaccess):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always append X-Frame-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; SAMEORIGIN&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Nginx:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;add_header &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;X-Frame-Options &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;SAMEORIGIN&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; always;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-x-content-type-options&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-x-content-type-options&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. X-Content-Type-Options&lt;/h3&gt;
&lt;p&gt;Previene el “MIME Sniffing”. Si un hacker sube un archivo &lt;code&gt;.jpg&lt;/code&gt; que realmente contiene JavaScript ejecutable, esta cabecera le dice al navegador: “El servidor dijo que es una imagen, así que tratala como una imagen, no la ejecutes.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; X-Content-Type-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Options&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; nosniff&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-strict-transport-security-hsts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-strict-transport-security-hsts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Strict-Transport-Security (HSTS)&lt;/h3&gt;
&lt;p&gt;Esto es crítico para SSL. Fuerza al navegador a &lt;strong&gt;siempre&lt;/strong&gt; usar HTTPS, incluso si el usuario escribe &lt;code&gt;http://&lt;/code&gt;. Previene ataques “Man-in-the-Middle” en Wi-Fi público.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación (Solo haz esto si tienes SSL válido!):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Strict-Transport-Security &quot;max-age=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;31536000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; includeSubDomains; preload&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Que significan los parametros:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;max-age=31536000&lt;/code&gt;: El navegador recuerda por 1 año&lt;/li&gt;
&lt;li&gt;&lt;code&gt;includeSubDomains&lt;/code&gt;: Aplicar a todos los subdominios&lt;/li&gt;
&lt;li&gt;&lt;code&gt;preload&lt;/code&gt;: Enviar a las listas de precarga del navegador&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advertencia&lt;/strong&gt;: Una vez que configures esta cabecera, los navegadores se negaran a conectar via HTTP durante la duracion específicada. Asegurate de que HTTPS funcióne perfectamente antes de implementar HSTS.&lt;/p&gt;
&lt;h3 id=&quot;4-content-security-policy-csp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-content-security-policy-csp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Content-Security-Policy (CSP)&lt;/h3&gt;
&lt;p&gt;Esta es la cabecera más poderosa. Le dice al navegador: “Solo ejecuta scripts de estas fuentes confiables.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementación Básica:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Content-Security-Policy &quot;default-src &apos;self&apos;; script-src &apos;self&apos; &apos;unsafe-inline&apos; https://www.google-analytics.com; style-src &apos;self&apos; &apos;unsafe-inline&apos;; img-src &apos;self&apos; data: https:; font-src &apos;self&apos; data:;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Desglose:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;default-src &apos;self&apos;&lt;/code&gt;: Por defecto, solo cargar recursos de tu propio dominio&lt;/li&gt;
&lt;li&gt;&lt;code&gt;script-src &apos;self&apos; &apos;unsafe-inline&apos;&lt;/code&gt;: Permitir scripts de tu dominio y scripts inline (necesario para WordPress)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;img-src &apos;self&apos; data: https:&lt;/code&gt;: Permitir imágenes de tu dominio, URIs de datos y cualquier fuente HTTPS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advertencia:&lt;/strong&gt; CSP puede romper tu sitio si se configura mal. Prueba primero en modo “report-only”:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Content-Security-Policy-Report-Only &quot;default-src &apos;self&apos;; report-uri /csp-report.php&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;5-referrer-policy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-referrer-policy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Referrer-Policy&lt;/h3&gt;
&lt;p&gt;Controla cuanta información se envia cuando un usuario hace clic en un enlace a otro sitio.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Referrer-Policy &quot;strict-origin-when-cross-origin&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;6-permissions-policy-antes-feature-policy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-permissions-policy-antes-feature-policy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Permissions-Policy (antes Feature-Policy)&lt;/h3&gt;
&lt;p&gt;Deshabilita funciones del navegador que no usas (camara, microfono, geolocalización).&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_headers.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  Header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; Permissions-Policy &quot;camera=(), microphone=(), geolocation=()&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-4-deshabilitar-xml-rpc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-deshabilitar-xml-rpc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Deshabilitar XML-RPC&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;xmlrpc.php&lt;/code&gt; es un archivo API heredado. En la era moderna de REST API, es obsoleto. Sin embargo, es el objetivo #1 de ataques de Fuerza Bruta porque permite a un hacker probar 500 contrasenas en una sola solicitud HTTP (el método “multicall”).&lt;/p&gt;
&lt;h3 id=&quot;como-eliminarlo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-eliminarlo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como eliminarlo:&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Método 1: .htaccess&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; xmlrpc.php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  order deny,allow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Files&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Método 2: functions.php&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;xmlrpc_enabled&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Método 3: Nginx&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; /xmlrpc.php &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    access_log &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;off&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    log_not_found &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;off&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Excepcion:&lt;/strong&gt; Si usas Jetpack o la app móvil de WordPress, necesitas XML-RPC. En ese caso, bloquea solo los métodos peligrosos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-5-endurecimiento-del-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-endurecimiento-del-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Endurecimiento del Login&lt;/h2&gt;
&lt;p&gt;Los endpoints &lt;code&gt;/wp-admin/&lt;/code&gt; y &lt;code&gt;/wp-login.php&lt;/code&gt; estan bajo ataque constante. Aqui esta como protegerlos.&lt;/p&gt;
&lt;h3 id=&quot;1-limitar-intentos-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-limitar-intentos-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Limitar Intentos de Login&lt;/h3&gt;
&lt;p&gt;Por defecto, WordPress permite intentos de login ilimitados. Un bot puede probar 10,000 contrasenas.&lt;/p&gt;
&lt;p&gt;Agrega este código:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_limit_login_attempts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $ip &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REMOTE_ADDR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_attempts_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $ip);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Demasiados intentos de login. Intenta de nuevo en 15 minutos.&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_login_failed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $ip &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_SERVER[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;REMOTE_ADDR&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_attempts_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $ip) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;login_attempts_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $ip, $attempts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; MINUTE_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-deshabilitar-enumeracion-de-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-deshabilitar-enumeracion-de-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Deshabilitar Enumeracion de Usuarios&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar enumeracion de usuarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bloquear endpoint de usuarios de REST API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_endpoints&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users/(?P&amp;#x3C;id&gt;[\d]+)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users/(?P&amp;#x3C;id&gt;[\d]+)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $endpoints;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-6-seguridad-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-seguridad-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Seguridad de Base de Datos&lt;/h2&gt;
&lt;h3 id=&quot;1-cambiar-prefijo-de-tablas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-cambiar-prefijo-de-tablas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Cambiar Prefijo de Tablas&lt;/h3&gt;
&lt;p&gt;Por defecto, WordPress usa &lt;code&gt;wp_&lt;/code&gt; como prefijo de tablas. Esto facilita la inyeccion SQL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Durante la Instalación:&lt;/strong&gt; Establece un prefijo personalizado como &lt;code&gt;xyz_&lt;/code&gt; o &lt;code&gt;prod_&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;2-deshabilitar-edicion-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-deshabilitar-edicion-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Deshabilitar Edicion de Archivos&lt;/h3&gt;
&lt;p&gt;WordPress permite a los administradores editar archivos de temas/plugins desde el panel. Si un hacker obtiene acceso de admin, puede inyectar malware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deshabilitar en wp-config.php:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-asegurar-wp-configphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-asegurar-wp-configphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Asegurar wp-config.php&lt;/h3&gt;
&lt;p&gt;Este archivo contiene tus credenciales de base de datos. Protegelo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Establecer permisos estrictos:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-config.php&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-7-permisos-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-permisos-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Permisos de Archivos&lt;/h2&gt;
&lt;h3 id=&quot;las-reglas-de-oro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-reglas-de-oro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las Reglas de Oro:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Directorios:&lt;/strong&gt; &lt;code&gt;755&lt;/code&gt; (Lectura/Ejecucion para todos, Escritura solo para el propietario)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archivos:&lt;/strong&gt; &lt;code&gt;644&lt;/code&gt; (Lectura para todos, Escritura solo para el propietario)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;wp-config.php:&lt;/strong&gt; &lt;code&gt;400&lt;/code&gt; o &lt;code&gt;440&lt;/code&gt; (Solo lectura para propietario/servidor)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;establecerlos-todos-de-una-vez&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#establecerlos-todos-de-una-vez&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Establecerlos todos de una vez:&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /ruta/a/wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 755&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /ruta/a/wordpress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 644&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-config.php&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-8-monitoreo-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-8-monitoreo-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 8: Monitoreo de seguridad&lt;/h2&gt;
&lt;p&gt;No recomendamos instalar plugins de seguridad. Preferimos monitoreo a nivel de servidor (análisis de logs, fail2ban, WAF del hosting), respaldos regulares y endurecimiento (contrasenas fuertes, actualizaciones, intentos de login limitados). La seguridad se construye a través de la configuración y medidas del servidor, no plugins.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parte-9-lista-de-verificación-completa-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-9-lista-de-verificación-completa-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 9: Lista de Verificación Completa de Seguridad&lt;/h2&gt;
&lt;h3 id=&quot;acciones-inmediatas-haz-hoy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acciones-inmediatas-haz-hoy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acciones Inmediatas (Haz Hoy)&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Eliminar versión de WordPress de HTML/feeds&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Eliminar strings de versión de CSS/JS&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar cabecera X-Frame-Options&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar cabecera X-Content-Type-Options&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar Strict-Transport-Security (HSTS) si usas SSL&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Deshabilitar XML-RPC (si no se necesita)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Instalar limitacion de intentos de login&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Cambiar nombre de usuario “admin” por defecto&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;acciones-a-corto-plazo-esta-semana&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acciones-a-corto-plazo-esta-semana&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acciones a Corto Plazo (Esta Semana)&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Implementar Content-Security-Policy&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar Referrer-Policy&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Habilitar Autenticación de Dos Factores&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Cambiar URL de login&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Deshabilitar enumeracion de usuarios&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Establecer permisos de archivos correctos (755/644)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;acciones-a-largo-plazo-este-mes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acciones-a-largo-plazo-este-mes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acciones a Largo Plazo (Este Mes)&lt;/h3&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Cambiar prefijo de tablas de base de datos (si es posible)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Deshabilitar edicion de archivos en el panel&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Asegurar wp-config.php (permisos 400)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar monitoreo de seguridad a nivel de servidor&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Configurar respaldos automatizados&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Programar escaneos regulares de seguridad&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;resumen-el-enfoque-de-seguridad-por-capas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-el-enfoque-de-seguridad-por-capas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen: El Enfoque de Seguridad por Capas&lt;/h2&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;La seguridad no es un producto; es un proceso.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ocultar información&lt;/strong&gt; (eliminar strings de versión) - Seguridad por oscuridad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Endurecer conexión&lt;/strong&gt; (HSTS, Cabeceras, CSP) - Protección a nivel de navegador&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cerrar puertas&lt;/strong&gt; (Deshabilitar XML-RPC, limitar logins) - Reducir superficie de ataque&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloquear archivos&lt;/strong&gt; (Permisos, deshabilitar edicion) - Contener brechas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorear&lt;/strong&gt; (Logs del servidor, monitoreo) - Detectar y responder&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Haz esto, y seras más seguro que el 99% de los sitios WordPress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recuerda:&lt;/strong&gt; La seguridad es por capas. Ninguna medida individual es perfecta, pero juntas crean una fortaleza. Comienza con lo básico (actualizaciones, contrasenas fuertes), agrega oscuridad (ocultar versión), luego implementa endurecimiento (cabeceras, permisos), y finalmente monitoreo.&lt;/p&gt;
&lt;p&gt;El objetivo no es ser inhackeable, eso es imposible. El objetivo es ser un objetivo más dificil que el siguiente sitio, causando que los atacantes se muevan a una presa más fácil.&lt;/p&gt;</content:encoded><category>security</category><category>maintenance</category><category domain="tag">hardening</category><category domain="tag">php</category><category domain="tag">headers</category><category domain="tag">security by obscurity</category><category domain="tag">wordpress-security</category><category domain="tag">http-headers</category><category domain="tag">csp</category><category domain="tag">hsts</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Guia definitiva de seguridad de login en WordPress (2026): Detener ataques de fuerza bruta</title><link>https://wppoland.com/es/secure-wordpress-login-authentication/</link><guid isPermaLink="true">https://wppoland.com/es/secure-wordpress-login-authentication/</guid><description>Sigues usando &quot;admin&quot;? Te estan hackeando ahora mismo. La guía definitiva para asegurar la autenticación de WordPress: 2FA, Passkeys, Fail2Ban, Cloudflare Turnstile, monitoreo de login y procedimientos de respuesta a incidentes.</description><pubDate>Sun, 31 Jul 2011 21:44:59 GMT</pubDate><content:encoded>&lt;p&gt;La mayoria de incidentes “WordPress hackeado” que veo en clientes españoles no son zero-days. Son credential stuffing contra &lt;code&gt;admin&lt;/code&gt; con una password filtrada de un volcado de 2019, golpeando &lt;code&gt;/wp-login.php&lt;/code&gt; desde un pool rotativo de proxies residenciales. El propietario culpa a WordPress; la causa real es que la seguridad de login se trato como un único interruptor (“password fuerte”) en lugar de cuatro o cinco controles en capas. Hispasec y los reportes de attaque.es repiten el mismo patrón cada trimestre.&lt;/p&gt;
&lt;p&gt;Esta guía recorre las capas que configuro en sitios cliente reales: higiene de nombre de usuario, 2FA con escape WP-CLI funcional, rate-limiting en Cloudflare y servidor, y la ruta de recuperacion para el dia que alguien pierde el telefono o sube una application password a un repo público. Para sitios sujetos a la AEPD, la notificación de brecha en 72h del Art. 33 RGPD convierte cada uno de estos controles en una obligación documentada, no una recomendación.&lt;/p&gt;
&lt;h2 id=&quot;como-atacan-realmente-a-los-logins-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-atacan-realmente-a-los-logins-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como atacan realmente a los logins de WordPress&lt;/h2&gt;
&lt;p&gt;Tres patrones cubren casi todo lo que veo en logs de acceso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fuerza bruta sobre &lt;code&gt;/wp-login.php&lt;/code&gt;&lt;/strong&gt;: bots POST a wp-login.php con &lt;code&gt;log=admin&amp;#x26;pwd=...&lt;/code&gt;. Distribuido entre cientos de IPs, frecuentementé desde redes proxy residenciales como sucesores de 911.re. Los rate limits por IP unica no los detienen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Credential stuffing&lt;/strong&gt;: el mismo endpoint, pero las credenciales vienen de corpus públicos de brechas (las “Collection #1” a #5, RockYou2024). El nombre de usuario es el email o login filtrado. Se puede mitigar con un check contra haveibeenpwned al fijar la password.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Amplificación XML-RPC &lt;code&gt;system.multicall&lt;/code&gt;&lt;/strong&gt;: un POST a &lt;code&gt;/xmlrpc.php&lt;/code&gt; con un cuerpo &lt;code&gt;system.multicall&lt;/code&gt; permite probar cientos de passwords en una única petición HTTP, esquivando rate limits por petición. Si no usa la app movil de WP ni Jetpack, bloquee xmlrpc.php en el servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enumeracion de usuarios via REST API&lt;/strong&gt;: &lt;code&gt;?rest_route=/wp/v2/users&lt;/code&gt; y &lt;code&gt;/wp-json/wp/v2/users&lt;/code&gt; devuelven el &lt;code&gt;slug&lt;/code&gt; real de cada autor publicado. Ese slug es el login. Combinado con los volcados anteriores, el atacante ya tiene la mitad del par credencial.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los hosts españoles más serios (WP Engine ES, Raiola Networks) traen ModSecurity activo por defecto con reglas básicas anti-brute-force, pero ninguno de ellos cubre los cuatro vectores anteriores sin configuración adicional.&lt;/p&gt;
&lt;h2 id=&quot;parte-1-la-vulnerabilidad-admin-enumeracion-de-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-1-la-vulnerabilidad-admin-enumeracion-de-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 1: La Vulnerabilidad “admin” (Enumeracion de Usuarios)&lt;/h2&gt;
&lt;p&gt;Por que los hackers aman el nombre de usuario “admin”? Porque reduce su trabajo a la mitad.&lt;/p&gt;
&lt;p&gt;En un ataque de fuerza bruta, el atacante necesita adivinar dos cosas: el &lt;strong&gt;Nombre de usuario&lt;/strong&gt; y la &lt;strong&gt;Contrasena&lt;/strong&gt;. Si usas “admin”, les diste el 50% de las credenciales gratis. Por eso eliminar nombres de usuario por defecto es el primer y más crítico paso para asegurar tu login de WordPress.&lt;/p&gt;
&lt;h3 id=&quot;el-problema-del-id-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-del-id-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Problema del “ID 1”&lt;/h3&gt;
&lt;p&gt;Por defecto, el primer usuario creado en WordPress tiene el ID &lt;code&gt;1&lt;/code&gt;. Los hackers a menudo escanean &lt;code&gt;tu-sitio.com/?author=1&lt;/code&gt;. Si tu sitio redirige a &lt;code&gt;tu-sitio.com/author/admin/&lt;/code&gt;, acabas de revelar tu nombre de usuario a cada atacante que sabe donde mirar.&lt;/p&gt;
&lt;h3 id=&quot;la-solución-eliminacion-quirurgica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-solución-eliminacion-quirurgica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La Solución: Eliminacion Quirurgica&lt;/h3&gt;
&lt;p&gt;No puedes simplemente “renombrar” un nombre de usuario en WordPress. Debes realizar un transplante que preserve todo el contenido mientras eliminas la cuenta vulnerable.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Crear un Nuevo Comandante&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ve a &lt;em&gt;Usuarios -&gt; Anadir Nuevo&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Nombre de usuario: Algo oscuro (por ejemplo, &lt;code&gt;Aguila_Obsidiana_88&lt;/code&gt;). Evita usar tu nombre real, prefijo de email o cualquier cosa adivinable desde tu dominio.&lt;/li&gt;
&lt;li&gt;Email: Tu dirección de email segura.&lt;/li&gt;
&lt;li&gt;Rol: &lt;strong&gt;Administrador&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Genera una contrasena fuerte usando un gestor de contrasenas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Iniciar Sesion como el Nuevo Comandante&lt;/strong&gt;: Usa una ventana de navegador privada para asegurarte de no estar autenticado como el usuario antiguo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Eliminar al Recluta&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ve a &lt;em&gt;Usuarios&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Pasa el cursor sobre “admin” y haz clic en &lt;strong&gt;Eliminar&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PASO Crítico&lt;/strong&gt;: WordPress preguntara: &lt;em&gt;“Que deberia hacerse con el contenido de este usuario?”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Selecciona: &lt;strong&gt;“Atribuir todo el contenido a:”&lt;/strong&gt; -&gt; [Selecciona tu Nuevo Usuario].&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Confirmar&lt;/strong&gt;. “Admin” esta muerto. Larga vida a &lt;code&gt;Aguila_Obsidiana_88&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;protecciones-adicionales-contra-enumeracion-de-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#protecciones-adicionales-contra-enumeracion-de-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Protecciones Adicionales contra Enumeracion de Usuarios&lt;/h3&gt;
&lt;p&gt;Mas alla de eliminar el usuario admin, implementa estas medidas adicionales:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deshabilitar Archivos de Autor&lt;/strong&gt;: Si no necesitas páginas de autor, desactivalas via configuración del servidor o agregando esto a tu &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Deshabilitar archivos de autor para prevenir enumeracion de usuarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_author&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;home_url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Bloquear Enumeracion de Usuarios via REST API&lt;/strong&gt;: La REST API de WordPress expone datos de usuario por defecto. Bloquea el acceso no autorizado:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Bloquear enumeracion de usuarios via REST API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rest_endpoints&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users/(?P&amp;#x3C;id&gt;[\d]+)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;])) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        unset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($endpoints[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp/v2/users/(?P&amp;#x3C;id&gt;[\d]+)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $endpoints;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-2-2fa-y-el-problema-del-bloqueo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-2-2fa-y-el-problema-del-bloqueo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 2: 2FA y el problema del bloqueo&lt;/h2&gt;
&lt;p&gt;Una password sola es un único punto de fallo. Con 2FA, el atacante necesita la password más el segundo factor; con passkeys (más abajo) ya no hay un secreto compartido que filtrar.&lt;/p&gt;
&lt;p&gt;La parte que la mayoría de guías omiten es el modo de fallo: que pasa cuando el admin pierde el teléfono, abandona la empresa, o el secreto TOTP se configuro en un dispositivo que se borro. Necesita un escape WP-CLI documentado &lt;strong&gt;antes&lt;/strong&gt; de imponer 2FA, no después.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Emergencia: deshabilitar 2FA para un usuario bloqueado (Two-Factor / WP 2FA)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;user_i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _two_factor_enabled_providers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;user_i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _two_factor_provider&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;user_i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; _two_factor_options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# O listar lo que esta configurado para saber qué eliminar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;user_i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --keys=_two_factor_enabled_providers,_two_factor_provider&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecútelo desde SSH en el servidor. Si el admin tampoco tiene SSH, la ruta de recuperación es la terminal del panel del hosting o una consulta SQL contra &lt;code&gt;wp_usermeta&lt;/code&gt;. Documéntelo antes de necesitarlo, especialmente si el sitio cae bajo la obligación de notificación 72h de la AEPD: una hora perdida buscando el procedimiento se come un cuarto del plazo legal.&lt;/p&gt;
&lt;h3 id=&quot;los-niveles-de-2fa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-niveles-de-2fa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los Niveles de 2FA&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Códigos SMS (Obsoleto - No Usar)&lt;/strong&gt;
El 2FA basado en SMS era comun pero ahora se considera inseguro. Los ataques de SIM swapping permiten a los hackers secuestrar números de telefono.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Códigos por Email (Debil pero Mejor que Nada)&lt;/strong&gt;
El 2FA basado en email envia un código único a tu dirección de email registrada. Vulnerable si tu cuenta de email esta comprometida.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Aplicaciones TOTP (Seguridad Estándar)&lt;/strong&gt;
Las aplicaciones de Contrasena de Un Solo Uso Basada en Tiempo (TOTP) como Google Authenticator, Authy, Microsoft Authenticator y Ente Auth generan códigos que cambian cada 30 segundos. Son significativamente más seguras porque los códigos se generan localmente en tu dispositivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Notificaciones Push (Conveniente pero Dependiente del Proveedor)&lt;/strong&gt;
Servicios como Duo Security envian notificaciones push a tu telefono para aprobacion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Llaves de Seguridad por Hardware (El Estándar Blindado)&lt;/strong&gt;
Las llaves fisicas de seguridad como YubiKey, Titan Security Key y dispositivos compatibles con FIDO2 representan el estándar de oro en autenticación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anti-phishing&lt;/strong&gt;: Incluso si escribes tu contrasena en un sitio falso, la autenticación falla porque la llave fisica verifica el dominio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prueba criptografica&lt;/strong&gt;: Usa protocolos de desafio-respuesta que no pueden ser reproducidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin secretos compartidos&lt;/strong&gt;: A diferencia de TOTP, no hay secreto que pueda ser robado del servidor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;auditar-las-application-passwords&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditar-las-application-passwords&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditar las application passwords&lt;/h3&gt;
&lt;p&gt;WordPress core incluye application passwords (tokens de 24 caracteres para clientes REST API y XML-RPC). Saltan el 2FA por diseño. He visto estas terminar en archivos &lt;code&gt;.env&lt;/code&gt; subidos a repos públicos de GitHub y en reportes de crash de apps móviles publicados en foros de soporte. Audítelas trimestralmente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; application-password&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;user_i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; application-password&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;user_i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;uui&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si no usa la REST API para escrituras autenticadas, deshabilítelas completamente con &lt;code&gt;add_filter( &apos;wp_is_application_passwords_available&apos;, &apos;__return_false&apos; );&lt;/code&gt; en un mu-plugin.&lt;/p&gt;
&lt;h2 id=&quot;parte-3-login-sin-contrasena-con-passkeys&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-3-login-sin-contrasena-con-passkeys&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 3: Login sin Contrasena con Passkeys&lt;/h2&gt;
&lt;p&gt;En 2026, estamos avanzando más alla de las contrasenas. &lt;strong&gt;Las Passkeys&lt;/strong&gt; representan el futuro de la autenticación, utilizando la biometria de tu dispositivo (TouchID, FaceID, Windows Hello) para autenticar via criptografia de clave pública.&lt;/p&gt;
&lt;h3 id=&quot;como-funcionan-las-passkeys&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funcionan-las-passkeys&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como Funcionan las Passkeys&lt;/h3&gt;
&lt;p&gt;Las Passkeys usan el estándar WebAuthn para crear pares de claves criptograficas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Registro&lt;/strong&gt;: Tu dispositivo crea una clave privada (almacenada de forma segura) y una clave pública (enviada al servidor)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autenticación&lt;/strong&gt;: El servidor envia un desafio; tu dispositivo lo firma con la clave privada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación&lt;/strong&gt;: El servidor verifica la firma con la clave pública almacenada&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ventajas-de-las-passkeys&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-de-las-passkeys&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas de las Passkeys&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sin contrasena que robar&lt;/strong&gt;: No hay secreto compartido que pueda filtrarse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resistente al phishing&lt;/strong&gt;: La clave privada esta vinculada al dominio específico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sincronizacion entre dispositivos&lt;/strong&gt;: Las Passkeys se sincronizan a través de tu Apple ID, cuenta de Google o gestor de contrasenas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conveniencia biometrica&lt;/strong&gt;: Usa huella dactilar o reconocimiento facial en lugar de escribir contrasenas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-4-rate-limiting-de-wp-loginphp-y-xmlrpcphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-4-rate-limiting-de-wp-loginphp-y-xmlrpcphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 4: Rate-limiting de wp-login.php y xmlrpc.php&lt;/h2&gt;
&lt;p&gt;Aunque el 2FA bloquee la toma de control real, una fuerza bruta sin rate limit sigue quemando workers PHP-FPM y conexiones MySQL. En hosting compartido (frecuente en sitios pequeños españoles) puede tirar el sitio sin descifrar nunca una password. Quiere rate limits en tres capas, en este orden de eficacia: edge (Cloudflare), servidor (Nginx o fail2ban), aplicación (plugin).&lt;/p&gt;
&lt;h3 id=&quot;capa-0-regla-de-rate-limiting-en-cloudflare&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-0-regla-de-rate-limiting-en-cloudflare&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 0: regla de rate-limiting en Cloudflare&lt;/h3&gt;
&lt;p&gt;Si el sitio esta en Cloudflare (incluido en plan gratuito), esta es la regla de mayor apalancamiento. Dashboard → Security → WAF → Rate limiting rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Field&lt;/strong&gt;: URI Path&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operator&lt;/strong&gt;: equals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Value&lt;/strong&gt;: &lt;code&gt;/wp-login.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When&lt;/strong&gt;: 5 peticiones / 1 minuto desde la misma IP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Then&lt;/strong&gt;: Managed Challenge (o Block durante 1 hora)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anada una segunda regla para &lt;code&gt;/xmlrpc.php&lt;/code&gt; si lo mantiene activo. La ventaja sobre fail2ban: detiene las peticiones en el edge, antes de que lleguen a su origen.&lt;/p&gt;
&lt;h3 id=&quot;capa-1-cloudflare-turnstile&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-1-cloudflare-turnstile&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 1: Cloudflare Turnstile&lt;/h3&gt;
&lt;p&gt;Google reCAPTCHA es molesto y envia datos a los servidores de Google. &lt;strong&gt;Cloudflare Turnstile&lt;/strong&gt; es la alternativa moderna:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Invisible&lt;/strong&gt;: La mayoria de los usuarios nunca ven un desafio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enfocado en privacidad&lt;/strong&gt;: Sin datos personales enviados a terceros&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accesibilidad&lt;/strong&gt;: Funciona con lectores de pantalla y tecnologías asistivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Impacto minimo en los tiempos de carga&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;capa-2-fail2ban-a-nivel-de-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#capa-2-fail2ban-a-nivel-de-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Capa 2: Fail2Ban a Nivel de Servidor&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Fail2Ban&lt;/strong&gt; escanea los logs de tu servidor y automáticamente banea direcciones IP que muestran comportamiento malicioso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instalación en Ubuntu/Debian:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; fail2ban&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; enable&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; fail2ban&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; fail2ban&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Configuración Específica para WordPress:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Una sutileza que la mayoría de tutoriales falla: un POST fallido a wp-login.php devuelve HTTP 200 (la página se re-renderiza con error), y uno exitoso devuelve 302 (redirección a wp-admin). Por tanto, hacer match solo sobre 200 caza tanto los intentos fallidos legítimos como los logins exitosos, lo que significa que se banea a si mismo si escribe mal su password tres veces. El patrón siguiente combina el 200 con el volumen de fuerza bruta dentro del &lt;code&gt;findtime&lt;/code&gt; del jail:&lt;/p&gt;
&lt;p&gt;Crear &lt;code&gt;/etc/fail2ban/filter.d/wordpress.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;[Definition]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;failregex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = ^&amp;#x3C;HOST&gt; .* &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;POST /wp-login\.php.*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; 200&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            ^&amp;#x3C;HOST&gt; .* &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;POST /xmlrpc\.php.*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; 200&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;ignoreregex&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = ^&amp;#x3C;HOST&gt; .* &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;POST /wp-login\.php.*&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; 302&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crear &lt;code&gt;/etc/fail2ban/jail.local&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;[DEFAULT]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;bantime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 3600&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;findtime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 600&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;maxretry&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;backend&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = systemd&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;[wordpress]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;enabled&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;port&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = http,https&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = wordpress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;logpath&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = /var/log/nginx/access.log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;maxretry&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;bantime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; = 86400&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Configuración de Nginx para Limitacion de Tasa:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Definicion de zona de limitacion de tasa (en bloque http)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;limit_req_zone &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$binary_remote_addr zone=login:10m rate=1r/s;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Aplicar a wp-login.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; /wp-login.php &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    limit_req &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;zone=login burst=5 nodelay;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    include &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;snippets/fastcgi-php.conf;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    fastcgi_pass &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;unix:/run/php/php8.3-fpm.sock;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Bloquear XML-RPC si no se necesita&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; /xmlrpc.php &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    access_log &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;off&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    log_not_found &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;off&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-5-monitoreo-y-alertas-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-5-monitoreo-y-alertas-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 5: Monitoreo y Alertas de Login&lt;/h2&gt;
&lt;p&gt;No puedes asegurar lo que no puedes ver. El monitoreo integral de login proporciona visibilidad sobre patrones de ataque y alerta temprana de intentos de compromiso.&lt;/p&gt;
&lt;h3 id=&quot;que-monitorear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-monitorear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que Monitorear&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intentos de login fallidos&lt;/strong&gt;: Rastrear por nombre de usuario e IP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logins exitosos&lt;/strong&gt;: Registrar todos los logins de admin exitosos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambios de cuenta&lt;/strong&gt;: Monitorear cambios de contrasena y modificaciones de rol&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anomalias geograficas&lt;/strong&gt;: Marcar logins desde paises inesperados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No recomendamos plugins de seguridad. Usa monitoreo a nivel de servidor e infraestructura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monitor logs de acceso del servidor para logins fallidos y solicitudes a wp-login.php&lt;/li&gt;
&lt;li&gt;Usa fail2ban para alertar sobre patrones de fuerza bruta&lt;/li&gt;
&lt;li&gt;Herramientas externas como Loggly, Splunk o Datadog para sitios de alto valor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-6-procedimientos-de-respuesta-a-incidentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-6-procedimientos-de-respuesta-a-incidentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 6: Procedimientos de Respuesta a Incidentes&lt;/h2&gt;
&lt;p&gt;A pesar de los mejores esfuerzos, los incidentes de seguridad ocurren. Tener procedimientos documentados asegura una respuesta rápida y efectiva.&lt;/p&gt;
&lt;h3 id=&quot;plantilla-del-plan-de-respuesta-a-incidentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plantilla-del-plan-de-respuesta-a-incidentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plantilla del Plan de Respuesta a Incidentes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Fase 1: Deteccion e Identificacion&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Actividad de admin inesperada&lt;/li&gt;
&lt;li&gt;Archivos desconocidos en directorios de WordPress&lt;/li&gt;
&lt;li&gt;Picos repentinos de tráfico&lt;/li&gt;
&lt;li&gt;Advertencias de Google Safe Browsing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 2: Contencion&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambiar todas las contrasenas de admin inmediatamente&lt;/li&gt;
&lt;li&gt;Forzar cierre de sesion de todos los usuarios&lt;/li&gt;
&lt;li&gt;Habilitar modo mantenimiento si es necesario&lt;/li&gt;
&lt;li&gt;Bloquear direcciones IP sospechosas a nivel de firewall&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 3: Erradicacion&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restaurar archivos core de WordPress desde fuente oficial&lt;/li&gt;
&lt;li&gt;Reinstalar todos los plugins desde WordPress.org&lt;/li&gt;
&lt;li&gt;Escanear base de datos en busca de inyecciones maliciosas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 4: Recuperacion&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restaurar desde respaldo limpio si esta disponible&lt;/li&gt;
&lt;li&gt;Verificar integridad de todos los archivos restaurados&lt;/li&gt;
&lt;li&gt;Reactivar sitio con monitoreo mejorado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fase 5: Revision Post-Incidente&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analizar el vector de ataque&lt;/li&gt;
&lt;li&gt;Documentar lecciones aprendidas&lt;/li&gt;
&lt;li&gt;Actualizar procedimientos de seguridad&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;parte-7-deshabilitar-enumeracion-de-usuarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-7-deshabilitar-enumeracion-de-usuarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 7: Deshabilitar “Enumeracion de Usuarios”&lt;/h2&gt;
&lt;p&gt;Los hackers usan scripts automatizados para adivinar nombres de usuario escaneando &lt;code&gt;/?author=1&lt;/code&gt;, &lt;code&gt;/?author=2&lt;/code&gt;, etc. Puedes bloquear esto a nivel de servidor.&lt;/p&gt;
&lt;h3 id=&quot;método-apache-htaccess&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-apache-htaccess&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método Apache (.htaccess)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;apache&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Detener escaneo de autores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; mod_rewrite.c&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteEngine&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; On&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteBase&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; /&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteCond&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; %{QUERY_STRING}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; (author=\d+)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [NC]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;RewriteRule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; .*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; [F]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;IfModule&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;método-nginx&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-nginx&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método Nginx&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Bloquear enumeracion de autores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;~* &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;author=([0-9]*)&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 403&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Bloquear enumeracion de usuarios via REST API&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ~*&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; /wp-json/wp/v2/users &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 403&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;parte-8-hardening-en-los-bordes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parte-8-hardening-en-los-bordes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parte 8: Hardening en los bordes&lt;/h2&gt;
&lt;h3 id=&quot;limitar-wp-admin-a-ips-conocidas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitar-wp-admin-a-ips-conocidas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitar wp-admin a IPs conocidas&lt;/h3&gt;
&lt;p&gt;Si su equipo trabaja desde un conjunto pequeño de IPs estáticas (oficina, VPN), una allowlist CIDR sobre &lt;code&gt;/wp-admin/&lt;/code&gt; elimina la superficie de ataque pública por completo. Cualquier cosa fuera de la allowlist recibe un 403 antes de que WordPress se cargue. La contrapartida es real: administradores en viaje, freelancers en wifi de hotel, y acceso de emergencia desde un movil quedan rotos. Úselo solo si tiene una VPN documentada con uptime fiable.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ^~&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; /wp-admin/ &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    allow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;203.0.113.0/24;     &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# oficina&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    allow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;198.51.100.42/32;   &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# VPN&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    # ...config fastcgi existente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#DBEDFF&quot;&gt; /wp-login.php &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    allow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;203.0.113.0/24;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    allow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;198.51.100.42/32;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    deny &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para sitios detrás de Cloudflare, hagálo con una WAF custom rule sobre &lt;code&gt;http.request.uri.path matches &quot;^/wp-(admin|login)&quot;&lt;/code&gt; y &lt;code&gt;not ip.src in {203.0.113.0/24}&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;renombrar-wp-loginphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#renombrar-wp-loginphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Renombrar wp-login.php&lt;/h3&gt;
&lt;p&gt;Mover la URL de login es oscuridad, no seguridad. Reduce el tráfico de bots tontos en sus logs (útil para señal-ruido) pero un atacante determinado lo extrae del source de cualquier página. Trátelo como filtro de ruido, nunca como capa.&lt;/p&gt;
&lt;h3 id=&quot;deshabilitar-la-edición-de-archivos-en-admin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deshabilitar-la-edición-de-archivos-en-admin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deshabilitar la edición de archivos en admin&lt;/h3&gt;
&lt;p&gt;Dos constantes en &lt;code&gt;wp-config.php&lt;/code&gt; cierran la ruta de escalada post-compromiso más común: un atacante con acceso admin editando PHP de tema/plugin desde el panel.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_EDIT&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// oculta Apariencia &gt; Editor de archivos del tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DISALLOW_FILE_MODS&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// tambien bloquea instalación/actualizaciones de plugins/temas&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;DISALLOW_FILE_MODS&lt;/code&gt; es agresivo porque rompe las actualizaciones de un clic; úselo en sitios donde despliega código por CI y ejecuta updates via WP-CLI.&lt;/p&gt;
&lt;h3 id=&quot;web-application-firewall&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#web-application-firewall&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Web Application Firewall&lt;/h3&gt;
&lt;p&gt;Un WAF filtra tráfico malicioso antes de que llegue a su instalación WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare WAF&lt;/strong&gt;: el plan gratuito incluye Managed Rules para WordPress; el plan Pro añade OWASP CRS en paranoia level 1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ModSecurity + OWASP CRS&lt;/strong&gt;: opción a nivel de servidor (Raiola Networks y otros hosts españoles ya lo activan por defecto). Paranoia level 1 es la base práctica; PL2+ genera demasiados falsos positivos en Gutenberg&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sucuri&lt;/strong&gt;: WAF premium con virtual patches específicos para WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ssltls-para-páginas-de-login&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ssltls-para-páginas-de-login&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SSL/TLS para Páginas de Login&lt;/h3&gt;
&lt;p&gt;Asegura que todo tu sitio use HTTPS, especialmente las páginas de login:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instalar un certificado SSL (Let’s Encrypt proporciona certificados gratuitos)&lt;/li&gt;
&lt;li&gt;Forzar redirecciones HTTPS en la configuración del servidor web&lt;/li&gt;
&lt;li&gt;Habilitar HTTP Strict Transport Security (HSTS)&lt;/li&gt;
&lt;li&gt;Usar cookies seguras para la autenticación de WordPress&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lo-que-configuro-realmente-en-un-sitio-cliente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-configuro-realmente-en-un-sitio-cliente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que configuro realmente en un sitio cliente&lt;/h2&gt;
&lt;p&gt;No es una checklist genérica. Es la orden de trabajo específica que ejecuto al endurecer un login WordPress desde cero:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Eliminar el usuario &lt;code&gt;admin&lt;/code&gt;, reatribuir contenido, ajustar &lt;code&gt;nickname&lt;/code&gt; y &lt;code&gt;display_name&lt;/code&gt; del admin superviviente para que el slug no filtre el login.&lt;/li&gt;
&lt;li&gt;Bloquear &lt;code&gt;/wp-json/wp/v2/users&lt;/code&gt; y &lt;code&gt;?rest_route=/wp/v2/users&lt;/code&gt; para peticiones no autenticadas via el filtro &lt;code&gt;rest_endpoints&lt;/code&gt; mostrado antes.&lt;/li&gt;
&lt;li&gt;Imponer 2FA para todos los roles &lt;code&gt;administrator&lt;/code&gt; y &lt;code&gt;editor&lt;/code&gt;, con TOTP por defecto y un runbook de recuperación &lt;code&gt;wp user meta delete&lt;/code&gt; documentado en el gestor de passwords del equipo.&lt;/li&gt;
&lt;li&gt;Auditar &lt;code&gt;wp user application-password list&lt;/code&gt; para cada admin; eliminar cualquier app password con más de 90 días o no reconocido.&lt;/li&gt;
&lt;li&gt;Anadir una regla de rate-limit en Cloudflare sobre &lt;code&gt;/wp-login.php&lt;/code&gt; (5/min, Managed Challenge) y una segunda regla sobre &lt;code&gt;/xmlrpc.php&lt;/code&gt; si no esta bloqueado de raíz.&lt;/li&gt;
&lt;li&gt;Instalar fail2ban con el filtro wp-login que distingue 200 (fallido) de 302 (éxito) para que los usuarios bloqueados no sean baneados por error.&lt;/li&gt;
&lt;li&gt;Fijar &lt;code&gt;DISALLOW_FILE_EDIT&lt;/code&gt; en &lt;code&gt;wp-config.php&lt;/code&gt;. Anadir &lt;code&gt;DISALLOW_FILE_MODS&lt;/code&gt; solo si el equipo despliega via CI.&lt;/li&gt;
&lt;li&gt;Forzar HTTPS, HSTS con &lt;code&gt;preload&lt;/code&gt;, y &lt;code&gt;Set-Cookie: Secure; HttpOnly; SameSite=Lax&lt;/code&gt; para &lt;code&gt;wordpress_logged_in_*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Verificar que &lt;code&gt;wp-config.php&lt;/code&gt; tiene salts únicos (&lt;code&gt;wp config shuffle-salts&lt;/code&gt;), que el usuario DB tiene solo los privilegios que WordPress necesita (sin &lt;code&gt;GRANT ALL&lt;/code&gt;), y que el acceso a la base de datos esta bound a localhost.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La seguridad de login son cuatro o cinco controles en capas, no uno. Salte una capa y el resto aún sostienen; salte tres y vuelve a depender de la password.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Reaudite las application passwords, los contadores de baneos de fail2ban, y el runbook de recuperación de 2FA cada trimestre. La mayoría de sitios que asumo de otros operadores tienen uno de los tres derivado: una app password caducada de un ex-empleado, un fail2ban que no banea nada desde hace 6 meses porque la ruta del log se movió, o un setup de 2FA que nadie sabe cómo saltar cuando el movil del admin muere. Y si el sitio cae bajo notificación AEPD 72h, ese runbook no es opcional: es prueba de diligencia.&lt;/p&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizado&lt;/strong&gt;: 28 de enero de 2026
&lt;strong&gt;Proxima Revision&lt;/strong&gt;: 28 de abril de 2026&lt;/p&gt;</content:encoded><category>security</category><category>hardening</category><category domain="tag">brute force</category><category domain="tag">2fa</category><category domain="tag">passkeys</category><category domain="tag">fail2ban</category><category domain="tag">captcha</category><category domain="tag">passwordless</category><category domain="tag">login monitoring</category><category domain="tag">incident response</category><enclosure url="https://wppoland.com/images/og/programming-seminar-interactive-session.jpg" type="image/jpeg"/></item><item><title>TimThumb ha muerto: cómo gestionar imágenes EN WordPress (guía 2026)</title><link>https://wppoland.com/es/timthumb-is-dead-wordpress-image-handling/</link><guid isPermaLink="true">https://wppoland.com/es/timthumb-is-dead-wordpress-image-handling/</guid><description>El famoso script TimThumb es una reliquia y un agujero de seguridad. Aprende cómo redimensionar imágenes correctamente usando add_image_size() y las funciones nativas de WP.</description><pubDate>Mon, 25 Jul 2011 19:07:37 GMT</pubDate><content:encoded>&lt;p&gt;Si eres un veterano de WordPress, seguramente recuerdas &lt;strong&gt;TimThumb&lt;/strong&gt;. Era un pequeño script PHP que se encontraba en casí todos los “temas premium” alrededor de 2010. Permitía recortar y redimensionar imágenes de forma fácil y al vuelo.&lt;/p&gt;
&lt;p&gt;En 2011, se descubrió una vulnerabilidad crítica Zero-Day que permitía a los hackers comprometer millones de sitios. Ese fue el fin de la era del “script sencillo”.&lt;/p&gt;
&lt;p&gt;Hoy, en 2026, WordPress cuenta con un poderoso motor de gestión de medios. Si todavía encuentras &lt;code&gt;timthumb.php&lt;/code&gt; en tu tema - elimínalo inmediatamente. En esta guía, te mostraré cómo hacerlo de forma profesional.&lt;/p&gt;
&lt;h2 id=&quot;por-qué-era-malo-timthumb&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-era-malo-timthumb&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Por qué era malo TimThumb?&lt;/h2&gt;
&lt;p&gt;TimThumb funcionaba “al vuelo”: tomaba una imagen de una URL, la procesaba y la guardaba en caché. Los problemas eran múltiples y graves:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Seguridad:&lt;/strong&gt; Permitía la Ejecución Remota de Código (RCE) si no estaba perfectamente configurado. Esta vulnerabilidad fue descubierta en agosto de 2011 por Mark Maunder y afectó a millones de instalaciones de WordPress en todo el mundo. Los atacantes podían ejecutar código PHP arbitrario en el servidor, lo que significaba acceso completo al sitio web y potencialmente al servidor entero. Los hackers explotaron esta vulnerabilidad para inyectar malware, crear puertas traseras y redirigir el tráfico a sitios maliciosos. La gravedad fue tal que se convirtió en uno de los incidentes de seguridad más significativos en la historia de WordPress.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rendimiento:&lt;/strong&gt; Sobrecargaba el servidor PHP con cada nueva solicitud de imagen. Cada vez que un visitante accedía a una página con imágenes procesadas por TimThumb, el servidor tenía que ejecutar PHP para verificar la caché, procesar la imagen si no existía, y servirla. En sitios con alto tráfico, esto significaba miles de operaciones PHP adicionales por minuto que consumían CPU y memoria. El procesamiento de imágenes es una tarea intensiva en recursos, y hacerlo en tiempo real a través de PHP era tremendamente ineficiente comparado con servir archivos estáticos pregenerados.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sin integración:&lt;/strong&gt; No reconocía la Biblioteca de Medios de WordPress. TimThumb operaba completamente fuera del ecosistema de WordPress. No utilizaba los hooks ni las funciones del core, no registraba las imágenes procesadas en la base de datos, y no se beneficiaba de las mejoras que WordPress iba implementando en su sistema de medios. Esto significaba que las imágenes procesadas por TimThumb no aparecían en la Biblioteca de Medios, no se podían gestionar desde el panel de administración, y no se beneficiaban de funcionalidades como el texto alternativo, las descripciones o los créditos de imagen.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-1-tamaños-nativos-add_image_size&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-tamaños-nativos-add_image_size&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: Tamaños nativos (add_image_size)&lt;/h2&gt;
&lt;p&gt;WordPress tiene la función &lt;code&gt;add_image_size()&lt;/code&gt; desde hace años. Te permite definir formatos que el sistema generará automáticamente durante la subida del archivo. Esta es la forma más eficiente y segura de gestionar los diferentes tamaños de imagen que tu tema necesita.&lt;/p&gt;
&lt;h3 id=&quot;en-functionsphp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#en-functionsphp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;En &lt;code&gt;functions.php&lt;/code&gt;:&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_setup_theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Habilitar soporte para imágenes destacadas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_theme_support&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post-thumbnails&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Tamaños estándar (recorte suave - mantiene la proporción de aspecto)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;blog-list&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;800&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Recorte duro (corta el exceso)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // WordPress recortará exactamente el centro de la imagen&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;team-member&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Recorte con posicionamiento (ej., desde arriba, desde la izquierda)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_image_size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero-banner&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1920&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;center&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;top&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;after_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_setup_theme&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando defines tamaños personalizados con &lt;code&gt;add_image_size()&lt;/code&gt;, WordPress genera automáticamente todas las variantes en el momento de la subida. Esto significa que el procesamiento pesado se realiza una sola vez, durante la carga del archivo, y no cada vez que un visitante solicita la página. El resultado es un rendimiento significativamente superior al de cualquier solución de procesamiento al vuelo.&lt;/p&gt;
&lt;p&gt;Es importante entender los tres modos de recorte disponibles. El &lt;strong&gt;recorte suave&lt;/strong&gt; (soft crop) es el comportamiento predeterminado cuando no se específica el parámetro de recorte. WordPress redimensionará la imagen para que quepa dentro de las dimensiones específicadas, manteniendo la proporción de aspecto original. Esto significa que una de las dimensiones puede ser menor que la específicada. El &lt;strong&gt;recorte duro&lt;/strong&gt; (hard crop), activado pasando &lt;code&gt;true&lt;/code&gt; como tercer parámetro, fuerza exactamente las dimensiones específicadas, recortando los bordes que sobren. El &lt;strong&gt;recorte posicionado&lt;/strong&gt; permite específicar desde qué punto de la imagen se realizará el recorte, lo cual es especialmente útil para banners donde el sujeto principal suele estar en la parte superior de la imagen.&lt;/p&gt;
&lt;h3 id=&quot;en-el-archivo-de-plantilla-ej-singlephp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#en-el-archivo-de-plantilla-ej-singlephp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;En el archivo de plantilla (ej., &lt;code&gt;single.php&lt;/code&gt;):&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    the_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hero-banner&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;class&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;img-fluid&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ventaja:&lt;/strong&gt; Las imágenes se generan una vez (durante la subida). Se sirven como archivos estáticos ya preparados. Cero carga PHP al mostrarlas. Esto también facilita enormemente el almacenamiento en caché, ya que los archivos estáticos son fácilmente cacheables tanto a nivel de servidor como de CDN.&lt;/p&gt;
&lt;h3 id=&quot;regeneración-de-miniaturas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#regeneración-de-miniaturas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Regeneración de miniaturas&lt;/h3&gt;
&lt;p&gt;Cuando añades nuevos tamaños de imagen a un tema existente, las imágenes ya subidas no tendrán las nuevas variantes generadas. Necesitas regenerar las miniaturas para las imágenes existentes. La forma más eficiente de hacerlo es a través de WP-CLI:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; regenerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --yes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para sitios con bibliotecas de medios grandes (miles de imágenes), puedes regenerar por lotes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; regenerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --batch-size=50&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-2-generación-al-vuelo-con-cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-generación-al-vuelo-con-cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: Generación al vuelo con CDN&lt;/h2&gt;
&lt;p&gt;Los tamaños nativos tienen un inconveniente: si cambias de tema, tienes que regenerar las miniaturas (por ejemplo, con el plugin &lt;em&gt;Regenerate Thumbnails&lt;/em&gt;), lo que lleva una eternidad para una biblioteca de 100 GB.&lt;/p&gt;
&lt;p&gt;En 2026, los servidores son rápidos y los CDNs son económicos. A menudo usamos un enfoque híbrido o servicios externos que procesan las imágenes en el edge, cerca del usuario final.&lt;/p&gt;
&lt;h3 id=&quot;solución-cloudflare--cdn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#solución-cloudflare--cdn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Solución: Cloudflare / CDN&lt;/h3&gt;
&lt;p&gt;En lugar de sobrecargar tu servidor PHP, usa parámetros de URL para que el CDN se encargue del procesamiento.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://tusitio.com/wp-content/uploads/imagen.jpg?width=400&amp;#x26;height=300&amp;#x26;format=avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La mayoría de los alojamientos de WordPress en 2026 (Kinsta, WP Engine, Cloudways) ofrecen esto como estándar. La imagen original se almacena en tu servidor, pero el CDN se encarga de redimensionar, convertir el formato y servir la versión optimizada al usuario. Esto elimina completamente la carga de procesamiento de imágenes de tu servidor PHP.&lt;/p&gt;
&lt;p&gt;Las ventajas de este enfoque son significativas. Primero, no necesitas regenerar miniaturas nunca más, ya que el CDN genera cualquier tamaño bajo demanda. Segundo, la conversión de formato es automática: el CDN puede servir AVIF a navegadores que lo soportan y WebP como fallback. Tercero, la optimización de calidad se ajusta automáticamente según la velocidad de conexión del usuario.&lt;/p&gt;
&lt;h3 id=&quot;cloudflare-image-resizing&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-image-resizing&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cloudflare Image Resizing&lt;/h3&gt;
&lt;p&gt;Cloudflare ofrece un servicio específico de redimensionamiento de imágenes que se integra perfectamente con WordPress. Funciona como un worker en el edge que intercepta las solicitudes de imágenes y las procesa antes de servirlas al usuario.&lt;/p&gt;
&lt;p&gt;La configuración típica implica crear un worker de Cloudflare que detecte las solicitudes de imágenes y aplique las transformaciones necesarias basándose en parámetros de URL o reglas predefinidas. Esto es completamente transparente para WordPress y no requiere cambios en el código del tema.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;método-3-atributos-srcset-y-sizes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-atributos-srcset-y-sizes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Atributos &lt;code&gt;srcset&lt;/code&gt; y &lt;code&gt;sizes&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;WordPress genera automáticamente el atributo &lt;code&gt;srcset&lt;/code&gt; para tus imágenes, permitiendo al navegador elegir el tamaño apropiado para el dispositivo (teléfono vs escritorio 4K). Esta funcionalidad fue introducida en WordPress 4.4 y ha sido mejorada continuamente desde entonces.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- WordPress genera esto automáticamente: --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen-800x400.jpg&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;     srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen-300x150.jpg 300w,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;             imagen-800x400.jpg 800w,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;             imagen-1024x512.jpg 1024w&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;     sizes&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;(max-width: 600px) 100vw, 800px&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El atributo &lt;code&gt;srcset&lt;/code&gt; lista todas las variantes disponibles de la imagen junto con sus anchuras en píxeles. El navegador utiliza esta información junto con el atributo &lt;code&gt;sizes&lt;/code&gt; para determinar cuál es la imagen más adecuada para descargar, teniendo en cuenta el tamaño de la pantalla, la densidad de píxeles y el ancho del viewport.&lt;/p&gt;
&lt;p&gt;Tu trabajo como desarrollador es solamente definir correctamente &lt;code&gt;sizes&lt;/code&gt; usando el filtro &lt;code&gt;wp_calculate_image_sizes&lt;/code&gt;. Este filtro te permite específicar cómo se renderizará la imagen en diferentes breakpoints de tu diseño, para que el navegador pueda tomar la decisión óptima:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_calculate_image_sizes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $sizes, $size, $image_src, $image_meta ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Para imágenes dentro de artículos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;(max-width: 768px) 100vw, (max-width: 1200px) 75vw, 800px&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $sizes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;lazy-loading-nativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lazy-loading-nativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lazy Loading nativo&lt;/h3&gt;
&lt;p&gt;Desde WordPress 5.5, el atributo &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; se añade automáticamente a las imágenes. Esto significa que las imágenes que no son visibles en el viewport inicial no se descargan hasta que el usuario se desplaza hacia ellas, mejorando significativamente el tiempo de carga inicial de la página.&lt;/p&gt;
&lt;p&gt;WordPress también añade automáticamente &lt;code&gt;decoding=&quot;async&quot;&lt;/code&gt; a las imágenes, lo que permite al navegador decodificar las imágenes en un hilo separado sin bloquear el renderizado de la página.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;optimización-webp-y-avif&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-webp-y-avif&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización: WebP y AVIF&lt;/h2&gt;
&lt;p&gt;En 2026, JPG y PNG son reliquias para fotografías. WordPress soporta nativamente WebP (desde la versión 5.8) y AVIF (desde la versión 6.5).&lt;/p&gt;
&lt;p&gt;No necesitas plugins adicionales. Simplemente sube un archivo AVIF y WordPress lo gestiona. O usa un plugin (como Performance Lab) para convertir automáticamente los JPG antiguos a AVIF durante la subida.&lt;/p&gt;
&lt;h3 id=&quot;comparativa-de-formatos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparativa-de-formatos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparativa de formatos&lt;/h3&gt;
&lt;p&gt;La diferencia en tamaño de archivo entre formatos es sustancial:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JPG original&lt;/strong&gt;: 500 KB (línea base)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebP equivalente&lt;/strong&gt;: ~250 KB (50% de reducción)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AVIF equivalente&lt;/strong&gt;: ~150 KB (70% de reducción)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AVIF ofrece mejor compresión y calidad visual que WebP, especialmente para fotografías con gradientes suaves y colores complejos. Sin embargo, WebP tiene un soporte de navegador más amplio, por lo que la estrategia ideal es servir AVIF como primera opción y WebP como fallback.&lt;/p&gt;
&lt;h3 id=&quot;implementación-con-el-elemento-picture&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-con-el-elemento-picture&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación con el elemento picture&lt;/h3&gt;
&lt;p&gt;Para un control máximo sobre los formatos servidos, puedes usar el elemento HTML &lt;code&gt;&amp;#x3C;picture&gt;&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen.avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; srcset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen.webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;image/webp&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;imagen.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Descripción de la imagen&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;picture&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sin embargo, en la mayoría de los casos, dejar que WordPress y el CDN gestiónen la negociación de formato es la solución más práctica y mantenible.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;limpieza-eliminar-timthumb&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limpieza-eliminar-timthumb&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limpieza (eliminar TimThumb)&lt;/h2&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/wordpress-security-audit/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Si has heredado un proyecto antiguo, sigue estos pasos para eliminar TimThumb de forma segura y completa:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Escanea:&lt;/strong&gt; Busca en el directorio &lt;code&gt;wp-content&lt;/code&gt; los archivos &lt;code&gt;timthumb.php&lt;/code&gt; o &lt;code&gt;thumb.php&lt;/code&gt;. También busca variantes como &lt;code&gt;timthumb.config.php&lt;/code&gt; y directorios de caché asociados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elimina:&lt;/strong&gt; Borra el archivo y cualquier directorio de caché asociado (normalmente una carpeta &lt;code&gt;cache&lt;/code&gt; dentro del directorio del tema).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Corrige:&lt;/strong&gt; Encuentra dónde se llamaba en el código y reemplázalo:
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// CÓDIGO ANTIGUO (MALO)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo get_template_directory_uri(); ?&gt;/timthumb.php?src=...&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// REEMPLAZAR CON (BUENO)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;mi-tamaño&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regenera:&lt;/strong&gt; Instala &lt;code&gt;WP-CLI&lt;/code&gt; y ejecuta &lt;code&gt;wp media regenerate&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica:&lt;/strong&gt; Después de la migración, recorre todas las páginas principales del sitio para asegurarte de que las imágenes se muestran correctamente. Presta especial atención a las páginas de archivo, los widgets de la barra lateral y las áreas del pie de página donde TimThumb podría haber sido utilizado.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;búsqueda-exhaustiva-de-referencias-a-timthumb&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#búsqueda-exhaustiva-de-referencias-a-timthumb&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Búsqueda exhaustiva de referencias a TimThumb&lt;/h3&gt;
&lt;p&gt;No basta con eliminar el archivo. Debes buscar todas las referencias en el código:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Buscar en todos los archivos PHP del tema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;timthumb&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/themes/tu-tema/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;thumb.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/themes/tu-tema/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# Buscar también en plugins personalizados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;timthumb&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/plugins/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada referencia encontrada debe ser reemplazada por la función nativa equivalente de WordPress. En la mayoría de los casos, esto significa usar &lt;code&gt;the_post_thumbnail()&lt;/code&gt; o &lt;code&gt;wp_get_attachment_image()&lt;/code&gt; con el tamaño adecuado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;rendimiento-medición-y-optimización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-medición-y-optimización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento: medición y optimización&lt;/h2&gt;
&lt;p&gt;Una vez que has migrado de TimThumb a los métodos nativos, es importante verificar que el rendimiento ha mejorado. Utiliza herramientas como Google PageSpeed Insights, Lighthouse y WebPageTest para medir los tiempos de carga antes y después de la migración.&lt;/p&gt;
&lt;h3 id=&quot;métricas-clave-a-monitorizar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métricas-clave-a-monitorizar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métricas clave a monitorizar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Largest Contentful Paint (LCP)&lt;/strong&gt;: La imagen principal suele ser el elemento LCP. Con tamaños nativos pregenerados y un CDN, el LCP debería mejorar significativamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumulative Layout Shift (CLS)&lt;/strong&gt;: Asegúrate de que todas las imágenes tienen dimensiones &lt;code&gt;width&lt;/code&gt; y &lt;code&gt;height&lt;/code&gt; definidas para evitar saltos de diseño durante la carga.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total Blocking Time (TBT)&lt;/strong&gt;: Sin procesamiento PHP al vuelo, el tiempo de bloqueo del servidor se reduce.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-óptima-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-óptima-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración óptima del servidor&lt;/h3&gt;
&lt;p&gt;Para un rendimiento óptimo de imágenes en WordPress 2026, la configuración recomendada incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Caché de navegador con headers &lt;code&gt;Cache-Control&lt;/code&gt; largos para archivos de imagen (al menos 1 año)&lt;/li&gt;
&lt;li&gt;Compresión Brotli habilitada en el servidor&lt;/li&gt;
&lt;li&gt;CDN configurado con Image Resizing para conversión de formato automática&lt;/li&gt;
&lt;li&gt;Preload de la imagen LCP usando &lt;code&gt;&amp;#x3C;link rel=&quot;preload&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;La historia de TimThumb es una lección de humildad. La conveniencia (escalado al vuelo) no puede estar por encima de la seguridad. En 2026, tenemos &lt;code&gt;add_image_size()&lt;/code&gt; nativo, &lt;code&gt;srcset&lt;/code&gt; responsivo y CDNs procesando imágenes en la nube. No hay razón para volver a soluciones de hace 15 años.&lt;/p&gt;
&lt;p&gt;La gestión moderna de imágenes en WordPress se basa en tres pilares: generación de tamaños durante la subida con &lt;code&gt;add_image_size()&lt;/code&gt;, entrega responsiva con &lt;code&gt;srcset&lt;/code&gt; y &lt;code&gt;sizes&lt;/code&gt;, y optimización de formato con WebP/AVIF. Combinados con un CDN para la entrega, estos tres elementos proporcionan una experiencia de imagen rápida, segura y mantenible para cualquier sitio WordPress.&lt;/p&gt;</content:encoded><category>development</category><category>security</category><category domain="tag">images</category><category domain="tag">php</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/timthumb-nie-chce-wyswietlic-obrazkow-co-zrobic.jpg" type="image/jpeg"/></item><item><title>Formatos de video en WordPress: MOV, MP4 o WebM? (Adobe Effects y web)</title><link>https://wppoland.com/es/video-formats-wordpress-mov-mp4-webm/</link><guid isPermaLink="true">https://wppoland.com/es/video-formats-wordpress-mov-mp4-webm/</guid><description>Como importar y mostrar video correctamente en WordPress? Por que los archivos .mov de After Effects no funcionan? Guia de codecs y compresion para la web.</description><pubDate>Sat, 25 Jun 2011 14:48:38 GMT</pubDate><content:encoded>&lt;p&gt;Problema comun para disenadores de motion graphics y editores de video que comienzan con sitios web: “Hice una animacion hermosa en Adobe After Effects, renderice a &lt;code&gt;.mov&lt;/code&gt; (en la mejor calidad!), subi a WordPress… y nada. Pantalla negra, error, o el archivo pesa 500 MB y carga durante una hora.”&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.
Por que sucede esto? Porque internet opera con reglas diferentes a la postproducción cinematografica.&lt;/p&gt;
&lt;h2 id=&quot;el-problema-con-los-archivos-mov&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-con-los-archivos-mov&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema con los archivos .MOV&lt;/h2&gt;
&lt;p&gt;El formato &lt;code&gt;.mov&lt;/code&gt; (contenedor QuickTime) es estándar en el trabajo creativo, especialmente en Mac. A menudo usa el codec &lt;strong&gt;ProRes&lt;/strong&gt; o video sin comprimir. Excelente para archivado y edicion posterior, pero terrible para navegadores web.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sin soporte:&lt;/strong&gt; No todos los navegadores (especialmente en Windows/Android) reproducen nativamente los codecs QuickTime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tamaño:&lt;/strong&gt; Un archivo ProRes puede pesar 1 GB por minuto. En internet, apuntamos a 5-10 MB.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;por-que-prores-no-es-para-la-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-prores-no-es-para-la-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que ProRes no es para la web&lt;/h3&gt;
&lt;p&gt;El codec ProRes fue disenado para la edicion profesional de video, donde la prioridad es mantener la maxima calidad posible entre rondas de edicion. Cada fotograma se almacena con compresion minima, lo que resulta en archivos enormes pero perfectos para postproducción.&lt;/p&gt;
&lt;p&gt;Sin embargo, la web tiene prioridades completamente diferentes. Los usuarios esperan que los videos carguen en segundos, no minutos. Las conexiónes móviles tienen ancho de banda limitado. Y los navegadores necesitan codecs optimizados para decodificacion eficiente, no para edicion.&lt;/p&gt;
&lt;h3 id=&quot;la-trampa-del-mejor-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-trampa-del-mejor-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La trampa del “Mejor calidad”&lt;/h3&gt;
&lt;p&gt;Muchos diseñadores cometen el error de pensar que “mejor calidad = mejor experiencia para el usuario”. En realidad, un video de 500 MB que tarda 3 minutos en cargar ofrece una experiencia infinitamente peor que un video de 5 MB que carga al instante con una calidad visualmente identica para el espectador casual.&lt;/p&gt;
&lt;h2 id=&quot;estándar-html5-mp4-h264-y-webm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estándar-html5-mp4-h264-y-webm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estándar HTML5: MP4 (H.264) y WebM&lt;/h2&gt;
&lt;p&gt;Para que el video funcióne en el 99.9% de los dispositivos (desde iPhone hasta refrigeradores con Android), necesita usar estándares web.&lt;/p&gt;
&lt;h3 id=&quot;1-mp4-con-codec-h264-avc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-mp4-con-codec-h264-avc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. MP4 con codec H.264 (AVC)&lt;/h3&gt;
&lt;p&gt;Este es el “estándar de oro”. La eleccion más segura.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Funciona en todas partes.&lt;/li&gt;
&lt;li&gt;Buena calidad con tamaño reducido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Como hacerlo:&lt;/strong&gt; En Adobe Media Encoder, elija el formato &lt;strong&gt;H.264&lt;/strong&gt; (no QuickTime!). El preset “YouTube 1080p Full HD” o “Match Source - High Bitrate” es un buen punto de partida.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-optima-de-exportacion-h264&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-optima-de-exportacion-h264&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración optima de exportacion H.264&lt;/h3&gt;
&lt;p&gt;Para obtener los mejores resultados al exportar para WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resolución&lt;/strong&gt;: 1920x1080 para videos de contenido, 1280x720 para videos secundarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de bits&lt;/strong&gt;: Variable (VBR), 2 pasadas, objetivo 8-12 Mbps para 1080p&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fotogramás por segundo&lt;/strong&gt;: Mantenga el mismo que la fuente (generalmente 24, 25 o 30 fps)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audio&lt;/strong&gt;: AAC, 128-192 kbps, estereo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfil&lt;/strong&gt;: High (para maxima eficiencia de compresion)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-webm-con-codec-vp9-o-av1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-webm-con-codec-vp9-o-av1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. WebM con codec VP9 (o AV1)&lt;/h3&gt;
&lt;p&gt;Formato abierto desarrollado por Google.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A menudo 30-50% más pequeño que MP4 con la misma calidad.&lt;/li&gt;
&lt;li&gt;Ideal para navegadores modernos (Chrome, Firefox).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-futuro-codec-av1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-futuro-codec-av1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El futuro: codec AV1&lt;/h3&gt;
&lt;p&gt;AV1 es la proxima generación de codecs de video abiertos. Ofrece una compresion aun mejor que VP9, con archivos hasta un 50% más pequeños que H.264 con calidad equivalente. En 2026, el soporte de navegadores para AV1 ha mejorado significativamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chrome&lt;/strong&gt;: Soporte completo desde la versión 70&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firefox&lt;/strong&gt;: Soporte completo desde la versión 67&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safari&lt;/strong&gt;: Soporte desde la versión 17&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge&lt;/strong&gt;: Soporte completo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sin embargo, la codificacion AV1 es significativamente más lenta que H.264 o VP9, por lo que es más práctica para contenido que se codifica una vez y se reproduce muchas veces.&lt;/p&gt;
&lt;h2 id=&quot;estrategia-de-video-tag-en-html5&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-video-tag-en-html5&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de “Video Tag” en HTML5&lt;/h2&gt;
&lt;p&gt;La mejor práctica (si debe alojar video usted mismo, por ejemplo, como fondo de sección Hero) es proporcionar ambos formatos. El navegador elegira el que prefiera.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; autoplay&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loop&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; muted&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; playsinline&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; poster&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;thumbnail.jpg&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;animacion.webm&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video/webm&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;animacion.mp4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video/mp4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  Su navegador no soporta video.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note los atributos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;muted&lt;/code&gt;: Los navegadores móviles &lt;strong&gt;requieren&lt;/strong&gt; silenciar para permitir la reproducción automática.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playsinline&lt;/code&gt;: Requerido en iOS (iPhone) para que el video no abra pantalla completa inmediatamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;atributos-adicionales-importantes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#atributos-adicionales-importantes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Atributos adicionales importantes&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;video&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  autoplay&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  loop&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  muted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  playsinline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  poster&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;thumbnail.jpg&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  preload&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;metadata&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1920&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1080&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;preload=“metadata”&lt;/strong&gt;: Solo carga los metadatos del video (duracion, dimensiones) sin descargar el archivo completo. Esto mejora el tiempo de carga inicial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;width y height&lt;/strong&gt;: Siempre especifique las dimensiones para evitar el Cumulative Layout Shift (CLS), una metrica crítica de Core Web Vitals.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;optimización-del-tamaño-del-archivo-de-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-del-tamaño-del-archivo-de-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización del tamaño del archivo de video&lt;/h2&gt;
&lt;p&gt;El tamaño del archivo es crítico para la experiencia del usuario y el SEO. Un video que tarda demasiado en cargar aumenta la tasa de rebote y empeora los Core Web Vitals.&lt;/p&gt;
&lt;h3 id=&quot;tabla-de-referencia-de-tamaños-objetivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-de-referencia-de-tamaños-objetivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla de referencia de tamaños objetivo&lt;/h3&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Duracion&lt;/th&gt;&lt;th&gt;Resolución&lt;/th&gt;&lt;th&gt;Tamaño objetivo (H.264)&lt;/th&gt;&lt;th&gt;Tamaño objetivo (VP9)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;5 seg&lt;/td&gt;&lt;td&gt;1080p&lt;/td&gt;&lt;td&gt;1-2 MB&lt;/td&gt;&lt;td&gt;0.7-1.5 MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15 seg&lt;/td&gt;&lt;td&gt;1080p&lt;/td&gt;&lt;td&gt;3-5 MB&lt;/td&gt;&lt;td&gt;2-3.5 MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;30 seg&lt;/td&gt;&lt;td&gt;1080p&lt;/td&gt;&lt;td&gt;5-10 MB&lt;/td&gt;&lt;td&gt;3.5-7 MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;60 seg&lt;/td&gt;&lt;td&gt;1080p&lt;/td&gt;&lt;td&gt;10-20 MB&lt;/td&gt;&lt;td&gt;7-14 MB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5 min&lt;/td&gt;&lt;td&gt;1080p&lt;/td&gt;&lt;td&gt;YouTube&lt;/td&gt;&lt;td&gt;YouTube&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;herramientas-de-compresion-gratuitas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-compresion-gratuitas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de compresion gratuitas&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;HandBrake&lt;/strong&gt;: Aplicación gratuita y de código abierto para conversión de video. Soporta H.264, H.265 y VP9.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FFmpeg&lt;/strong&gt;: Herramienta de linea de comandos extremadamente poderosa para cualquier operación de video.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shutter Encoder&lt;/strong&gt;: Interfaz grafica para FFmpeg, más fácil de usar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ejemplo-de-compresion-con-ffmpeg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-de-compresion-con-ffmpeg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo de compresion con FFmpeg&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Convertir MOV a MP4 optimizado para web&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; input.mov&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; libx264&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -preset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; slow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -crf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 23&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c:a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; aac&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -b:a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; 128k&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; output.mp4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Convertir a WebM con VP9&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; input.mov&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; libvpx-vp9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -crf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 30&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -b:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c:a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; libopus&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -b:a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; 128k&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; output.webm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Crear versión para móvil (720p)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; input.mov&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -vf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; scale=1280:720&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; libx264&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -preset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; slow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -crf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 23&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; output-mobile.mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El parametro &lt;code&gt;-crf&lt;/code&gt; controla la calidad: valores más bajos significan mayor calidad y mayor tamaño de archivo. Para web, un CRF de 23-28 para H.264 o 30-35 para VP9 ofrece un excelente equilibrio.&lt;/p&gt;
&lt;h2 id=&quot;o-quizas-youtube--vimeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#o-quizas-youtube--vimeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;O quizas YouTube / Vimeo?&lt;/h2&gt;
&lt;p&gt;Si su video tiene sonido, dura más de 30 segundos y es contenido (por ejemplo, vlog, entrevista), &lt;strong&gt;no lo suba a WordPress&lt;/strong&gt;. Use YouTube o Vimeo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ahorra ancho de banda del servidor.&lt;/li&gt;
&lt;li&gt;Estas plataformas ajustan automáticamente la calidad a la conexión del usuario (streaming adaptativo). WordPress no puede hacer esto: intentara descargar el archivo grande completo, tartamudeando en conexiónes LTE debiles.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cuando-alojar-video-en-su-propio-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-alojar-video-en-su-propio-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando alojar video en su propio servidor&lt;/h3&gt;
&lt;p&gt;Hay situaciones específicas donde el alojamiento propio tiene sentido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Videos de fondo&lt;/strong&gt;: Animaciones cortas y sin sonido para secciones hero&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Videos privados&lt;/strong&gt;: Contenido que no debe estar en plataformas publicas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requisitos de marca&lt;/strong&gt;: Cuando necesita un reproductor completamente personalizado sin logotipos de terceros&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velocidad de carga&lt;/strong&gt;: Para videos muy cortos, la incrustacion de YouTube puede ser más lenta que servir un archivo de 2 MB directamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;cuando-usar-youtube-o-vimeo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-usar-youtube-o-vimeo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando usar YouTube o Vimeo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cualquier video con sonido&lt;/strong&gt; de más de 30 segundos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido educativo o de marketing&lt;/strong&gt; que se beneficia de la búsqueda de YouTube&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Videos que desea que se compartan&lt;/strong&gt; en redes sociales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitios con ancho de banda limitado&lt;/strong&gt; donde el streaming adaptativo es esencial&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;implementación-responsive-de-video-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-responsive-de-video-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación responsive de video en WordPress&lt;/h2&gt;
&lt;p&gt;En 2026, el video debe adaptarse a todos los tamaños de pantalla. WordPress no maneja esto automáticamente para videos autoalojados.&lt;/p&gt;
&lt;h3 id=&quot;css-para-video-responsive&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#css-para-video-responsive&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;CSS para video responsive&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Contenedor responsive para video */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.video-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;relative&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    padding-bottom&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;56.25&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Ratio 16:9 */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    overflow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.video-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.video-container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; iframe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    top&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    left&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    object-fit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;servir-diferentes-resoluciones-según-el-dispositivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#servir-diferentes-resoluciones-según-el-dispositivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Servir diferentes resoluciones según el dispositivo&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; autoplay&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loop&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; muted&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; playsinline&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  &amp;#x3C;!-- Dispositivos móviles: 720p --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video-720p.webm&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video/webm&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;(max-width: 768px)&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  &amp;#x3C;!-- Desktop: 1080p --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video-1080p.webm&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video/webm&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video-1080p.mp4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video/mp4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;accesibilidad-del-video-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#accesibilidad-del-video-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Accesibilidad del video en WordPress&lt;/h2&gt;
&lt;p&gt;El video accesible no es solo una buena práctica: es un requisito legal en muchas jurisdicciones y mejora el SEO.&lt;/p&gt;
&lt;h3 id=&quot;requisitos-minimos-de-accesibilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#requisitos-minimos-de-accesibilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Requisitos minimos de accesibilidad&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Subtitulos cerrados&lt;/strong&gt;: Para usuarios sordos o con dificultades auditivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audio descripción&lt;/strong&gt;: Para usuarios ciegos, describiendo elementos visuales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controles de teclado&lt;/strong&gt;: El reproductor debe ser navegable sin raton&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Texto alternativo&lt;/strong&gt;: La miniatura del video debe tener un atributo alt descriptivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin autoplay con sonido&lt;/strong&gt;: Los videos con sonido nunca deben reproducirse automáticamente&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;carga-diferida-para-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#carga-diferida-para-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Carga diferida para rendimiento&lt;/h3&gt;
&lt;p&gt;WordPress 5.5+ incluye soporte nativo de carga diferida para videos, pero puede optimizar aun mas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Agregar loading=&quot;lazy&quot; a videos autoalojados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($content) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; str_replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&amp;#x3C;video&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&amp;#x3C;video loading=&quot;lazy&quot;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $content);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen-del-flujo-de-trabajo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-del-flujo-de-trabajo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen del flujo de trabajo&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Trabaje en After Effects/Premiere con archivos de alta calidad (&lt;code&gt;.mov&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Exporte para web a través de Adobe Media Encoder como &lt;strong&gt;H.264 (.mp4)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Si quiere ser profesional: convierta una copia a WebM (por ejemplo, con el programa gratuito HandBrake).&lt;/li&gt;
&lt;li&gt;Al subir a la biblioteca de medios de WordPress, asegurese de que el archivo sea menor de 10-20 MB. Si es más -&gt; YouTube.&lt;/li&gt;
&lt;li&gt;Siempre especifique dimensiones de ancho y alto para evitar Layout Shift.&lt;/li&gt;
&lt;li&gt;Use la etiqueta &lt;code&gt;&amp;#x3C;video&gt;&lt;/code&gt; con multiples fuentes para compatibilidad maxima.&lt;/li&gt;
&lt;li&gt;Implemente carga diferida para videos que no estan en la parte visible inicial.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La gestión correcta de formatos de video es fundamental para cualquier sitio WordPress moderno. La diferencia entre un sitio que muestra video profesionalmente y uno que lucha con archivos incompatibles o tiempos de carga excesivos radica en entender estas reglas básicas de codecs, contenedores y optimización para web.&lt;/p&gt;</content:encoded><category>design</category><category>wordpress</category><category>video</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/jak-zaimportowac-pliki-mov-adobe-effects.jpg" type="image/jpeg"/></item><item><title>Temás de bloques vs temas clásicos de WordPress en 2026</title><link>https://wppoland.com/es/classic-vs-block-themes-fse-guide/</link><guid isPermaLink="true">https://wppoland.com/es/classic-vs-block-themes-fse-guide/</guid><description>Compara los temas de bloques y los temas clásicos de WordPress en 2026. Descubre cuando FSE tiene sentido, cuando los temas PHP clásicos siguen ganando y como theme.json cambia el desarrollo de temas.</description><pubDate>Wed, 15 Jun 2011 18:59:45 GMT</pubDate><content:encoded>&lt;p&gt;Durante más de una decada (2010-2020), el desarrollo de temas WordPress se veia igual: Creabas &lt;code&gt;header.php&lt;/code&gt;, &lt;code&gt;footer.php&lt;/code&gt;, un loop en &lt;code&gt;index.php&lt;/code&gt; y estilos en &lt;code&gt;style.css&lt;/code&gt;. La lógica estaba en PHP, la apariencia en CSS.&lt;/p&gt;
&lt;p&gt;Con WordPress 5.9 llego la revolucion del &lt;strong&gt;Full Site Editing (FSE)&lt;/strong&gt; (ahora simplemente llamado “Editor del sitio”), y en 2026 enfrentamos un dilema: Debemos seguir escribiendo temas en PHP, o cambiar completamente a bloques y HTML?&lt;/p&gt;
&lt;p&gt;En este artículo, desglosaremos las diferencias entre &lt;strong&gt;Temás clásicos&lt;/strong&gt;, &lt;strong&gt;Temás de bloques&lt;/strong&gt; y el enfoque &lt;strong&gt;hibrido&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Respuesta corta: elige un &lt;strong&gt;tema de bloques&lt;/strong&gt; cuando quieras edicion moderna, mejores Core Web Vitals y una hoja de ruta WordPress más limpia a largo plazo. Mantiene un &lt;strong&gt;tema clásico&lt;/strong&gt; cuando el proyecto todavia depende de plantillas PHP personalizadas, control estricto de layout o un flujo de trabajo pesado con page builders.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-anatomia-php-vs-html&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-anatomia-php-vs-html&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Anatomia: PHP vs HTML&lt;/h2&gt;
&lt;p&gt;Esta es una diferencia fundamental que aterroriza a muchos programadores de la “vieja escuela”.&lt;/p&gt;
&lt;h3 id=&quot;tema-clásico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tema-clásico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tema clásico&lt;/h3&gt;
&lt;p&gt;Basado en archivos PHP. Cuando WordPress carga una página, el motor PHP combina el header, el loop y el footer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estructura:&lt;/strong&gt; &lt;code&gt;header.php&lt;/code&gt;, &lt;code&gt;page.php&lt;/code&gt;, &lt;code&gt;sidebar.php&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lógica:&lt;/strong&gt; Puedes mezclar libremente código PHP con HTML (ej., &lt;code&gt;if ( is_user_logged_in() )&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ventaja:&lt;/strong&gt; Control total sobre el código, fácil de inyectar lógica de negocio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desventaja:&lt;/strong&gt; El usuario no puede editar el header sin conocer código.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tema-de-bloques&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tema-de-bloques&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tema de bloques&lt;/h3&gt;
&lt;p&gt;Basado en archivos HTML con comentarios de bloques. No hay PHP en los archivos de plantilla.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estructura:&lt;/strong&gt; &lt;code&gt;templates/index.html&lt;/code&gt;, &lt;code&gt;parts/header.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lógica:&lt;/strong&gt; Ninguna. Los archivos de plantilla son HTML estatico. Toda la dinámica depende de bloques (ej., &lt;code&gt;&amp;#x3C;!-- wp:post-title /--&gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ventaja:&lt;/strong&gt; El usuario puede editar TODO el sitio (incluyendo el header) en el editor visual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desventaja:&lt;/strong&gt; Mas dificil agregar lógica PHP personalizada (requiere crear bloques personalizados o Shortcodes).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-el-corazon-del-tema-functionsphp-vs-themejson&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-el-corazon-del-tema-functionsphp-vs-themejson&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. El corazon del tema: &lt;code&gt;functions.php&lt;/code&gt; vs &lt;code&gt;theme.json&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;En la era clásica, &lt;code&gt;functions.php&lt;/code&gt; era un vertedero para todo: registrar menús, sidebars, tamaños de imagen y cargar CSS.&lt;/p&gt;
&lt;p&gt;En la era de bloques, &lt;strong&gt;&lt;code&gt;theme.json&lt;/code&gt;&lt;/strong&gt; toma el control. Es un poderoso archivo de configuración que controla:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Paleta de colores:&lt;/strong&gt; Defines los colores disponibles para el usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipografia:&lt;/strong&gt; Tamaños de fuente, familias tipograficas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layout:&lt;/strong&gt; Ancho del contenedor (contentSize, wideSize).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disponibilidad de bloques:&lt;/strong&gt; Puedes bloquear al usuario de usar bloques específicos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de &lt;code&gt;theme.json&lt;/code&gt; en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;versión&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;settings&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;palette&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#0055FF&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Azul marca&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    &quot;typography&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      &quot;fontSizes&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;slug&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;small&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;14px&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En lugar de escribir 500 lineas de CSS, configuras esto en JSON, y WordPress genera CSS optimizado y variables CSS en el frontend y en el editor.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-que-pasa-con-los-widgets-y-menús&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-que-pasa-con-los-widgets-y-menús&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Que pasa con los widgets y menús?&lt;/h2&gt;
&lt;p&gt;En los temas de bloques, &lt;strong&gt;no hay pantalla de Widgets ni de Menús&lt;/strong&gt; (en &lt;code&gt;Apariencia -&gt; Menús&lt;/code&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En lugar de Widgets, tienes &lt;strong&gt;Partes de plantilla&lt;/strong&gt;. El footer es simplemente un meta-archivo HTML que editas como cualquier otro post.&lt;/li&gt;
&lt;li&gt;En lugar de Menús, tienes el &lt;strong&gt;Bloque de navegación&lt;/strong&gt;. Lo editas directamente en el header.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para los clientes acostumbrados al WP antiguo, esto es un choque cultural. “Donde estan mis widgets?!”. Se fueron. Ahora todo es un bloque.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Rendimiento&lt;/h2&gt;
&lt;p&gt;Aqui los temas de bloques ganan por KO.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Carga de estilos:&lt;/strong&gt; WordPress carga CSS solo para los bloques que estan realmente en la página. Los temas clásicos a menudo cargan un gran &lt;code&gt;style.css&lt;/code&gt; (100KB) en cada subpágina.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTML:&lt;/strong&gt; La estructura generada por FSE es (generalmente) más limpia, aunque puede tener “div-itis” (muchos wrappers).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core Web Vitals:&lt;/strong&gt; Los temas de bloques como &lt;em&gt;Twenty Twenty-Six&lt;/em&gt; obtienen 100/100 en Lighthouse casí “de fabrica”.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-estrategia-para-2026-que-elegir&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-estrategia-para-2026-que-elegir&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Estrategia para 2026: Que elegir?&lt;/h2&gt;
&lt;p&gt;Como agencia o freelancer, debes decidir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige un tema clásico (o hibrido) si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estas construyendo un portal complejo con mucha lógica PHP en las vistas (ej., condiciones de visualización avanzadas).&lt;/li&gt;
&lt;li&gt;El clientes es un “Tecnofobo” y temes que rompa el layout si le das edicion completa (FSE).&lt;/li&gt;
&lt;li&gt;Usas un Page Builder (Elementor/Divi) - todavia funcionan mejor en estructura clásica.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elige un tema de bloques si:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estas construyendo un sitio corporativo simple, blog o portfolio.&lt;/li&gt;
&lt;li&gt;Te importa el maximo rendimiento (PageSpeed verde).&lt;/li&gt;
&lt;li&gt;Quieres ser “Future Proof” (el Core de WordPress desarrolla principalmente FSE).&lt;/li&gt;
&lt;li&gt;El clientes quiere la capacidad de editar footers y headers por si mismo sin llamarte.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;el-enfoque-hibrido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-enfoque-hibrido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El enfoque hibrido&lt;/h3&gt;
&lt;p&gt;Esta es la media dorada. Un tema PHP clásico que agrega soporte para &lt;code&gt;theme.json&lt;/code&gt; (para tener la paleta de colores y tipografia en Gutenberg) pero mantiene &lt;code&gt;header.php&lt;/code&gt; para seguridad estructural.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tema-de-bloques-vs-tema-clasico-de-wordpress-cual-elegir-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tema-de-bloques-vs-tema-clasico-de-wordpress-cual-elegir-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tema de bloques vs tema clasico de WordPress: cual elegir en 2026&lt;/h2&gt;
&lt;p&gt;La decision depende de tres factores: complejidad del proyecto, habilidades tecnicas del cliente y requisitos de mantenimiento a largo plazo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige un tema de bloques cuando:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El cliente necesita editar headers, footers y plantillas sin ayuda del desarrollador&lt;/li&gt;
&lt;li&gt;El rendimiento es prioridad (los temas de bloques cargan solo el CSS de los bloques realmente usados)&lt;/li&gt;
&lt;li&gt;Quieres usar &lt;code&gt;theme.json&lt;/code&gt; para design tokens (colores, tipografia, espaciado) en lugar de CSS disperso&lt;/li&gt;
&lt;li&gt;El proyecto es una construcción nueva sin código legacy que mantener&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Elige un tema clasico cuando:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Necesitas logica PHP compleja en plantillas (loops personalizados, layouts condicionales, overrides de WooCommerce)&lt;/li&gt;
&lt;li&gt;El proyecto depende de widgets, menus clasicos o el Customizer&lt;/li&gt;
&lt;li&gt;Tu equipo tiene profunda experiencia en PHP pero limitada experiencia en desarrollo de bloques Gutenberg&lt;/li&gt;
&lt;li&gt;Estas manteniendo un sitio existente y el coste de migracion supera el beneficio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;El enfoque hibrido:&lt;/strong&gt; Muchos proyectos WordPress profesionales en 2026 usan un tema clasico con soporte selectivo de bloques. Registra patrones de bloques y plantillas donde anadan valor, mantiene plantillas PHP donde ofrezcan mas control. WordPress no obliga a una eleccion de todo o nada.&lt;/p&gt;
&lt;p&gt;Para &lt;a href=&quot;/es/guia-completa-wordpress-7-0-integracion-ia/&quot;&gt;WordPress 7.0&lt;/a&gt;, los temas de bloques ganaran funciones adicionales impulsadas por IA a traves de la Abilities API, haciendo que la ruta FSE sea cada vez mas atractiva para nuevos proyectos.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.
El mundo WordPress se ha dividido en dos campos. No luches contra ello. Aprende la sintaxis de &lt;code&gt;theme.json&lt;/code&gt; - es una habilidad tan importante en 2026 como conocer CSS lo era en 2015.&lt;/p&gt;</content:encoded><category>wordpress</category><category>frontend</category><category>architecture</category><category domain="tag">fse</category><category domain="tag">full site editing</category><category domain="tag">gutenberg</category><category domain="tag">theme.json</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Guia técnica de SEO para afiliados en WordPress (2026)</title><link>https://wppoland.com/es/technical-affiliate-seo-guide/</link><guid isPermaLink="true">https://wppoland.com/es/technical-affiliate-seo-guide/</guid><description>No dependas de plugins para el enmascaramiento de enlaces. Aprende a gestionar enlaces de afiliados con `rel=&apos;sponsored&apos;`, redirecciones nativas y seguimiento de rendimiento.</description><pubDate>Thu, 02 Jun 2011 21:44:59 GMT</pubDate><content:encoded>&lt;p&gt;El marketing de afiliados es un modelo de negocio válido, pero técnicamente, a menudo se implementa mal en WordPress. Plugins sobrecargados, atributos &lt;code&gt;rel&lt;/code&gt; faltantes y redirecciones lentas pueden matar tu SEO y tus conversiones.&lt;/p&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;1-el-estándar-relsponsored&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-el-estándar-relsponsored&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. El estándar &lt;code&gt;rel=&quot;sponsored&quot;&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Desde 2019, Google requiere que todos los enlaces pagados o de afiliados tengan el atributo &lt;code&gt;rel=&quot;sponsored&quot;&lt;/code&gt;. Anteriormente, &lt;code&gt;rel=&quot;nofollow&quot;&lt;/code&gt; era suficiente. Ahora, hay que ser específico.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- MAL --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://shareasale.com/r?u=123&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Comprar Ahora&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- ACEPTABLE --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://shareasale.com/r?u=123&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;nofollow&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Comprar Ahora&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- MEJOR (Estandar 2026) --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;https://shareasale.com/r?u=123&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; rel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;sponsored noopener noreferrer&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Comprar Ahora&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Por que?&lt;/strong&gt; Usa &lt;code&gt;noopener noreferrer&lt;/code&gt; para seguridad (target=“_blank”) y &lt;code&gt;sponsored&lt;/code&gt; para proteger tu sitio de penalizaciones manuales.&lt;/p&gt;
&lt;h2 id=&quot;2-enmascaramiento-de-enlaces-necesitas-un-plugin&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-enmascaramiento-de-enlaces-necesitas-un-plugin&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Enmascaramiento de enlaces: Necesitas un plugin?&lt;/h2&gt;
&lt;p&gt;El “cloaking” convierte enlaces feos (&lt;code&gt;shareasale.com/r?u=123&lt;/code&gt;) en enlaces bonitos (&lt;code&gt;tusitio.com/ir/producto&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;La mayoria de las personas instalan “ThirstyAffiliates” o “PrettyLinks”. &lt;strong&gt;Problema:&lt;/strong&gt; Estos plugins cargan CSS/JS extra en &lt;em&gt;cada página&lt;/em&gt;, incluso si no hay enlaces de afiliados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La Forma del Desarrollador (Redirecciones Nativas):&lt;/strong&gt;
Si tienes acceso a la configuración de tu servidor (Nginx/Apache), maneja las redirecciones alli. Es 10 veces más rápido porque PHP ni siquiera arranca.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo Nginx:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;nginx&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; /ir/hosting &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; https://kinsta.com/?kaid=EJEMPLO;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Forma WordPress (Tipo de Post):&lt;/strong&gt;
Crea un CPT llamado &lt;code&gt;affiliate_links&lt;/code&gt;. Usa el slug del post como la clave de redireccion. Almacena la URL en post meta. Intercepta la solicitud en &lt;code&gt;template_redirect&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;affiliate_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;destination_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($url) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            wp_redirect&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($url, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;301&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O 302/307&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            exit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cero sobrecarga.&lt;/p&gt;
&lt;h2 id=&quot;3-divulgaciones-y-cumplimiento-ftc--normativa-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-divulgaciones-y-cumplimiento-ftc--normativa-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Divulgaciones y cumplimiento (FTC / normativa local)&lt;/h2&gt;
&lt;p&gt;Técnicamente, debes mostrar una divulgacion &lt;em&gt;antes&lt;/em&gt; del enlace. Usa un Bloque reutilizable o Shortcode para inyectar esto automáticamente en la parte superior de los posts de Resena.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; affiliate_disclosure_shortcode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div class=&quot;disclaimer&quot;&gt;Los enlaces marcados con * son enlaces de afiliados.&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_shortcode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ad&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;affiliate_disclosure_shortcode&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;4-seguimiento-del-rendimiento-de-afiliados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-seguimiento-del-rendimiento-de-afiliados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Seguimiento del rendimiento de afiliados&lt;/h2&gt;
&lt;p&gt;No confies solo en los paneles de control de las redes de afiliados. Implementa tu propio seguimiento para tener datos más completos y control sobre las metricas:&lt;/p&gt;
&lt;h3 id=&quot;parametros-utm-para-seguimiento-granular&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#parametros-utm-para-seguimiento-granular&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Parametros UTM para seguimiento granular&lt;/h3&gt;
&lt;p&gt;Agrega parametros UTM a todos tus enlaces de afiliados para rastrear exactamente de donde vienen las conversiones:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;https://tusitio.com/ir/producto?utm_source=blog&amp;#x26;utm_medium=affiliate&amp;#x26;utm_campaign=review-producto&amp;#x26;utm_content=cta-principal&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;eventos-personalizados-en-google-analytics-4&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eventos-personalizados-en-google-analytics-4&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eventos personalizados en Google Analytics 4&lt;/h3&gt;
&lt;p&gt;Configura eventos personalizados para rastrear clics en enlaces de afiliados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a[rel*=&quot;sponsored&quot;]&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    link.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        gtag&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;event&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;affiliate_click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;affiliate_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.href,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;page_location&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: window.location.href,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;link_text&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.textContent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;dashboard-de-metricas-clave&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dashboard-de-metricas-clave&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dashboard de metricas clave&lt;/h3&gt;
&lt;p&gt;Monitorea estas metricas regularmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CTR (Tasa de Clics)&lt;/strong&gt;: Porcentaje de visitantes que hacen clic en enlaces de afiliados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EPC (Ganancias Por Clic)&lt;/strong&gt;: Ingresos promedio por cada clic de afiliado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de conversión&lt;/strong&gt;: Porcentaje de clics que resultan en ventas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ingresos por página&lt;/strong&gt;: Que páginas generan más ingresos de afiliados&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-optimización-de-velocidad-para-páginas-con-enlaces-de-afiliados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-optimización-de-velocidad-para-páginas-con-enlaces-de-afiliados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Optimización de velocidad para páginas con enlaces de afiliados&lt;/h2&gt;
&lt;p&gt;Los enlaces de afiliados no deberian ralentizar tu sitio. Sigue estas prácticas:&lt;/p&gt;
&lt;h3 id=&quot;carga-diferida-de-scripts-de-seguimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#carga-diferida-de-scripts-de-seguimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Carga diferida de scripts de seguimiento&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cargar scripts de seguimiento de afiliados solo cuando sea necesario&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_conditional_affiliate_scripts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_singular&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; has_shortcode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_content&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;affiliate_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;affiliate-tracking&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_template_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/js/affiliate-tracking.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, [], &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;1.0&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_conditional_affiliate_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;prefetch-para-mejores-tiempos-de-carga&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prefetch-para-mejores-tiempos-de-carga&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prefetch para mejores tiempos de carga&lt;/h3&gt;
&lt;p&gt;Agrega &lt;code&gt;dns-prefetch&lt;/code&gt; para los dominios de afiliados más utilizados:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_affiliate_prefetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;link rel=&quot;dns-prefetch&quot; href=&quot;//shareasale.com&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;link rel=&quot;dns-prefetch&quot; href=&quot;//amazon.es&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_affiliate_prefetch&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;6-cumplimiento-gdpr-para-enlaces-de-afiliados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-cumplimiento-gdpr-para-enlaces-de-afiliados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Cumplimiento GDPR para enlaces de afiliados&lt;/h2&gt;
&lt;p&gt;En la Union Europea, los enlaces de afiliados implican procesamiento de datos. Asegurate de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Informar en la politica de privacidad&lt;/strong&gt;: Menciona que usas enlaces de afiliados y que cookies se establecen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consentimiento de cookies&lt;/strong&gt;: Los scripts de seguimiento de afiliados deben esperar al consentimiento del usuario&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparencia&lt;/strong&gt;: Indica claramente que contenido contiene enlaces de afiliados&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Solo cargar seguimiento de afiliados despues del consentimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_affiliate_after_consent&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_COOKIE[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cookie_consent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $_COOKIE[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cookie_consent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;accepted&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Cargar scripts de seguimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;affiliate-tracking&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_enqueue_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_affiliate_after_consent&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;7-errores-comunes-a-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-errores-comunes-a-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Errores comunes a evitar&lt;/h2&gt;
&lt;h3 id=&quot;enlaces-rotos-de-afiliados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enlaces-rotos-de-afiliados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enlaces rotos de afiliados&lt;/h3&gt;
&lt;p&gt;Los programás de afiliados cambian URLs frecuentemente. Implementa una verificación periodica:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// WP-CLI command para verificar enlaces de afiliados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// wp eval &apos;check_affiliate_links();&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; check_affiliate_links&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;affiliate_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($links &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $link) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $url &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;ID, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;destination_url&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $response &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_remote_head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($url, [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;timeout&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $code &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_remote_retrieve_response_code&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($response);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($code &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;            error_log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Enlace de afiliado roto: {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$link&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;post_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;} -&gt; {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;} (HTTP {&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$code&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;})&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;sobreoptimización-del-texto-ancla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sobreoptimización-del-texto-ancla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sobreoptimización del texto ancla&lt;/h3&gt;
&lt;p&gt;No uses siempre el mismo texto ancla comercial. Varia entre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nombre de marca: “Visita Kinsta”&lt;/li&gt;
&lt;li&gt;Generico: “consulta esta herramienta”&lt;/li&gt;
&lt;li&gt;URL desnuda: “kinsta.com”&lt;/li&gt;
&lt;li&gt;Frase natural: “la solución de hosting que uso”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;demasiados-enlaces-por-página&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#demasiados-enlaces-por-página&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Demasiados enlaces por página&lt;/h3&gt;
&lt;p&gt;Limita los enlaces de afiliados a maximo 3-5 por artículo. Demasiados enlaces diluyen el valor y parecen spam tanto para usuarios como para Google.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Etiquetado&lt;/strong&gt;: Siempre usa &lt;code&gt;rel=&quot;sponsored&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Evita plugins pesados para redirecciones simples. Usa redirecciones del servidor o un CPT ligero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumplimiento&lt;/strong&gt;: Automatiza las divulgaciones con Bloques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguimiento&lt;/strong&gt;: Implementa UTM y eventos GA4 para datos completos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GDPR&lt;/strong&gt;: Respeta el consentimiento del usuario antes de cargar scripts de seguimiento.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Manten tu stack de afiliados ligero. Velocidad = Conversiones.&lt;/p&gt;
&lt;p&gt;Explora nuestros servicios de &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; para maximizar el rendimiento de tus páginas de afiliados.&lt;/p&gt;</content:encoded><category>marketing</category><category>devops</category><category domain="tag">affiliate</category><category domain="tag">redirects</category><category domain="tag">rel-sponsored</category><enclosure url="https://wppoland.com/images/og/zdobywanie-linkow-przez-programy-partnerskie-i-lojalnosciowe.jpg" type="image/jpeg"/></item><item><title>SSH para desarrolladores de WordPress: 10 comandos que salvaran su vida</title><link>https://wppoland.com/es/ssh-for-wordpress-developers-guide/</link><guid isPermaLink="true">https://wppoland.com/es/ssh-for-wordpress-developers-guide/</guid><description>Le asusta la terminal? No deberia. Aprenda du, grep, tar, tail y find para acelerar su flujo de trabajo un 1000% comparado con FTP.</description><pubDate>Thu, 19 May 2011 18:03:00 GMT</pubDate><content:encoded>&lt;p&gt;Como &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador de WordPress&lt;/a&gt;, probablemente pasa mucho tiempo en un clientes FTP (FileZilla) o panel de hosting. Eso es un error. Lo que toma 15 minutos en FTP (ej. eliminar una carpeta &lt;code&gt;cache&lt;/code&gt; con 100,000 archivos) toma 2 segundos en la terminal SSH.&lt;/p&gt;
&lt;p&gt;En esta guía, le mostrare un conjunto de comandos que los desarrolladores senior no pueden imaginar trabajar sin ellos.&lt;/p&gt;
&lt;h2 id=&quot;por-que-todo-desarrollador-de-wordpress-necesita-ssh&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-todo-desarrollador-de-wordpress-necesita-ssh&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que todo desarrollador de WordPress necesita SSH&lt;/h2&gt;
&lt;p&gt;Antes de sumergirnos en los comandos, entendamos por que SSH es transformador para el desarrollo de WordPress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Velocidad&lt;/strong&gt;: Las operaciones se ejecutan a la velocidad del disco del servidor, no de su conexión a internet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatizacion&lt;/strong&gt;: Puede crear scripts que automatizan tareas repetitivas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Depuracion en vivo&lt;/strong&gt;: Vea errores en tiempo real mientras se producen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestión remota&lt;/strong&gt;: Administre servidores desde cualquier lugar del mundo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Conexión cifrada de extremo a extremo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuración-inicial-de-ssh&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-inicial-de-ssh&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración inicial de SSH&lt;/h3&gt;
&lt;p&gt;Si nunca ha usado SSH, aquí esta como comenzar:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Generar par de claves SSH (solo la primera vez)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ssh-keygen&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ed25519&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -C&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;su-email@ejemplo.com&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Copiar clave publica al servidor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ssh-copy-id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@ip-del-servidor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Conectarse al servidor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ssh&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@ip-del-servidor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La autenticación por claves es más segura que contrasenas y elimina la necesidad de escribir la contrasena cada vez.&lt;/p&gt;
&lt;h2 id=&quot;1-análisis-de-disco-que-esta-consumiendo-mi-espacio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-análisis-de-disco-que-esta-consumiendo-mi-espacio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Análisis de disco: Que esta consumiendo mi espacio?&lt;/h2&gt;
&lt;p&gt;Cuando el hosting grita “Cuota Excedida”, FileZilla no ayudara. Use esto:&lt;/p&gt;
&lt;h3 id=&quot;du-disk-usage&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#du-disk-usage&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;du&lt;/code&gt; (disk usage)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Mostrar carpetas en el directorio actual, ordenadas por tamaño&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;du&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -h&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --max-depth=1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sort&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -hr&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejemplo de salida:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2.1G    ./wp-content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;450M    ./wp-content/uploads&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;380M    ./wp-content/cache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;120M    ./wp-content/plugins&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;45M     ./wp-admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;12M     ./wp-includes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inmediatamente puede ver que la carpeta de cache consume 380MB y puede ser limpiada de forma segura.&lt;/p&gt;
&lt;h3 id=&quot;ncdu-ncurses-disk-usage&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ncdu-ncurses-disk-usage&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;ncdu&lt;/code&gt; (ncurses disk usage)&lt;/h3&gt;
&lt;p&gt;Si puede, ejecute &lt;code&gt;ncdu&lt;/code&gt;. Es un gestor interactivo que navega con las flechas. Un absoluto “cambio de juego” para la limpieza de servidores.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Instalar ncdu (si no esta disponible)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;apt-get&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ncdu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  # Debian/Ubuntu&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;yum&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ncdu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;      # CentOS/RHEL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ejecutar en el directorio de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ncdu&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-logs-depuracion-en-tiempo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-logs-depuracion-en-tiempo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Logs: Depuracion en tiempo real&lt;/h2&gt;
&lt;p&gt;En lugar de descargar &lt;code&gt;debug.log&lt;/code&gt;, abrirlo con Bloc de Notas y buscar errores… vealos en vivo!&lt;/p&gt;
&lt;h3 id=&quot;tail--f&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tail--f&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;tail -f&lt;/code&gt;&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Seguir las ultimás lineas del archivo en tiempo real&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/debug.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora refresque la página en su navegador, y los errores apareceran en pantalla. Salga con &lt;code&gt;Ctrl+C&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;filtrar-logs-en-tiempo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#filtrar-logs-en-tiempo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Filtrar logs en tiempo real&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Solo ver errores fatales&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/debug.log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;fatal&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver errores de un plugin específico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/debug.log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;woocommerce&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Mostrar las ultimás 100 lineas y luego seguir&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -100f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/debug.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;logs-del-servidor-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#logs-del-servidor-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Logs del servidor web&lt;/h3&gt;
&lt;p&gt;Además del debug.log de WordPress, los logs del servidor web son invaluables:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Apache - ver errores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/log/apache2/error.log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Nginx - ver errores&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/log/nginx/error.log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver solicitudes 404 en tiempo real&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/log/apache2/access.log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot; 404 &quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-búsqueda-de-archivos-donde-esta-ese-código&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-búsqueda-de-archivos-donde-esta-ese-código&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Búsqueda de archivos: Donde esta ese código?!&lt;/h2&gt;
&lt;p&gt;Buscando donde se uso &lt;code&gt;add_image_size&lt;/code&gt;? No descargue todo el proyecto.&lt;/p&gt;
&lt;h3 id=&quot;grep&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#grep&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Buscar la frase &quot;add_image_size&quot; en todos los archivos PHP recursivamente&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;add_image_size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si solo quiere una lista de archivos (sin contenido):&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;add_image_size&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;búsquedas-avanzadas-con-grep&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#búsquedas-avanzadas-con-grep&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Búsquedas avanzadas con grep&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Buscar con contexto (3 lineas antes y despues)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -C&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;wp_enqueue_script&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/themes/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Buscar solo en archivos PHP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --include=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;*.php&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;add_action&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/plugins/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Buscar excluyendo directorios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --exclude-dir=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;node_modules,vendor,.git}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;API_KEY&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Contar ocurrencias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;do_action&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/plugins/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sort&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -t:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -k2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -10&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-permisos-arreglar-403-forbidden&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-permisos-arreglar-403-forbidden&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Permisos: Arreglar “403 Forbidden”&lt;/h2&gt;
&lt;p&gt;A menudo despues de una migración, los archivos tienen permisos incorrectos. Recuerde la regla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Directorios: &lt;strong&gt;755&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Archivos: &lt;strong&gt;644&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;find--chmod&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#find--chmod&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;find&lt;/code&gt; + &lt;code&gt;chmod&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;No lo haga manualmente. Automaticelo:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Establecer 755 para todos los directorios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 755&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Establecer 644 para todos los archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -exec&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 644&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; \;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;permisos-especiales-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#permisos-especiales-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Permisos especiales de seguridad&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## wp-config.php debe ser más restrictivo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 400&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-config.php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## .htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chmod&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 444&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .htaccess&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar propietario de los archivos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;chown&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -R&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; www-data:www-data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /var/www/html/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-respaldos-archivo-rápido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-respaldos-archivo-rápido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Respaldos: Archivo rápido&lt;/h2&gt;
&lt;p&gt;Quiere un respaldo rápido antes de una actualización? No copie via FTP (tarda una eternidad). Comprimalo en el servidor.&lt;/p&gt;
&lt;h3 id=&quot;tar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;tar&lt;/code&gt;&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Crear archivo backup.tar.gz del directorio actual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.tar.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descomprimir:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -xzf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;respaldos-con-fecha&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#respaldos-con-fecha&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Respaldos con fecha&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Crear respaldo con marca de tiempo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d-%H%M&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.tar.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Excluir carpetas innecesarias del respaldo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -czf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.tar.gz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;./wp-content/cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;./wp-content/uploads/cache&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-base-de-datos-wp-cli&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-base-de-datos-wp-cli&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Base de datos (WP-CLI)&lt;/h2&gt;
&lt;p&gt;Si tiene &lt;code&gt;WP-CLI&lt;/code&gt; (y deberia), no necesita phpMyAdmin.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Exportar base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Importar base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; import&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Buscar y reemplazar (migración)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search-replace&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;sitio-viejo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;sitio-nuevo.com&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all-tables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Listar usuarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Cambiar contrasena&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; user&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --user_pass=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;NuevaContrasena2026&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Desactivar todos los plugins (emergencia)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; deactivate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --all&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar integridad del core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify-checksums&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;comandos-wp-cli-avanzados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comandos-wp-cli-avanzados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comandos WP-CLI avanzados&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Optimizar base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; optimize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver tamaño de tablas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --tables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Buscar en la base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;texto_sospechoso&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Regenerar miniaturas de imagenes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; regenerate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --yes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Limpiar transients expirados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --expired&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-eliminacion-masiva-de-archivos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-eliminacion-masiva-de-archivos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Eliminacion masiva de archivos&lt;/h2&gt;
&lt;p&gt;Eliminar una carpeta de plugin &lt;code&gt;cache&lt;/code&gt; con un millon de archivos pequeños via FTP puede tomar una hora.&lt;/p&gt;
&lt;h3 id=&quot;rm&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rm&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;rm&lt;/code&gt;&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Eliminar carpeta y todo su contenido (sin deshacer!)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/cache/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tiempo empleado: 0.5 segundos.&lt;/p&gt;
&lt;h3 id=&quot;eliminacion-segura&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#eliminacion-segura&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Eliminacion segura&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver que se eliminaria primero (dry run)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/cache/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -20&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Contar archivos antes de eliminar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/cache/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wc&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -l&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Eliminar archivos más antiguos de 30 dias&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wp-content/cache/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -mtime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +30&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -delete&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-transferencia-de-archivos-entre-servidores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-transferencia-de-archivos-entre-servidores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Transferencia de archivos entre servidores&lt;/h2&gt;
&lt;p&gt;Cuando necesita mover archivos entre servidores:&lt;/p&gt;
&lt;h3 id=&quot;rsync&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rsync&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;rsync&lt;/code&gt;&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Sincronizar archivos al servidor remoto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --progress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /local/path/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@servidor:/remoto/path/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Sincronizar solo archivos cambiados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --progress&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --update&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /local/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@servidor:/remoto/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Excluir archivos innecesarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;rsync&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -avz&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;node_modules&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --exclude=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.git&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /local/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@servidor:/remoto/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;scp-para-transferencias-simples&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#scp-para-transferencias-simples&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;code&gt;scp&lt;/code&gt; para transferencias simples&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Copiar archivo al servidor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;scp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; backup.sql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@servidor:/ruta/destino/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Copiar archivo desde el servidor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;scp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; usuario@servidor:/ruta/archivo.sql&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ./local/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-monitorización-del-servidor&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-monitorización-del-servidor&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Monitorización del servidor&lt;/h2&gt;
&lt;h3 id=&quot;uso-de-recursos-en-tiempo-real&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-de-recursos-en-tiempo-real&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso de recursos en tiempo real&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver procesos que consumen más recursos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;top&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Version mejorada (si disponible)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;htop&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver uso de memoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;free&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -h&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver uso de disco por particion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;df&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -h&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver conexiónes de red activas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;netstat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -tuln&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;identificar-procesos-php-pesados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#identificar-procesos-php-pesados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Identificar procesos PHP pesados&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver procesos PHP activos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; aux&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Ver consultas MySQL lentas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;mysqladmin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -u&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; root&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; processlist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-aliases-y-scripts-de-productividad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-aliases-y-scripts-de-productividad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Aliases y scripts de productividad&lt;/h2&gt;
&lt;p&gt;Cree aliases para comandos que usa frecuentemente:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Agregar a ~/.bashrc o ~/.zshrc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;alias&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wplog&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;tail -f wp-content/debug.log&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;alias&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wpsize&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;du -h --max-depth=1 | sort -hr&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;alias&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wpcache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rm -rf wp-content/cache/*&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;alias&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wpdb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp db export backup-$(date +%Y%m%d).sql&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;alias&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; wpcheck&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp core verify-checksums &amp;#x26;&amp;#x26; wp plugin list --update=available&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;script-de-mantenimiento-automatizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#script-de-mantenimiento-automatizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Script de mantenimiento automatizado&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Script de mantenimiento diario de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;=== Mantenimiento WordPress $(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;) ===&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Respaldo de base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; export&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; /respaldos/db-&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; +%Y%m%d&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.sql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Base de datos respaldada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Verificar integridad del core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; verify-checksums&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Core verificado&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Listar actualizaciones disponibles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;=== Actualizaciones disponibles ===&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --update=available&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; theme&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --update=available&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; core&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; check-update&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Limpiar transients&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --expired&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Transients limpiados&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Optimizar base de datos&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; db&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; optimize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;Base de datos optimizada&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;=== Mantenimiento completo ===&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;La terminal SSH no muerde. Le permite trabajar a la velocidad del disco del servidor, no a la velocidad de su conexión a internet. Comience con &lt;code&gt;ncdu&lt;/code&gt; y &lt;code&gt;tail -f&lt;/code&gt; — no querra volver a hacer clic con el raton.&lt;/p&gt;
&lt;p&gt;Los comandos esenciales para empezar:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;du&lt;/code&gt; / &lt;code&gt;ncdu&lt;/code&gt;&lt;/strong&gt; - Análisis de espacio en disco&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tail -f&lt;/code&gt;&lt;/strong&gt; - Depuracion en tiempo real&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;grep -r&lt;/code&gt;&lt;/strong&gt; - Búsqueda de código&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;find&lt;/code&gt; + &lt;code&gt;chmod&lt;/code&gt;&lt;/strong&gt; - Correccion de permisos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tar&lt;/code&gt;&lt;/strong&gt; - Respaldos rápidos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;wp&lt;/code&gt; (WP-CLI)&lt;/strong&gt; - Gestión completa de WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;rm -rf&lt;/code&gt;&lt;/strong&gt; - Eliminacion rápida (con precaucion!)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;rsync&lt;/code&gt;&lt;/strong&gt; - Transferencia eficiente de archivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;top&lt;/code&gt; / &lt;code&gt;htop&lt;/code&gt;&lt;/strong&gt; - Monitorización de recursos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aliases&lt;/strong&gt; - Productividad automatizada&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>server</category><category>development</category><category domain="tag">ssh</category><category domain="tag">bash</category><category domain="tag">linux</category><category domain="tag">terminal</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Rendimiento de fondos de video, autoplay y Core Web Vitals</title><link>https://wppoland.com/es/performance-video-backgrounds-autoplay-guide/</link><guid isPermaLink="true">https://wppoland.com/es/performance-video-backgrounds-autoplay-guide/</guid><description>Domine el rendimiento de fondos de video en 2026. Aprenda optimización de formatos de video, estrategias de hosting, lazy loading, accesibilidad y cumplimiento de Core Web Vitals para videos hero ultra rápidos.</description><pubDate>Wed, 11 May 2011 11:43:08 GMT</pubDate><content:encoded>&lt;h2 id=&quot;por-que-los-fondos-de-video-enfocados-en-rendimiento-importan-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-fondos-de-video-enfocados-en-rendimiento-importan-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los fondos de video enfocados en rendimiento importan en 2026&lt;/h2&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;El video puede mejorar la narrativa de marca, pero también puede destruir la velocidad de carga cuando se implementa sin un plan. Un enfoque enfocado en rendimiento mantiene el impacto visual mientras protege los Core Web Vitals y las tasas de conversión.&lt;/p&gt;
&lt;p&gt;Los navegadores modernos son estrictos respecto al autoplay, especialmente en móvil. Si su implementación ignora estas reglas, los usuarios a menudo ven un area hero rota en lugar de una primera impresion fluida.&lt;/p&gt;
&lt;h2 id=&quot;reglas-prácticas-para-video-con-autoplay-rápido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reglas-prácticas-para-video-con-autoplay-rápido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reglas prácticas para video con autoplay rápido&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;muted&lt;/code&gt;, &lt;code&gt;autoplay&lt;/code&gt;, &lt;code&gt;loop&lt;/code&gt; y &lt;code&gt;playsinline&lt;/code&gt; juntos. Sin esta combinación, la fiabilidad del autoplay cae dramaticamente en iOS y otros entornos móviles.&lt;/p&gt;
&lt;p&gt;Evite embeds pesados de terceros en la ruta crítica de renderizado. Use una imagen poster, lazy loading e inicializacion diferida del reproductor para que el texto y el contenido de llamada a la accion aparezcan primero.&lt;/p&gt;
&lt;h3 id=&quot;formato-optimo-de-video-para-fondos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#formato-optimo-de-video-para-fondos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Formato optimo de video para fondos&lt;/h3&gt;
&lt;p&gt;La eleccion del formato de video impacta directamente en el rendimiento:&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Formato&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Compresion&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Compatibilidad&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Mejor para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;AV1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente (30-50% mejor que H.264)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Chrome, Firefox, Edge&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Maxima compresion&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;WebM (VP9)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy buena&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Chrome, Firefox, Edge&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Equilibrio calidad/compatibilidad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;MP4 (H.264)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Buena&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Todos los navegadores&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Compatibilidad universal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;MP4 (H.265/HEVC)&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Muy buena&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Safari, iOS&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Dispositivos Apple&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La estrategia recomendada es servir AV1 o WebM como formato principal con MP4 H.264 como fallback:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; autoplay&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; muted&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loop&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; playsinline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       poster&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/images/hero-poster.avif&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       preload&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;none&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/video/hero.webm&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video/webm&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/video/hero.mp4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video/mp4&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;optimización-de-archivos-con-ffmpeg&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-archivos-con-ffmpeg&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de archivos con FFmpeg&lt;/h3&gt;
&lt;p&gt;Para auto-alojar videos de fondo, la re-codificacion adecuada es esencial:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Convertir a WebM con buena compresion (objetivo: &amp;#x3C;2MB)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; entrada.mp4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; libvpx-vp9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -b:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; 500k&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -an&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; salida.webm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Convertir a MP4 H.264 como fallback&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; entrada.mp4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -c:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; libx264&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -crf&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 28&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -an&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; salida.mp4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;## Generar imagen poster optimizada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; entrada.mp4&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -ss&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; 00:00:01&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -frames:v&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; poster.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puntos clave de la optimización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eliminar audio&lt;/strong&gt; (&lt;code&gt;-an&lt;/code&gt;): Los fondos de video nunca necesitan audio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitar duracion&lt;/strong&gt; (&lt;code&gt;-t 15&lt;/code&gt;): 10-15 segundos es suficiente para un loop&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controlar bitrate&lt;/strong&gt;: 500k-1000k es suficiente para fondos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reducir resolución&lt;/strong&gt;: 720p es adecuado para fondos; 1080p solo si es necesario&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;métodos-de-entrega-de-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métodos-de-entrega-de-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métodos de entrega de video&lt;/h2&gt;
&lt;h3 id=&quot;opción-1-auto-alojamiento-más-rápido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opción-1-auto-alojamiento-más-rápido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opción 1: Auto-alojamiento (más rápido)&lt;/h3&gt;
&lt;p&gt;Auto-alojar es la opción más rápida porque elimina JavaScript de terceros y peticiones adicionales de DNS. Es ideal para clips cortos de fondo (menos de 15 segundos, menos de 2MB).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sin JavaScript adicional&lt;/li&gt;
&lt;li&gt;Sin peticiones DNS de terceros&lt;/li&gt;
&lt;li&gt;Control total sobre la entrega&lt;/li&gt;
&lt;li&gt;Funciona con CDN existente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consume ancho de banda del servidor&lt;/li&gt;
&lt;li&gt;Sin transcoding adaptativo&lt;/li&gt;
&lt;li&gt;Gestión manual de formatos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;opción-2-vimeo-con-fachada-equilibrado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opción-2-vimeo-con-fachada-equilibrado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opción 2: Vimeo con fachada (equilibrado)&lt;/h3&gt;
&lt;p&gt;Vimeo ofrece el parametro &lt;code&gt;?background=1&lt;/code&gt; que oculta automáticamente los controles del reproductor y configura el video para uso de fondo.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Fachada: solo carga imagen hasta que el usuario interactua --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;video-facade&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; data-vimeo-id&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;123456789&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/images/video-poster.avif&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       alt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Video de fondo&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;       width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1920&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1080&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Cargar Vimeo solo cuando sea visible&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; observer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; IntersectionObserver&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;entries&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  entries.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (entry.isIntersecting) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; entry.target;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; iframe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;iframe&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      iframe.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; `https://player.vimeo.com/video/${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;dataset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;vimeoId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}?background=1&amp;#x26;autoplay=1&amp;#x26;muted=1&amp;#x26;loop=1`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      iframe.allow &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;autoplay&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      container.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(iframe);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      observer.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unobserve&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(container);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.video-facade&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; observer.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;observe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(el));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;opción-3-youtube-con-lite-youtube-embed&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#opción-3-youtube-con-lite-youtube-embed&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Opción 3: YouTube con lite-youtube-embed&lt;/h3&gt;
&lt;p&gt;YouTube requiere más configuración para fondos, pero &lt;code&gt;lite-youtube-embed&lt;/code&gt; reduce drasticamente el impacto en rendimiento:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;lite-youtube&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; videoid&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;VIDEO_ID&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;              params&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;controls=0&amp;#x26;mute=1&amp;#x26;playlist=VIDEO_ID&amp;#x26;loop=1&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;              style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;background-image: url(&apos;/images/poster.avif&apos;);&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;lite-youtube&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;accesibilidad-y-fondos-de-video&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#accesibilidad-y-fondos-de-video&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Accesibilidad y fondos de video&lt;/h2&gt;
&lt;p&gt;La accesibilidad no es negociable, incluso para videos decorativos de fondo:&lt;/p&gt;
&lt;h3 id=&quot;media-query-prefers-reduced-motion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#media-query-prefers-reduced-motion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Media query prefers-reduced-motion&lt;/h3&gt;
&lt;p&gt;Respete las preferencias del usuario para movimiento reducido:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (prefers-reduced-motion: reduce) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  .video-background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt; video&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  .video-background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-image&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/images/static-fallback.avif&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;cover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;contenido-alternativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contenido-alternativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contenido alternativo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Proporcione una imagen estatica como alternativa&lt;/li&gt;
&lt;li&gt;Si el video transmite información, incluya subtitulos o transcripcion&lt;/li&gt;
&lt;li&gt;Asegurese de que el texto superpuesto sea legible sin el video&lt;/li&gt;
&lt;li&gt;Mantenga suficiente contraste entre texto y fondo de video&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;medicion-del-impacto-en-core-web-vitals&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-del-impacto-en-core-web-vitals&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion del impacto en Core Web Vitals&lt;/h2&gt;
&lt;p&gt;Despues de implementar fondos de video, mida el impacto en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LCP (Largest Contentful Paint)&lt;/strong&gt;: El video no debe ser el elemento LCP. Use una imagen poster que cargue rápidamente mientras el video se carga en segundo plano.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INP (Interaction to Next Paint)&lt;/strong&gt;: El JavaScript del reproductor de video no debe bloquear la interactividad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLS (Cumulative Layout Shift)&lt;/strong&gt;: Reserve espacio para el video con &lt;code&gt;aspect-ratio&lt;/code&gt; en CSS para evitar saltos de diseño.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.video-background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  aspect-ratio&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; / &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  width&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  position&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;relative&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  overflow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;lista-de-verificación-para-equipos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-para-equipos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación para equipos&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Exporte clips cortos y elimine pistas de audio innecesarias.&lt;/li&gt;
&lt;li&gt;Use formatos modernos con fallback, por ejemplo AV1 o WebM más MP4.&lt;/li&gt;
&lt;li&gt;Optimice la imagen poster con el mismo cuidado que cualquier imagen hero.&lt;/li&gt;
&lt;li&gt;Mida LCP, INP y CLS antes y despues del lanzamiento.&lt;/li&gt;
&lt;li&gt;Respete &lt;code&gt;prefers-reduced-motion&lt;/code&gt; para mantener los estándares de accesibilidad.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El objetivo no es eliminar el movimiento, sino usar el movimiento de manera responsable. Un fondo de video bien optimizado debe apoyar el mensaje, no competir con el rendimiento y la usabilidad.&lt;/p&gt;
&lt;p&gt;Conozca más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress personalizado&lt;/a&gt; y la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactenos&lt;/a&gt; para optimizar su sitio.&lt;/p&gt;</content:encoded><category>performance</category><category>frontend</category><category domain="tag">youtube</category><category domain="tag">vimeo</category><category domain="tag">lazy-loading</category><category domain="tag">core-web-vitals</category><category domain="tag">optimización-video</category><category domain="tag">rendimiento-web</category><category domain="tag">accesibilidad</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Como limpiar el header de WordPress (eliminar RSS, emojis, shortlinks)</title><link>https://wppoland.com/es/how-to-clean-up-wordpress-header-remove-rss-emojis-shortlinks/</link><guid isPermaLink="true">https://wppoland.com/es/how-to-clean-up-wordpress-header-remove-rss-emojis-shortlinks/</guid><description>WordPress agrega mucha basura a la sección HEAD: wlwmanifest, rsd, emoji, enlaces de feed. Como eliminarlos para acelerar su sitio?</description><pubDate>Tue, 10 May 2011 11:47:33 GMT</pubDate><content:encoded>&lt;p&gt;Abra el código fuente de su sitio (&lt;code&gt;Ctrl+U&lt;/code&gt;). Mire la sección &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;.
Ve decenas de lineas que no entiende?
La mayoria son inutiles en 2026.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;el-problema-engrosamiento-del-head-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-problema-engrosamiento-del-head-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El problema: Engrosamiento del head de WordPress&lt;/h2&gt;
&lt;p&gt;WordPress agrega muchos elementos a la sección &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; por defecto. Mientras que algunos son utiles, muchos son código legacy de 2010 que nadie usa. Este engrosamiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ralentiza su sitio&lt;/strong&gt; (solicitudes HTTP extra)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desperdicia ancho de banda&lt;/strong&gt; (scripts/estilos innecesarios)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revela información&lt;/strong&gt; (versión de WordPress, info del servidor)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perjudica el SEO&lt;/strong&gt; (HTML desordenado, velocidad de página más lenta)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Que hay en un head tipico de WordPress?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enlaces de feeds RSS (entradas, comentarios, categorías)&lt;/li&gt;
&lt;li&gt;Manifiesto de Windows Live Writer&lt;/li&gt;
&lt;li&gt;Really Simple Discovery (RSD)&lt;/li&gt;
&lt;li&gt;Meta tag del generador WordPress&lt;/li&gt;
&lt;li&gt;Scripts de deteccion de emoji&lt;/li&gt;
&lt;li&gt;Tags de shortlink&lt;/li&gt;
&lt;li&gt;Enlaces de entradas adyacentes&lt;/li&gt;
&lt;li&gt;Y mas…&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;guia-completa-de-limpieza-del-head&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-completa-de-limpieza-del-head&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia completa de limpieza del head&lt;/h2&gt;
&lt;h3 id=&quot;1-feeds-rss-de-comentarios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-feeds-rss-de-comentarios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Feeds RSS de comentarios&lt;/h3&gt;
&lt;p&gt;WordPress genera un feed RSS separado para cada entrada, categoría, etiqueta y… comentarios. A menos que administre un sitio de noticias donde la gente se suscribe a hilos de comentarios via RSS (quien hace eso?), esto solo desperdicia recursos del servidor.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar enlaces de feed de comentarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;feed_links_show_comments_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar todos los enlaces de feeds RSS extra&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;feed_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;feed_links_extra&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-windows-live-writer-wlwmanifest&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-windows-live-writer-wlwmanifest&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Windows Live Writer (wlwmanifest)&lt;/h3&gt;
&lt;p&gt;Cuando fue la última vez que uso Windows Live Writer? 2010?
WordPress aun agrega esta cabecera por defecto.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar manifiesto de Windows Live Writer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wlwmanifest_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar Really Simple Discovery (RSD)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rsd_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-meta-tag-del-generador-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-meta-tag-del-generador-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Meta tag del generador WordPress&lt;/h3&gt;
&lt;p&gt;Revela su versión de WordPress a todos (riesgo de seguridad).&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar versión de WordPress del head&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// También eliminar de feeds RSS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_empty_string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-scripts-de-emoji-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-scripts-de-emoji-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Scripts de emoji de WordPress&lt;/h3&gt;
&lt;p&gt;WordPress carga un script JS y estilos CSS para convertir caracteres &lt;code&gt;:)&lt;/code&gt; en imágenes. Los navegadores modernos manejan emojis de forma nativa. Este script son solo solicitudes HTTP extra (engrosamiento).&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar script de deteccion de emoji&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_detection_script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar estilos de emoji&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_print_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar emoji del admin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_print_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_detection_script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_print_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar emoji de emails&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_mail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_staticize_emoji_for_email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar prefetch DNS de emoji&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_resource_hints&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_dependencies_emoji_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;5-shortlinks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-shortlinks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Shortlinks&lt;/h3&gt;
&lt;p&gt;WordPress genera tags de shortlink para cada entrada/página.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar shortlink del head&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_shortlink_wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar shortlink de cabeceras HTTP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_shortlink_header&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;6-enlaces-de-entradas-adyacentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-enlaces-de-entradas-adyacentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Enlaces de entradas adyacentes&lt;/h3&gt;
&lt;p&gt;WordPress agrega enlaces a entradas anteriores/siguientes en el head.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar enlaces de entradas adyacentes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;adjacent_posts_rel_link_wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;start_post_rel_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;index_rel_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;parent_post_rel_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;el-snippet-completo-de-limpieza-del-head&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-snippet-completo-de-limpieza-del-head&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El snippet completo de “limpieza del head”&lt;/h2&gt;
&lt;p&gt;Coloque esta función de limpieza integral en su &lt;code&gt;functions.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Limpiar la seccion head de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Elimina enlaces, scripts y meta tags innecesarios&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_cleanup_head&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar enlaces de feeds RSS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;feed_links&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;feed_links_extra&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;feed_links_show_comments_feed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar Windows Live Writer y RSD&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wlwmanifest_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rsd_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar generador WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_generator&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_empty_string&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar scripts y estilos de emoji&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_detection_script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_print_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_print_scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_detection_script&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;admin_print_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;print_emoji_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_mail&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_staticize_emoji_for_email&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_resource_hints&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_dependencies_emoji_styles&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar shortlinks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_shortlink_wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;template_redirect&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_shortlink_header&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Eliminar enlaces de entradas adyacentes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;adjacent_posts_rel_link_wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;start_post_rel_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;index_rel_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    remove_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;parent_post_rel_link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;init&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_cleanup_head&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;impacto-en-el-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-en-el-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto en el rendimiento&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Mejoras tipicas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tamaño HTML&lt;/strong&gt;: -2KB a -5KB por página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solicitudes HTTP&lt;/strong&gt;: -3 a -8 solicitudes por página&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;: -15KB (script de emoji)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS&lt;/strong&gt;: -5KB (estilos de emoji)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiempo de carga&lt;/strong&gt;: -50ms a -200ms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo del mundo real:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Antes: 45KB HTML, 12 solicitudes HTTP en &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Despues: 40KB HTML, 4 solicitudes HTTP en &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mejora: 11% menos HTML, 67% menos solicitudes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;consideraciones-de-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consideraciones-de-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consideraciones de seguridad&lt;/h2&gt;
&lt;p&gt;Eliminar el tag del generador es bueno, pero:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Los plugins aun revelan la versión&lt;/strong&gt;: Verifique cabeceras de plugins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readme.html&lt;/strong&gt;: Elimine &lt;code&gt;/wp-content/readme.html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Página de login&lt;/strong&gt;: La versión se muestra en el código fuente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST API&lt;/strong&gt;: Puede revelar la versión en respuestas&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;mejores-prácticas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pruebe antes de desplegar&lt;/strong&gt;: Siempre pruebe la limpieza en un sitio de staging primero&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conserve lo que necesita&lt;/strong&gt;: No elimine enlaces de REST API si usa WordPress headless&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documente sus cambios&lt;/strong&gt;: Agregue comentarios explicando por que elimina cada elemento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use plugin para no-desarrolladores&lt;/strong&gt;: Para clientes que no son desarrolladores, use un plugin en lugar de código&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Limpiar la sección &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; de WordPress es esencial para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: Cargas más rápidas, menos solicitudes HTTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;: Ocultar versión de WordPress, reducir superficie de ataque&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt;: HTML más limpio, mejores Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profesionalismo&lt;/strong&gt;: Código limpio y mantenible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En 2026, una sección &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; limpia no es opcional, es un requisito para sitios WordPress profesionales.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; y la &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;auditoria de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>optimization</category><category>development</category><category domain="tag">limpiar-head</category><category domain="tag">rendimiento</category><category domain="tag">bloat</category><enclosure url="https://wppoland.com/images/og/jak-usunac-kanal-rss-z-komentarzy.jpg" type="image/jpeg"/></item><item><title>Deja de usar FTP: Despliegue moderno de WordPress con SSH, Git y claves</title><link>https://wppoland.com/es/modern-wordpress-deployment-ssh-git/</link><guid isPermaLink="true">https://wppoland.com/es/modern-wordpress-deployment-ssh-git/</guid><description>Todavia edita archivos con FileZilla? Es hora de parar. Aprenda a desplegar WordPress usando claves SSH, Git y estrategias de despliegue atomico en 2026.</description><pubDate>Mon, 11 Apr 2011 18:03:00 GMT</pubDate><content:encoded>&lt;p&gt;Si esta viendo “Error 29” en Total Commander o “Connection Timed Out” en FileZilla, el universo le esta enviando un mensaje.
&lt;strong&gt;Deje de usar FTP.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Conozca más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En 2010, FTP era el estándar. En 2026, arrastrar y soltar archivos a un servidor de producción es temerario. Esto conduce a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tiempo de inactividad&lt;/strong&gt;: Que ocurre si su internet se corta mientras sube &lt;code&gt;functions.php&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Riesgos de seguridad&lt;/strong&gt;: FTP envia contrasenas en texto plano (a menos que use FTPS).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin historial&lt;/strong&gt;: Quien cambio ese archivo? Cuando? Por que?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;nivel-1-sftp-y-claves-ssh-el-minimo-indispensable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-1-sftp-y-claves-ssh-el-minimo-indispensable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 1: SFTP y claves SSH (el minimo indispensable)&lt;/h2&gt;
&lt;p&gt;Si &lt;em&gt;debe&lt;/em&gt; transferir archivos manualmente, use &lt;strong&gt;SFTP&lt;/strong&gt; (Protocolo de Transferencia de Archivos SSH). Se ejecuta sobre el puerto 22 y esta completamente cifrado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejor aun, use claves SSH en lugar de contrasenas.&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Generar una clave&lt;/strong&gt;: &lt;code&gt;ssh-keygen -t ed25519 -C &quot;su@email.com&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copiar al servidor&lt;/strong&gt;: &lt;code&gt;ssh-copy-id user@host&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurar&lt;/strong&gt;: Edite &lt;code&gt;~/.ssh/config&lt;/code&gt; para acceso fácil.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; misite&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    HostName&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 192.168.1.100&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    User&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; wppoland&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    IdentityFile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ~/.ssh/id_ed25519&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puede simplemente escribir &lt;code&gt;ssh misite&lt;/code&gt; o conectarse via SFTP sin escribir una contrasena cada vez.&lt;/p&gt;
&lt;h2 id=&quot;nivel-2-git-y-git-pull-el-paso-intermedio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-2-git-y-git-pull-el-paso-intermedio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 2: Git y “Git pull” (el paso intermedio)&lt;/h2&gt;
&lt;p&gt;Deje de editar código en el servidor. Edite localmente, haga commit en Git y pull en el servidor.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Local&lt;/strong&gt;: &lt;code&gt;git push origin main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servidor&lt;/strong&gt;: &lt;code&gt;cd /var/www/html &amp;#x26;&amp;#x26; git pull origin main&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Ventajas&lt;/strong&gt;: Tiene historial de versiones. Puede revertir cambios (&lt;code&gt;git reset --hard&lt;/code&gt;).
&lt;strong&gt;Desventajas&lt;/strong&gt;: No es atomico. El sitio podria fallar durante unos segundos durante el &lt;code&gt;git pull&lt;/code&gt; si los archivos no coinciden.&lt;/p&gt;
&lt;h2 id=&quot;nivel-3-despliegues-atomicos-el-estándar-pro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#nivel-3-despliegues-atomicos-el-estándar-pro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Nivel 3: Despliegues atomicos (el estándar PRO)&lt;/h2&gt;
&lt;p&gt;Los hosts profesionales de WordPress (Kinsta, WPEngine, SpinupWP) o herramientas como &lt;strong&gt;DeployerPHP&lt;/strong&gt; usan “Despliegues Atomicos”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como funciona:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El código se sube a una &lt;em&gt;nueva&lt;/em&gt; carpeta: &lt;code&gt;/releases/2026-12-23-0800/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Se instalan las dependencias (Composer, NPM).&lt;/li&gt;
&lt;li&gt;Un enlace simbolico &lt;code&gt;/current&lt;/code&gt; se cambia de la carpeta antigua a la nueva.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;: Cero tiempo de inactividad. El cambio ocurre en milisegundos. Si la construccion falla, el enlace simbolico nunca cambia y el sitio permanece activo.&lt;/p&gt;
&lt;h2 id=&quot;herramientas-para-usar-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-para-usar-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas para usar en 2026&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Local&lt;/strong&gt;: LocalWP o DDEV.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repositorio&lt;/strong&gt;: GitHub / GitLab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;: Pipelines CI/CD gratuitos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeployHQ&lt;/strong&gt;: GUI simple para despliegues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buddy.works&lt;/strong&gt;: Optimizado para WP.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;por-que-los-despliegues-modernos-son-esenciales-para-la-seguridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-despliegues-modernos-son-esenciales-para-la-seguridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los despliegues modernos son esenciales para la seguridad&lt;/h2&gt;
&lt;p&gt;La seguridad es una de las razones más convincentes para abandonar FTP. Cada vez que un desarrollador escribe una contrasena FTP, esa credencial viaja sin cifrar por la red. Un atacante con acceso a cualquier punto intermedio puede interceptarla fácilmente.&lt;/p&gt;
&lt;p&gt;Las claves SSH, por otro lado, utilizan criptografia asimetrica. La clave privada nunca abandona su maquina local, y la clave pública en el servidor solo puede verificar, no revelar, su identidad. Esto elimina por completo la superficie de ataque basada en contrasenas.&lt;/p&gt;
&lt;p&gt;Además, los despliegues basados en Git proporcionan una pista de auditoria completa. Cada cambio esta registrado con autor, fecha y mensaje de commit. Si algo sale mal, puede identificar exactamente que cambio causo el problema y quien lo hizo.&lt;/p&gt;
&lt;p&gt;Para sitios de &lt;a href=&quot;/es/desarrollador-woocommerce/&quot;&gt;comercio electronico con WooCommerce&lt;/a&gt;, donde se manejan datos de pago y clientes, esta trazabilidad no es un lujo sino un requisito de cumplimiento normativo.&lt;/p&gt;
&lt;h2 id=&quot;automatizacion-con-github-actions&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatizacion-con-github-actions&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatizacion con GitHub Actions&lt;/h2&gt;
&lt;p&gt;GitHub Actions permite configurar pipelines de despliegue que se ejecutan automáticamente cada vez que hace push a una rama específica. Un flujo de trabajo tipico incluye:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pruebas automáticas&lt;/strong&gt;: Ejecutar PHPUnit y linters antes del despliegue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construccion de assets&lt;/strong&gt;: Compilar CSS/JS con Vite o webpack.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegue&lt;/strong&gt;: Subir archivos al servidor via SSH.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificación&lt;/strong&gt;: Comprobar que el sitio responde correctamente despues del despliegue.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  push&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    branches&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;jobs&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;  deploy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    runs-on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;    steps&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;actions/checkout@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;Deploy via SSH&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        uses&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;appleboy/ssh-action@master&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          host&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.HOST }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          username&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.USER }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          key&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;${{ secrets.SSH_KEY }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;          script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            cd /var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            git pull origin main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            composer install --no-dev&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            wp cache flush&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta automatizacion elimina el error humano y garantiza que cada despliegue siga exactamente el mismo proceso, reduciendo significativamente el riesgo de errores en producción.&lt;/p&gt;
&lt;h2 id=&quot;gestión-de-entornos-multiples&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#gestión-de-entornos-multiples&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Gestión de entornos multiples&lt;/h2&gt;
&lt;p&gt;En un flujo de trabajo profesional, necesita al menos tres entornos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desarrollo (local)&lt;/strong&gt;: Donde escribe y prueba código nuevo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Staging&lt;/strong&gt;: Una copia del sitio de producción donde verifica cambios antes del despliegue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Producción&lt;/strong&gt;: El sitio en vivo que ven los visitantes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Git facilita este flujo con ramas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;develop&lt;/code&gt; → se despliega automáticamente a staging&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main&lt;/code&gt; → se despliega automáticamente a producción&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada entorno tiene su propia configuración de base de datos y variables de entorno, gestionadas a través de archivos &lt;code&gt;.env&lt;/code&gt; que nunca se incluyen en el repositorio Git.&lt;/p&gt;
&lt;h2 id=&quot;migración-de-ftp-a-git-plan-paso-a-paso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#migración-de-ftp-a-git-plan-paso-a-paso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Migración de FTP a Git: Plan paso a paso&lt;/h2&gt;
&lt;p&gt;Si actualmente usa FTP y quiere migrar a un flujo basado en Git, siga estos pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Semana 1&lt;/strong&gt;: Configure claves SSH y practique la conexión por terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 2&lt;/strong&gt;: Inicialice un repositorio Git local con su código actual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 3&lt;/strong&gt;: Configure un repositorio remoto en GitHub o GitLab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 4&lt;/strong&gt;: Practique el flujo push/pull entre su maquina y el servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 5-6&lt;/strong&gt;: Implemente despliegues automáticos con GitHub Actions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 7-8&lt;/strong&gt;: Configure despliegues atomicos si su hosting lo permite.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No necesita hacer todo de golpe. Cada paso individual ya mejora su flujo de trabajo comparado con FTP.&lt;/p&gt;
&lt;h2 id=&quot;rollback-y-recuperacion-ante-desastres&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rollback-y-recuperacion-ante-desastres&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rollback y recuperacion ante desastres&lt;/h2&gt;
&lt;p&gt;Una de las mayores ventajas de los despliegues modernos es la capacidad de reversión instantanea. Si un despliegue introduce un error, puede:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Con Git&lt;/strong&gt;: &lt;code&gt;git revert HEAD&lt;/code&gt; y hacer push nuevamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Con despliegues atomicos&lt;/strong&gt;: Cambiar el enlace simbolico &lt;code&gt;/current&lt;/code&gt; a la carpeta de la versión anterior.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Con GitHub Actions&lt;/strong&gt;: Volver a ejecutar un despliegue anterior desde el historial de acciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En contraste, con FTP tendria que recordar que archivos cambio, buscar versiones anteriores (si las tiene) y subirlas manualmente, un proceso que puede tomar horas mientras su sitio esta caido.&lt;/p&gt;
&lt;p&gt;Para sitios críticos que requieren &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento profesional de WordPress&lt;/a&gt;, tener una estrategia de rollback solida es absolutamente esencial.&lt;/p&gt;
&lt;h2 id=&quot;monitoreo-post-despliegue&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-post-despliegue&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo post-despliegue&lt;/h2&gt;
&lt;p&gt;Despues de cada despliegue, es importante verificar que todo funciona correctamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Verificación de salud&lt;/strong&gt;: Comprobar que las páginas principales responden con código 200.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core Web Vitals&lt;/strong&gt;: Asegurarse de que el rendimiento no se ha degradado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logs de errores&lt;/strong&gt;: Monitorear &lt;code&gt;debug.log&lt;/code&gt; durante las primeras horas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funcionalidad crítica&lt;/strong&gt;: Verificar formularios, carrito de compras y páginas de pago.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Herramientas como UptimeRobot o Pingdom pueden alertarle automáticamente si algo sale mal despues de un despliegue.&lt;/p&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;“Error 29” no es un bug. Es una señal recordandole que actualice su flujo de trabajo.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abandone FTP por &lt;strong&gt;SFTP&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;claves SSH&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Migre a &lt;strong&gt;despliegues basados en Git&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Su yo futuro (y sus clientes) le agradeceran cuando pueda revertir una actualización rota en 3 segundos.&lt;/p&gt;
&lt;p&gt;Conozca más sobre la &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad de WordPress&lt;/a&gt; y los &lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;servicios de seguridad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>devops</category><category>tools</category><category domain="tag">ssh</category><category domain="tag">git</category><category domain="tag">deployment</category><category domain="tag">ftp</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Extraer listas de posts de categorías en WordPress – Guia del desarrollador</title><link>https://wppoland.com/es/extract-posts-category-wordpress-guide/</link><guid isPermaLink="true">https://wppoland.com/es/extract-posts-category-wordpress-guide/</guid><description>Como recuperar y mostrar una lista de posts de una categoría específica en WordPress? Aprende WP_Query, get_posts y loops personalizados. Ejemplos de código y optimización.</description><pubDate>Tue, 29 Mar 2011 18:53:11 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-a-la-recuperacion-de-posts-basada-en-categorías&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-a-la-recuperacion-de-posts-basada-en-categorías&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion a la recuperacion de posts basada en categorías&lt;/h2&gt;
&lt;p&gt;Conoce más sobre el &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Una de las tareas más comunes en el desarrollo de WordPress es recuperar posts de categorías específicas. Ya sea que estes construyendo un diseño de homepage personalizado, creando una plantilla de archivo de categoría o mostrando contenido relacionado, entender como consultar posts por categoría de forma eficiente es esencial para cualquier desarrollador WordPress.&lt;/p&gt;
&lt;p&gt;Esta guía completa cubre multiples enfoques para extraer listas de posts de categorías, desde implementaciónes simples hasta técnicas avanzadas de optimización. Al final, tendras un kit de herramientas completo para manejar consultas basadas en categorías en cualquier proyecto WordPress.&lt;/p&gt;
&lt;h2 id=&quot;entendiendo-las-categorías-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-las-categorías-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo las categorías de WordPress&lt;/h2&gt;
&lt;p&gt;Antes de profundizar en el código, es importante entender como WordPress maneja las categorías:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las categorías son una taxonomía incorporada en WordPress&lt;/li&gt;
&lt;li&gt;Cada post puede pertenecer a multiples categorías&lt;/li&gt;
&lt;li&gt;Las categorías pueden ser jerarquicas (relaciones padre/hijo)&lt;/li&gt;
&lt;li&gt;Los datos de categoría se almacenan en las tablas &lt;code&gt;wp_terms&lt;/code&gt; y &lt;code&gt;wp_term_taxonomy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Las relaciones post-categoría se almacenan en &lt;code&gt;wp_term_relationships&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entender esta estructura te ayuda a escribir consultas más eficientes y soluciónar problemas cuando surjan.&lt;/p&gt;
&lt;h2 id=&quot;método-1-wp_query-el-enfoque-flexible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-1-wp_query-el-enfoque-flexible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 1: WP_Query (El enfoque flexible)&lt;/h2&gt;
&lt;p&gt;WP_Query es la clase principal de WordPress para consultar posts. Ofrece maxima flexibilidad y es el enfoque recomendado para la mayoria de los casos de uso.&lt;/p&gt;
&lt;h3 id=&quot;consulta-básica-por-categoría&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consulta-básica-por-categoría&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consulta básica por categoría&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;noticias&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;DESC&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Mostrar contenido del post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php the_permalink(); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;entry-content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;consulta-por-id-de-categoría&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#consulta-por-id-de-categoría&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Consulta por ID de categoría&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ID de categoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;multiples-categorías&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multiples-categorías&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multiples categorías&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Posts en CUALQUIERA de estas categorias (relacion OR)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category__in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Posts en TODAS estas categorias (relacion AND)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category__and&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Excluir categorias específicas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category__not_in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;incluyendo-categorías-hijas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#incluyendo-categorías-hijas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Incluyendo categorías hijas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Obtener posts de la categoria y todas sus hijas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$id_categoria_padre &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $id_categoria_padre,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 20&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// WP_Query incluye automáticamente categorias hijas cuando usas &apos;cat&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;método-2-get_posts-el-enfoque-simple&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-2-get_posts-el-enfoque-simple&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 2: get_posts() (El enfoque simple)&lt;/h2&gt;
&lt;p&gt;Para casos de uso más simples, &lt;code&gt;get_posts()&lt;/code&gt; proporciona una API más directa.&lt;/p&gt;
&lt;h3 id=&quot;uso-básico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-básico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso básico&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;DESC&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    setup_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($post);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php the_permalink(); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;con-nombre-de-categoría&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#con-nombre-de-categoría&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Con nombre de categoría&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;tecnología&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;numberposts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;método-3-shortcodes-para-editores-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-3-shortcodes-para-editores-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 3: Shortcodes para editores de contenido&lt;/h2&gt;
&lt;p&gt;Crear un shortcode permite a los editores de contenido insertar listas de posts por categoría en cualquier lugar.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; shortcode_posts_categoria&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($atts) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $atts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; shortcode_atts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;date&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;DESC&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ), $atts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;category_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $atts[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; intval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($atts[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $atts[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;orderby&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $atts[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;order&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    ob_start&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;div class=&quot;lista-posts-categoria&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;post-categoria&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php the_permalink(); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;        echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;p&gt;No se encontraron posts en esta categoria.&amp;#x3C;/p&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; ob_get_clean&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_shortcode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;posts_categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;shortcode_posts_categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Uso:&lt;/strong&gt; &lt;code&gt;[posts_categoria categoría=&quot;noticias&quot; posts=&quot;5&quot;]&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;método-4-modificar-la-consulta-principal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#método-4-modificar-la-consulta-principal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Método 4: Modificar la consulta principal&lt;/h2&gt;
&lt;p&gt;Cuando quieras cambiar que posts aparecen en las páginas de archivo de categoría, usa la accion &lt;code&gt;pre_get_posts&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; modificar_consultas_categoria&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($query) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Solo modificar archivos de categoria en la consulta principal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_main_query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;is_admin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Mostrar 20 posts por página en lugar del predeterminado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Excluir posts de categoria específica en ciertas páginas de categoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $cat_actual &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_queried_object&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($cat_actual&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;destacados&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category__not_in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Excluir categoria ID 10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;pre_get_posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;modificar_consultas_categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;optimización-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de rendimiento&lt;/h2&gt;
&lt;h3 id=&quot;1-usar-transients-para-consultas-costosas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-usar-transients-para-consultas-costosas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Usar Transients para consultas costosas&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; obtener_posts_categoria_con_cache&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($id_categoria, $cantidad &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $clave_cache &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;cat_posts_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $id_categoria &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;_&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cantidad;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($clave_cache);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $posts) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;cat&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $id_categoria,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;            &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cantidad&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $posts &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;posts;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Cache por 1 hora&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;        set_transient&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($clave_cache, $posts, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;HOUR_IN_SECONDS&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $posts;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-optimizar-consultas-de-base-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-optimizar-consultas-de-base-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Optimizar consultas de base de datos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Solo recuperar los campos que necesitas&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$args &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;category_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;noticias&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &apos;fields&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;ids&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; // Solo obtener IDs de posts para mejor rendimiento&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($args);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-usar-object-caching&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-usar-object-caching&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Usar Object Caching&lt;/h3&gt;
&lt;p&gt;Si tu sitio usa un object cache (Redis, Memcached), los resultados de WP_Query se cachean automáticamente, mejorando el rendimiento para consultas repetidas.&lt;/p&gt;
&lt;h2 id=&quot;técnicas-avanzadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#técnicas-avanzadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Técnicas avanzadas&lt;/h2&gt;
&lt;h3 id=&quot;plantillas-personalizadas-para-archivos-de-categoría&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plantillas-personalizadas-para-archivos-de-categoría&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plantillas personalizadas para archivos de categoría&lt;/h3&gt;
&lt;p&gt;Crea un archivo de plantilla &lt;code&gt;category-noticias.php&lt;/code&gt; para estilos específicos de categoría:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Template Name: Categoria - Noticias */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_header&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;archivo-categoria&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; single_cat_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;cuadricula-posts&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_template_part&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_posts_págination&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;No&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; se&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; encontraron&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; en&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; esta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; categoria&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_footer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;carga-ajax-para-posts-de-categoría&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#carga-ajax-para-posts-de-categoría&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Carga AJAX para posts de categoría&lt;/h3&gt;
&lt;p&gt;Para una mejor experiencia de usuario, implementa carga AJAX:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;jQuery&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(document).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ready&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.cargar-mas&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; boton &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; categoria &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; boton.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        var&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; página &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; boton.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;página&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ajax&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            url: ajaxurl,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            type: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            data: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                action: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;cargar_posts_categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                categoria: categoria,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                página: página&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            success&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;                $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.contenedor-posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(response);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                boton.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;página&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, página &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;handler-php-para-ajax&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#handler-php-para-ajax&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Handler PHP para AJAX&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_cargar_posts_categoria_ajax&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $categoria &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; sanitize_text_field&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $página &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; intval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($_POST[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;página&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $query &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WP_Query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;category_name&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $categoria,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;posts_per_page&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 10&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        &apos;paged&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $página,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    ));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $query&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;            get_template_part&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;content&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_reset_postdata&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    wp_die&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_ajax_cargar_posts_categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_cargar_posts_categoria_ajax&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_action&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wp_ajax_nopriv_cargar_posts_categoria&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;wppoland_cargar_posts_categoria_ajax&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;errores-comunes-a-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-a-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes a evitar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;No restablecer post data&lt;/strong&gt;: Siempre llama a &lt;code&gt;wp_reset_postdata()&lt;/code&gt; despues de loops personalizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consultar en cada carga de página&lt;/strong&gt;: Usa cache para consultas costosas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No verificar si existen posts&lt;/strong&gt;: Siempre verifica &lt;code&gt;have_posts()&lt;/code&gt; antes de iterar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modificar la consulta principal incorrectamente&lt;/strong&gt;: Usa &lt;code&gt;pre_get_posts&lt;/code&gt; en lugar de crear nuevas consultas en páginas de archivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ignorar la páginación&lt;/strong&gt;: Recuerda manejar la páginación para archivos de categoría grandes&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;WordPress proporciona multiples formás de extraer posts de categorías, cada una adecuada para diferentes escenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WP_Query&lt;/strong&gt;: Mejor para visualizaciones complejas y personalizadas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;get_posts()&lt;/strong&gt;: Ideal para listas simples de posts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shortcodes&lt;/strong&gt;: Perfecto para flexibilidad del editor de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pre_get_posts&lt;/strong&gt;: Esencial para modificar páginas de archivo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entender estos métodos y cuando usar cada uno te hara un desarrollador WordPress más efectivo. Recuerda siempre considerar el rendimiento, especialmente en sitios con grandes cantidades de contenido.&lt;/p&gt;
&lt;p&gt;Para sitios en producción, implementa estrategias de cache y prueba tus consultas con herramientas como Query Monitor para asegurar un rendimiento optimo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas ayuda con consultas avanzadas de WordPress? Nuestro equipo de &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress&lt;/a&gt; puede implementar soluciones optimizadas para tu proyecto. &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>wordpress</category><category>development</category><category domain="tag">guía</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-amp-e1570374216516.jpg" type="image/jpeg"/></item><item><title>Como obtener el nombre de categoría sin enlace en WordPress (get_the_category)</title><link>https://wppoland.com/es/get-category-name-without-link/</link><guid isPermaLink="true">https://wppoland.com/es/get-category-name-without-link/</guid><description>Fragmento rápido de PHP: Como mostrar solo el nombre de la categoría sin la etiqueta anchor (enlace)? Explicacion de get_the_category() y separadores.</description><pubDate>Thu, 17 Mar 2011 20:23:42 GMT</pubDate><content:encoded>&lt;p&gt;La función estándar de WordPress &lt;code&gt;the_category()&lt;/code&gt; es genial, pero tiene un defecto: siempre genera enlaces HTML (&lt;code&gt;&amp;#x3C;a href=&quot;...&quot;&gt;...&amp;#x3C;/a&gt;&lt;/code&gt;) a la página de archivo. Que pasa si estas construyendo un diseño personalizado (como una tarjeta de portfolio o un slider) donde la categoría debe ser texto plano, no un elemento clicable?&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo profesional WordPress&lt;/a&gt; en WPPoland.
La solución es usar &lt;code&gt;get_the_category()&lt;/code&gt;, que devuelve un array de objetos en lugar de HTML listo.&lt;/p&gt;
&lt;h2 id=&quot;código-fragmento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#código-fragmento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Código (fragmento)&lt;/h2&gt;
&lt;p&gt;Aqui tienes un fragmento listo para usar que puedes pegar en tu &lt;code&gt;single.php&lt;/code&gt; o &lt;code&gt;content.php&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Obtener todas las categorias asignadas a la entrada actual&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $categories ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Mostrar el nombre de la primera categoria encontrada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $categories[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;mostrar-una-lista-separada-por-comas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mostrar-una-lista-separada-por-comas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mostrar una lista separada por comas&lt;/h3&gt;
&lt;p&gt;Si tu entrada tiene multiples categorías y quieres listarlas como texto separado por comas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$output     &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $categories ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $categories &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $category ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;        // Anadir nombre al array&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $output[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Unir el array en una cadena con separador&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $output );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;por-que-get_the_category&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-get_the_category&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que &lt;code&gt;get_the_category()&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;Esta función te da acceso al objeto completo de categoría. Además del nombre (&lt;code&gt;-&gt;name&lt;/code&gt;), puedes extraer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-&gt;slug&lt;/code&gt; (util para clases CSS, p. ej., &lt;code&gt;&amp;#x3C;span class=&quot;cat-&amp;#x3C;?php echo $cat-&gt;slug; ?&gt;&quot;&gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&gt;term_id&lt;/code&gt; (ID de la categoría)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&gt;description&lt;/code&gt; (descripción de la categoría)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&gt;count&lt;/code&gt; (número de entradas en esta categoría)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;aplicación-práctica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#aplicación-práctica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Aplicación práctica&lt;/h2&gt;
&lt;p&gt;Un caso de uso comun es estilizar etiquetas en tarjetas de blog.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Dentro del loop de WordPress&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$cats &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$first_cat &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($cats) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ($first_cat) : &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;badge badge-&amp;#x3C;?php echo esc_attr(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$first_cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($first_cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;De esta forma, si tienes una categoría “Noticias”, obtendras la clase &lt;code&gt;.badge-noticias&lt;/code&gt;, que puedes colorear fácilmente en CSS. Este nivel de control es algo que &lt;code&gt;the_category()&lt;/code&gt; simplemente no ofrece.&lt;/p&gt;
&lt;h2 id=&quot;uso-avanzado-categoría-primaria-con-plugins-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#uso-avanzado-categoría-primaria-con-plugins-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Uso avanzado: Categoría primaria con plugins SEO&lt;/h2&gt;
&lt;p&gt;Cuando una entrada tiene multiples categorías, es comun querer mostrar solo la “principal”:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_primary_category_name&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Intentar obtener categoria primaria de Yoast&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;class_exists&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;WPSEO_Primary_Term&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $primary &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; WPSEO_Primary_Term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $term_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $primary&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_primary_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $term_id ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            $term &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Intentar obtener de RankMath&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $rankmath_primary &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_post_meta&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;rank_math_primary_category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $rankmath_primary ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $term &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $rankmath_primary );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // Fallback: primera categoria&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $cats &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cats ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;estilizacion-de-etiquetas-de-categoría&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estilizacion-de-etiquetas-de-categoría&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estilizacion de etiquetas de categoría&lt;/h2&gt;
&lt;p&gt;CSS para badges de categoría elegantes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.badge&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    display&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;inline-block&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    padding&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.25&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 0.75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-size&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    font-weight&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;600&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    text-transform&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;uppercase&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    letter-spacing&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.05&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;em&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    border-radius&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;9999&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#e5e7eb&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#374151&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Colores por categoria */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.badge-noticias&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#dbeafe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#1e40af&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.badge-tutorial&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#d1fae5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#065f46&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.badge-opinion&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#fef3c7&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    color&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;#92400e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* Hover sutil */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;.badge:hover&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;brightness&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0.95&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    cursor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;categorías-en-formatos-de-tarjeta-de-blog&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#categorías-en-formatos-de-tarjeta-de-blog&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Categorías en formatos de tarjeta de blog&lt;/h2&gt;
&lt;p&gt;Un ejemplo completo de tarjeta de blog con categoría como insignia:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; while&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;have_posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;blog-card&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;has_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;card-image&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_post_thumbnail&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;medium_large&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $cats &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cats ) ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                    $primary_cat &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $cats[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;card-badge badge-&amp;#x3C;?php echo esc_attr( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$primary_cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;slug&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; ); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $primary_cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endif&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;card-content&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php the_permalink(); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; the_title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;card-meta&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; datetime&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;&amp;#x3C;?php echo get_the_date(&apos;c&apos;); ?&gt;&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_date&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;time&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                &amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;                // Mostrar todas las categorias como texto&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $all_cats &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                $cat_names &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cat ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $cat&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;                }, $all_cats );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;                echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;span class=&quot;categories&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; / &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $cat_names ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&amp;#x3C;/span&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;                ?&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; class=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;card-excerpt&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wp_trim_words&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_excerpt&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ); &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;?&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; endwhile&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;para-taxonomías-personalizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-taxonomías-personalizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para taxonomías personalizadas&lt;/h2&gt;
&lt;p&gt;El mismo principio se aplica a taxonomías personalizadas con &lt;code&gt;get_the_terms()&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$genres &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_terms&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $genres ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $genres ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $genre_names &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $genres &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $genre ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $genre_names[] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $genre&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $genre_names );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;función-helper-reutilizable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#función-helper-reutilizable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Función helper reutilizable&lt;/h2&gt;
&lt;p&gt;Crea una función helper que funcióne con cualquier taxonomía:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * Obtener nombres de terminos como texto plano&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $taxonomy Nombre de la taxonomia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $separator Separador entre nombres&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@param&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; $post_id ID de la entrada&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;@return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; Lista de nombres separados&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt; */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_term_names&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $taxonomy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $separator &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;, &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $post_id &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;?:&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_ID&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( $taxonomy &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $terms &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_category&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        $terms &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_the_terms&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $post_id, $taxonomy );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $terms ) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; is_wp_error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $terms ) ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $names &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; array_map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; esc_html&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $term&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;name );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }, $terms );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; implode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( $separator, $names );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Uso:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_term_names&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;category&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );           &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// &quot;Noticias, WordPress&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_term_names&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;post_tag&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; | &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );    &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// &quot;PHP | CSS | HTML&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; wppoland_get_term_names&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;genre&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos; / &apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;123&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );  &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// &quot;Accion / Drama&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resumen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;get_the_category()&lt;/code&gt; es la herramienta correcta cuando necesitas nombres de categoría como texto plano sin enlaces. Los puntos clave son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;the_category()&lt;/code&gt; siempre genera enlaces HTML, no se puede evitar&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_the_category()&lt;/code&gt; devuelve objetos con acceso completo a metadatos&lt;/li&gt;
&lt;li&gt;Siempre escapa la salida con &lt;code&gt;esc_html()&lt;/code&gt; por seguridad&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;implode()&lt;/code&gt; para listas separadas elegantemente&lt;/li&gt;
&lt;li&gt;El mismo patron funciona con taxonomías personalizadas via &lt;code&gt;get_the_terms()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Crea funciones helper reutilizables para mantener tu código DRY&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>wordpress</category><category>development</category><category domain="tag">guide</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/jak-wyciagnac-kategorie-wpisu-bez-linku.jpg" type="image/jpeg"/></item><item><title>Mejor Plugin SEO para WordPress en 2026 - Rank Math vs Yoast vs TSF</title><link>https://wppoland.com/es/seo-plugins-comparison-2026/</link><guid isPermaLink="true">https://wppoland.com/es/seo-plugins-comparison-2026/</guid><description>Compara Rank Math, Yoast SEO y The SEO Framework para elegir el mejor plugin SEO de WordPress en 2026 en rendimiento, funciones y flujos de trabajo SEO reales.</description><pubDate>Fri, 25 Jun 2010 11:46:19 GMT</pubDate><content:encoded>&lt;p id=&quot;introduccion&quot;&gt;En 2010, actualizar &quot;WordPress SEO by Yoast&quot; a la versión 1.2.5 era un gran acontecimiento. Te permitia establecer un meta título. Eso era revolucionario. En 2026, el panorama es diferente. Los plugins SEO se han convertido en &quot;Suites&quot; - hinchando tu panel de administración con sugerencias de IA, rastreadores de keywords y anuncios persistentes.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Como desarrolladores, necesitamos elegir la herramienta correcta para el trabajo. Aqui esta la comparación técnica de los Tres Grandes.&lt;/p&gt;
&lt;p&gt;Respuesta corta: si quieres el mejor plugin SEO para WordPress en 2026, &lt;strong&gt;Rank Math&lt;/strong&gt; gana en funciones, &lt;strong&gt;The SEO Framework&lt;/strong&gt; gana en velocidad y moderación, y &lt;strong&gt;Yoast SEO&lt;/strong&gt; sigue siendo la opción más segura para clientes que prefieren familiaridad sobre opciones de power user.&lt;/p&gt;
&lt;h2 id=&quot;1-the-seo-framework-tsf-la-eleccion-del-desarrollador&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-the-seo-framework-tsf-la-eleccion-del-desarrollador&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. The SEO Framework (TSF): La eleccion del desarrollador&lt;/h2&gt;
&lt;p&gt;Si te importa el rendimiento y odias los “upsells”, este es tu plugin.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Factor de bloat&lt;/strong&gt;: Cero. Sin anuncios, sin notificaciones del dashboard&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;: El más rápido. Sin hacks de output buffering&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filosofia&lt;/strong&gt;: “SEO automatizado.” Auto-genera títulos/descripciones basados en patrones de tu contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejor para&lt;/strong&gt;: Agencias, sitios de alto rendimiento, WordPress Headless&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Snippet de código: Deshabilitar schema via filtro TSF&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;the_seo_framework_json_ld_output&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;__return_false&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; );&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;por-que-tsf-destaca-para-desarrolladores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-tsf-destaca-para-desarrolladores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que TSF destaca para desarrolladores&lt;/h3&gt;
&lt;p&gt;TSF respeta al desarrollador. No intenta reemplazar tu flujo de trabajo SEO con un dashboard de marketing. No añade tablas de base de datos innecesarias. No carga scripts en cada página del admin. Hace exactamente lo que un plugin SEO debe hacer - meta tags, schema, sitemaps - y nada mas.&lt;/p&gt;
&lt;h3 id=&quot;limitaciones-de-tsf&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#limitaciones-de-tsf&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Limitaciones de TSF&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Sin generador de schema avanzado integrado (necesitas plugin adicional o código personalizado)&lt;/li&gt;
&lt;li&gt;Sin gestor de redirecciones integrado&lt;/li&gt;
&lt;li&gt;Sin rastreador de keywords&lt;/li&gt;
&lt;li&gt;La interfaz es “espartana” - algunos clientes pueden sentir que “le falta algo”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-rankmath-la-bestia-de-funciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-rankmath-la-bestia-de-funciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. RankMath: La bestia de funciones&lt;/h2&gt;
&lt;p&gt;RankMath disrumpio el mercado ofreciendo funciones “Premium” de forma gratuita (Redirecciones, Monitor 404, Generador de Schema).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Factor de bloat&lt;/strong&gt;: Alto. El asistente de configuración es largo, y las funciones “IA” estan por todas partes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funciones&lt;/strong&gt;: Reemplaza 5 otros plugins (Redirection, Schema Pro, XML Sitemaps, 404 Monitor, Analytics)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración&lt;/strong&gt;: Integración profunda con Google Search Console y Analytics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejor para&lt;/strong&gt;: Power Users, propietarios de sitios DIY, Content Marketers que necesitan “puntuaciones”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advertencia&lt;/strong&gt;: RankMath añade muchas filas de base de datos (&lt;code&gt;wp_rank_math_*&lt;/code&gt;). La limpieza es necesaria si desinstalas.&lt;/p&gt;
&lt;h3 id=&quot;funciones-exclusivas-de-rankmath&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#funciones-exclusivas-de-rankmath&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Funciones exclusivas de RankMath&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Schema Generator visual&lt;/strong&gt;: Interfaz grafica para crear schemás complejos sin escribir JSON-LD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analytics integrado&lt;/strong&gt;: Dashboard con datos de Search Console directamente en WordPress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor 404&lt;/strong&gt;: Detecta y permite redirigir URLs rotas automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content AI&lt;/strong&gt;: Sugerencias de contenido basadas en IA (requiere creditos adicionales)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;rendimiento-de-rankmath&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#rendimiento-de-rankmath&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Rendimiento de RankMath&lt;/h3&gt;
&lt;p&gt;RankMath es el más pesado de los tres. En sitios con miles de publicaciónes, las tablas &lt;code&gt;wp_rank_math_*&lt;/code&gt; pueden crecer significativamente. Monitorea el tamaño de la base de datos y ejecuta limpieza periodica.&lt;/p&gt;
&lt;h2 id=&quot;3-yoast-seo-el-gigante-legacy&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-yoast-seo-el-gigante-legacy&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Yoast SEO: El gigante legacy&lt;/h2&gt;
&lt;p&gt;Yoast es el “IBM” del SEO WordPress. Nadie es despedido por elegir Yoast.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Estabilidad&lt;/strong&gt;: Solido como una roca. La compatibilidad hacia atras es su religion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Educación&lt;/strong&gt;: El “Análisis de Legibilidad” enseña a los usuarios a escribir mejor (oraciones cortas, voz activa)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contras&lt;/strong&gt;: Banners de anuncios constantes en el panel de admin. Ciclo de innovacion más lento&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejor para&lt;/strong&gt;: Clientes no técnicos que necesitan la tranquilidad de la “Luz Verde”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;yoast-en-2026-schema-aggregation-con-nlweb&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#yoast-en-2026-schema-aggregation-con-nlweb&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Yoast en 2026: Schema Aggregation con NLWeb&lt;/h3&gt;
&lt;p&gt;La novedad más significativa de Yoast en 2026 es su integración con &lt;strong&gt;Microsoft NLWeb&lt;/strong&gt; para Schema Aggregation. Esto permite que los datos estructurados generados por Yoast sean descubiertos y procesados de forma más eficiente por sistemas de IA, posicionando a Yoast como un puente entre SEO tradicional y optimización para motores de respuesta.&lt;/p&gt;
&lt;h2 id=&quot;mejores-plugins-seo-para-wordpress-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-plugins-seo-para-wordpress-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores plugins SEO para WordPress en 2026&lt;/h2&gt;
&lt;p&gt;Si necesitas una respuesta rapida: &lt;strong&gt;The SEO Framework&lt;/strong&gt; para sitios enfocados en rendimiento, &lt;strong&gt;Rank Math&lt;/strong&gt; para configuraciones con muchas funciones, &lt;strong&gt;Yoast&lt;/strong&gt; para clientes que necesitan la interfaz mas simple. Los tres manejan los fundamentos (meta tags, sitemaps, schema) de forma competente.&lt;/p&gt;
&lt;p&gt;La verdadera pregunta no es “que plugin tiene mas funciones” sino “que plugin se adapta a tu flujo de trabajo sin ralentizar tu sitio.” En 2026, los plugins SEO han crecido hasta convertirse en suites masivas con herramientas de IA, rastreadores de keywords y dashboards de analytics. La mayor parte de ese bloat no mejora los rankings — mejora el embudo de upsell del fabricante del plugin.&lt;/p&gt;
&lt;p&gt;Para una vision mas amplia de como la eleccion del plugin SEO encaja en tu stack general, consulta nuestra &lt;a href=&quot;/es/mejores-plugins-wordpress-guia-completa-2026/&quot;&gt;guia esencial de plugins WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;la-falacia-de-la-luz-verde&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-falacia-de-la-luz-verde&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La falacia de la “Luz Verde”&lt;/h2&gt;
&lt;p&gt;Los clientes aman obtener la “Luz Verde” en Yoast/RankMath. Pero una luz verde &lt;strong&gt;no significa que vas a posicionar&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Solo significa que tu keyword exacto aparece en el título, slug y primer parrafo. Los algoritmos de Google (BERT/MUM) entienden &lt;strong&gt;contexto&lt;/strong&gt;, no solo densidad de keywords.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consejo&lt;/strong&gt;: Enseña a los clientes a escribir para humanos, no para el semaforo del plugin. La intencion del usuario y la autoridad temática importan infinitamente más que la coincidencia exacta de una frase clave.&lt;/p&gt;
&lt;h3 id=&quot;que-realmente-importa-para-seo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-realmente-importa-para-seo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que realmente importa para SEO en 2026&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Intencion de búsqueda&lt;/strong&gt;: Tu contenido responde lo que el usuario realmente busca?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad temática&lt;/strong&gt;: Cubres el tema en profundidad con contenido interconectado?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E-E-A-T&lt;/strong&gt;: Quien escribe el contenido y que credenciales tiene?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento técnico&lt;/strong&gt;: Core Web Vitals, TTFB, estructura HTML limpia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datos estructurados&lt;/strong&gt;: Schema.org correcto para &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;visibilidad en búsqueda IA&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;tabla-comparativa-completa&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabla-comparativa-completa&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabla comparativa completa&lt;/h2&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Caracteristica&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;TSF&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Rank Math&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Yoast SEO&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Precio&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis (Pro $7/mes)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis (Pro $5/mes)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Gratis (Pro $99/año)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Rendimiento&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Excelente&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Medio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Schema&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Básico&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Avanzado&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Avanzado (NLWeb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Redirecciones&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Si&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;No (plugin separado)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Upsells/Anuncios&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ninguno&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Moderados&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Agresivos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Curva aprendizaje&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Media&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Baja&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Mejor para&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Desarrolladores&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Power users&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Clientes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;guia-de-migración-entre-plugins-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guia-de-migración-entre-plugins-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guia de migración entre plugins SEO&lt;/h2&gt;
&lt;p&gt;Si decides cambiar de plugin, sigue estos pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Exporta metadata actual&lt;/strong&gt;: Títulos, descripciones, configuración de schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mapea redirecciones&lt;/strong&gt;: Exporta todas las redirecciones configuradas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instala nuevo plugin&lt;/strong&gt;: Usa la herramienta de importacion integrada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica metadata&lt;/strong&gt;: Comprueba que títulos y descripciones se transfirieron correctamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpia base de datos&lt;/strong&gt;: Elimina tablas del plugin anterior (especialmente &lt;code&gt;wp_rank_math_*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorea Search Console&lt;/strong&gt;: Vigila cambios en indexacion y rendimiento durante 2 semanas&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;resumen-que-instalar-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#resumen-que-instalar-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Resumen: Que instalar en 2026?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Para Velocidad&lt;/strong&gt;: The SEO Framework&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Para Funciones&lt;/strong&gt;: RankMath&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Para Clientes&lt;/strong&gt;: Yoast (porque ya lo conocen)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Construyendo un sitio en 2026? Empieza con TSF. Si necesitas schema específico o redirecciones, añade plugins dedicados o actualiza a RankMath. No dejes que tu plugin SEO ralentice tu TTFB.&lt;/p&gt;
&lt;p&gt;Necesitas ayuda con &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;SEO, GEO y AEO para WordPress&lt;/a&gt; o &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad&lt;/a&gt;? &lt;a href=&quot;/es/contacto/&quot;&gt;Contactanos&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>seo</category><category>plugins</category><category domain="tag">yoast</category><category domain="tag">rankmath</category><category domain="tag">the seo framework</category><category domain="tag">performance</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>Penalizaciones de Google en 2026: SpamBrain, actualizaciones de spam de enlaces, deteccion de PBN y recuperacion</title><link>https://wppoland.com/es/common-link-building-mistakes-penalties/</link><guid isPermaLink="true">https://wppoland.com/es/common-link-building-mistakes-penalties/</guid><description>Guia completa sobre penalizaciones de Google en 2026. Comprende la deteccion por IA de SpamBrain, las actualizaciones de spam de enlaces, los métodos de identificacion de PBN, las penalizaciones por enlaces de pago, el proceso de recuperacion de acciones manuales y como proteger tu sitio de las degradaciones algoritmicas.</description><pubDate>Sun, 01 Nov 2009 10:59:09 GMT</pubDate><content:encoded>&lt;h2 id=&quot;penalizaciones-de-google-en-2026-el-panorama-completo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#penalizaciones-de-google-en-2026-el-panorama-completo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Penalizaciones de Google en 2026: el panorama completo&lt;/h2&gt;
&lt;p&gt;El temor a las penalizaciones de Google ha impulsado la estrategia SEO desde la primera actualización Penguin en 2012. Pero la naturaleza de las penalizaciones ha cambiado fundamentalmente. En 2026, el enfoque de Google es más sofisticado, más matizado y, en muchos sentidos, menos punitivo que los instrumentos contundentes del pasado.&lt;/p&gt;
&lt;p&gt;El cambio de “penalizar” a “anular” representa el mayor cambio. En lugar de eliminar tu sitio del indice por tener enlaces malos, Google cada vez más simplemente ignora esos enlaces - tratandolos como si no existieran. El resultado práctico es el mismo (pierdes posiciones construidas sobre spam), pero el mecanismo es diferente e importante de entender.&lt;/p&gt;
&lt;p&gt;Al mismo tiempo, las capacidades de deteccion de Google han avanzado enormemente a través de SpamBrain, su sistema de deteccion de spam impulsado por IA. Lo que antes estaba oculto - redes de blogs privadas, esquemás sofisticados de enlaces pagados, intercambios manipulativos de enlaces - ahora es detectable a escala.&lt;/p&gt;
&lt;p&gt;Esta guía cubre cada tipo de penalizacion de Google relevante en 2026, como funciona la deteccion, que desencadena las penalizaciones y el proceso completo de recuperacion.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;spambrain-el-sistema-de-deteccion-de-spam-con-ia-de-google&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#spambrain-el-sistema-de-deteccion-de-spam-con-ia-de-google&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SpamBrain: el sistema de deteccion de spam con IA de Google&lt;/h2&gt;
&lt;h3 id=&quot;que-es-spambrain&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-spambrain&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es SpamBrain&lt;/h3&gt;
&lt;p&gt;SpamBrain es el sistema de deteccion de spam basado en aprendizaje automático de Google, reconocido publicamente por primera vez en el Informe de Webspam de 2018 y significativamente ampliado en actualizaciones posteriores. Cumple multiples funciones:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deteccion de contenido spam.&lt;/strong&gt; SpamBrain identifica contenido generado automáticamente, páginas encubiertas, contenido copiado y otras formás de spam de contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deteccion de spam de enlaces.&lt;/strong&gt; SpamBrain identifica sitios que compran enlaces, sitios que venden o intermedian enlaces, y las redes de enlaces que los conectan. Esta es su función más impactante para los profesionales SEO.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Identificacion de sitios spam.&lt;/strong&gt; SpamBrain puede identificar sitios enteros creados principalmente con propósitos de spam, incluso cuando intentan disfrazar su naturaleza.&lt;/p&gt;
&lt;h3 id=&quot;como-spambrain-detecta-el-spam-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-spambrain-detecta-el-spam-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como SpamBrain detecta el spam de enlaces&lt;/h3&gt;
&lt;p&gt;SpamBrain utiliza aprendizaje automático para identificar patrones asociados con enlaces manipulativos. Aunque Google no pública sus métodos específicos de deteccion, el análisis de la industria y la investigación de patentes sugieren las siguientes señales:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Análisis del grafo de enlaces.&lt;/strong&gt; SpamBrain mapea las relaciones entre sitios que enlazan y sitios enlazados. Cuando el grafo de enlaces revela patrones inconsistentes con el enlazado editorial natural - como clusters de sitios no relacionados que todos enlazan a los mismos objetivos, o sitios que solo existen para enlazar hacia afuera - los marca como potencial spam.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correlacion de calidad de contenido.&lt;/strong&gt; SpamBrain evalua la calidad del contenido en los sitios que enlazan. Los sitios con contenido delgado, con plantilla o generado por IA que existe principalmente como vehiculo para la colocacion de enlaces son identificados como potenciales vendedores de enlaces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patrones temporales.&lt;/strong&gt; El momento de adquisicion de enlaces importa. Los enlaces naturales aparecen organicamente con el tiempo en respuesta a la calidad del contenido y la visibilidad. SpamBrain detecta patrones no naturales: intervalos regulares entre la creación de enlaces, patrones de rafagas que no se correlacionan con la publicación de contenido o cobertura mediatica, y construccion de enlaces coordinada a través de sitios de la red.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Señales economicas.&lt;/strong&gt; SpamBrain puede identificar patrones asociados con transacciones comerciales de enlaces. Los sitios que aceptan “guest posts” de industrias no relacionadas, páginas con multiples enlaces salientes a palabras clave comercialmente competitivas, y patrones que coinciden con plantillas conocidas de enlaces pagados son marcados.&lt;/p&gt;
&lt;h3 id=&quot;actualizaciones-de-spambrain-y-su-impacto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizaciones-de-spambrain-y-su-impacto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizaciones de SpamBrain y su impacto&lt;/h3&gt;
&lt;p&gt;Google lanza actualizaciones de SpamBrain periodicamente, cada una ampliando las capacidades de deteccion del sistema:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualización de spam de octubre 2022.&lt;/strong&gt; Se centro en detectar spam de enlaces en multiples idiomas. Impacto significativo en sitios que dependian de link building internacional de fuentes de baja calidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualización de spam de enlaces de diciembre 2022.&lt;/strong&gt; La actualización más impactante para los constructores de enlaces. Uso SpamBrain para anular ampliamente el spam de enlaces detectado. Los sitios que habian construido posiciones sobre enlaces comprados o fabricados vieron caidas significativas cuando esos enlaces fueron devaluados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizaciones posteriores (2023-2026).&lt;/strong&gt; Cada iteracion ha ampliado la deteccion para cubrir nuevas técnicas de evasion. SpamBrain aprende continuamente, por lo que las técnicas que funcionaron en torno a una actualización son tipicamente atrapadas por la siguiente.&lt;/p&gt;
&lt;h2 id=&quot;deteccion-de-pbn-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#deteccion-de-pbn-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Deteccion de PBN en 2026&lt;/h2&gt;
&lt;h3 id=&quot;que-son-los-pbn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-son-los-pbn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que son los PBN&lt;/h3&gt;
&lt;p&gt;Una Red de Blogs Privada (PBN) es una red de sitios web creados o adquiridos con el propósito de construir enlaces a sitios objetivo. Los operadores de PBN registran dominios expirados con autoridad existente, configuran sitios web minimos y colocan enlaces a sus sitios monetarios o los sitios de sus clientes.&lt;/p&gt;
&lt;h3 id=&quot;como-google-detecta-los-pbn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-google-detecta-los-pbn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como Google detecta los PBN&lt;/h3&gt;
&lt;p&gt;La deteccion de PBN en 2026 es multicapa. Google utiliza tanto sistemas automatizados como revision manual para identificar redes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Huellas de hosting.&lt;/strong&gt; Los operadores de PBN a menudo usan el mismo proveedor de hosting, rango de IP o CDN para multiples sitios. Google puede identificar patrones de agrupacion en la infraestructura de hosting que sugieren propiedad coordinada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patrones de registro.&lt;/strong&gt; Los datos WHOIS (incluso con servicios de privacidad), el momento del registro de dominios y los patrones de renovacion pueden revelar propiedad coordinada. Multiples dominios registrados o renovados dentro de la misma ventana de tiempo, usando el mismo registrador, sugieren un único operador.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Señales de calidad de contenido.&lt;/strong&gt; Los sitios PBN tipicamente tienen contenido delgado y de baja calidad que existe como vehiculo para la colocacion de enlaces. Los patrones incluyen: artículos cortos sin profundidad, temas que no coinciden con el propósito original del dominio expirado, contenido generado por IA sin supervision editorial, y sin evidencia de lectores o engagement real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Topologia de enlaces.&lt;/strong&gt; Los sitios PBN exhiben patrones de enlaces no naturales: enlazan principalmente hacia afuera (sin recibir muchos enlaces entrantes naturales), enlazan a sitios en nichos comercialmente competitivos, y puede haber entrelazado entre sitios de la red.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tráfico y engagement.&lt;/strong&gt; Los sitios PBN tipicamente tienen tráfico organico cercano a cero, sin presencia en redes sociales y sin señales de engagement. Los sitios web reales que obtienen enlaces tienen audiencias reales. Los sitios PBN no.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patrones de plantilla y diseño.&lt;/strong&gt; Muchos sitios PBN usan plantillas, plugins o patrones de diseño similares. Incluso cuando los operadores intentan variar los diseños, las similitudes estructurales en el código, estructura del sitemap o configuraciónes de plugins pueden ser detectadas.&lt;/p&gt;
&lt;h3 id=&quot;las-consecuencias-del-uso-de-pbn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-consecuencias-del-uso-de-pbn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las consecuencias del uso de PBN&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Para los propios sitios PBN.&lt;/strong&gt; Los sitios pueden ser desindexados por completo si Google los identifica como parte de un esquema de enlaces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Para sitios que reciben enlaces PBN.&lt;/strong&gt; En la mayoria de los casos, Google anula el valor del enlace en lugar de penalizar al sitio objetivo. Esto significa que las posiciones construidas sobre enlaces PBN desaparecen cuando los enlaces son devaluados. En casos graves, particularmente si el propietario del sitio es claramente complice, puede aplicarse una accion manual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dano a largo plazo.&lt;/strong&gt; Incluso si las posiciones no se pierden permanentemente, la inversión en infraestructura PBN se desperdicia, y el tiempo empleado podria haberse usado para construir activos de enlaces sostenibles.&lt;/p&gt;
&lt;h2 id=&quot;penalizaciones-por-enlaces-de-pago&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#penalizaciones-por-enlaces-de-pago&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Penalizaciones por enlaces de pago&lt;/h2&gt;
&lt;h3 id=&quot;que-constituye-un-enlace-de-pago&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-constituye-un-enlace-de-pago&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que constituye un enlace de pago&lt;/h3&gt;
&lt;p&gt;Las directrices de Google son claras: cualquier enlace donde se intercambia dinero, bienes o servicios a cambio de un enlace (o por contenido que contiene un enlace) que pasa PageRank es una violacion de sus directrices.&lt;/p&gt;
&lt;p&gt;Esto incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compras directas de enlaces.&lt;/strong&gt; Pagar al propietario de un sitio web para colocar un enlace en su sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guest posts pagados.&lt;/strong&gt; Pagar para publicar un artículo en otro sitio donde el artículo contiene enlaces de regreso a tu sitio. Incluso si el contenido es de alta calidad, el pago convierte al enlace en una violacion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redes de intermediarios de enlaces.&lt;/strong&gt; Usar servicios intermediarios que conectan compradores de enlaces con vendedores de enlaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intercambios de productos por enlaces.&lt;/strong&gt; Enviar productos gratuitos a bloggers a cambio de resenas con enlaces (sin atributos nofollow/sponsored).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces de patrocinio.&lt;/strong&gt; Patrocinar eventos, organizaciónes beneficas u organizaciónes a cambio de enlaces followed (estos deben usar rel=“sponsored”).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;como-google-detecta-los-enlaces-de-pago&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-google-detecta-los-enlaces-de-pago&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como Google detecta los enlaces de pago&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Reconocimiento de patrones en el grafo de enlaces.&lt;/strong&gt; Cuando los mismos sitios enlazan repetidamente a sitios en nichos comercialmente competitivos, y esos enlaces aparecen en contextos que sugieren independencia editorial pero en realidad involucran pago, el patron se vuelve detectable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Análisis de contenido.&lt;/strong&gt; El contenido pagado a menudo sigue plantillas: puede estar fuera de tema para el sitio anfitrion, puede incluir texto ancla innaturalmente específico, o puede leerse como promocional en lugar de editorial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Informes de denunciantes.&lt;/strong&gt; Google acepta y actua sobre informes de spam. Los competidores, empleados descontentos o antiguos clientes de vendedores de enlaces pueden informar sobre esquemás de enlaces pagados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Análisis economico.&lt;/strong&gt; Los sitios que aceptan “guest posts” sobre temas no relacionados con su contenido habitual, particularmente cuando esos posts apuntan a palabras clave comercialmente valiosas, son marcados para revision.&lt;/p&gt;
&lt;h3 id=&quot;penalizaciones-por-enlaces-de-pago-1&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#penalizaciones-por-enlaces-de-pago-1&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Penalizaciones por enlaces de pago&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Para el sitio comprador:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accion manual por “enlaces no naturales hacia tu sitio” que requiere limpieza y reconsideracion.&lt;/li&gt;
&lt;li&gt;Devaluación algoritmica de enlaces pagados detectados (caida de posiciones al anularse el valor del enlace).&lt;/li&gt;
&lt;li&gt;En casos graves, degradacion de posiciones a nivel de sección o de todo el sitio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Para el sitio vendedor:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accion manual por “enlaces no naturales desde tu sitio.”&lt;/li&gt;
&lt;li&gt;Potencial perdida de posiciones para el propio contenido del sitio vendedor.&lt;/li&gt;
&lt;li&gt;Devaluación algoritmica como fuente de enlazado de confianza.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;impacto-de-la-actualización-de-spam-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#impacto-de-la-actualización-de-spam-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Impacto de la actualización de spam de enlaces&lt;/h2&gt;
&lt;h3 id=&quot;que-hace-la-actualización-de-spam-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hace-la-actualización-de-spam-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hace la actualización de spam de enlaces&lt;/h3&gt;
&lt;p&gt;La Actualización de Spam de Enlaces de Google (primer despliegue importante en diciembre 2022, con iteraciones posteriores) usa SpamBrain para anular ampliamente el spam de enlaces en toda la web. En lugar de penalizar sitios individuales, devalua los enlaces spam detectados a escala.&lt;/p&gt;
&lt;p&gt;El impacto práctico: si tu sitio tenia 100 backlinks y 30 eran de fuentes spam detectadas, esos 30 enlaces son tratados como si no existieran. Tus posiciones se ajustan para reflejar el valor de tus 70 enlaces legitimos restantes.&lt;/p&gt;
&lt;h3 id=&quot;sitios-más-afectados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sitios-más-afectados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sitios más afectados&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Sitios muy dependientes de servicios de link building.&lt;/strong&gt; Las empresas que externalizaron el link building a agencias que usaban métodos grey-hat o black-hat vieron el mayor impacto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sitios en nichos competitivos.&lt;/strong&gt; Las industrias donde el link building pagado es comun (juegos de azar, finanzas, CBD, legal) fueron afectadas de forma desproporcionada porque un porcentaje mayor de sus perfiles de enlaces consistia en enlaces fabricados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sitios con perfiles de enlaces no naturales.&lt;/strong&gt; Los sitios donde la mayoria de los backlinks provenia de unas pocas campanas de link building en lugar de adquisicion organica eran los más vulnerables.&lt;/p&gt;
&lt;h3 id=&quot;identificar-el-impacto-de-la-actualización-de-spam-de-enlaces-en-tu-sitio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#identificar-el-impacto-de-la-actualización-de-spam-de-enlaces-en-tu-sitio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Identificar el impacto de la actualización de spam de enlaces en tu sitio&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Verifica el momento.&lt;/strong&gt; Compara las caidas de tráfico organico con las fechas conocidas de despliegue de la Actualización de Spam de Enlaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analiza los cambios en el perfil de enlaces.&lt;/strong&gt; Usa Ahrefs para verificar si los dominios de referencia han disminuido - esto puede indicar que Google desindexo sitios PBN o spam detectados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisa los patrones de texto ancla.&lt;/strong&gt; Si tu perfil de texto ancla esta muy optimizado con palabras clave de coincidencia exacta, puedes ser más susceptible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compara con competidores.&lt;/strong&gt; Si competidores con perfiles de enlaces más limpios ganaron posiciones mientras tu las perdiste, la devaluación de spam de enlaces es una causa probable.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;acciones-manuales-comprension-y-recuperacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#acciones-manuales-comprension-y-recuperacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Acciones manuales: comprension y recuperacion&lt;/h2&gt;
&lt;h3 id=&quot;tipos-de-acciones-manuales-relacionadas-con-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-acciones-manuales-relacionadas-con-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de acciones manuales relacionadas con enlaces&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;“Enlaces no naturales hacia tu sitio.”&lt;/strong&gt; Google ha detectado que tu sitio tiene enlaces entrantes que violan sus directrices. Esta es la accion manual más comun relacionada con enlaces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Enlaces no naturales desde tu sitio.”&lt;/strong&gt; Google ha detectado que tu sitio contiene enlaces salientes que violan sus directrices (estas enlazando de forma manipulativa - vendiendo enlaces, intercambios excesivos de enlaces, etc.).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parcial vs sitio completo.&lt;/strong&gt; Las acciones manuales pueden dirigirse a páginas/secciones específicas o al sitio completo. Las acciones parciales son más comunes y afectan solo las páginas o secciones involucradas en la violacion.&lt;/p&gt;
&lt;h3 id=&quot;el-proceso-de-recuperacion-de-acciones-manuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-proceso-de-recuperacion-de-acciones-manuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El proceso de recuperacion de acciones manuales&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Evaluar el alcance.&lt;/strong&gt; En Google Search Console, navega a Seguridad y acciones manuales &gt; Acciones manuales. Lee la notificación completa para entender que enlaces/páginas estan afectadas y por que.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Auditoria integral de enlaces.&lt;/strong&gt; Exporta tu perfil completo de backlinks de multiples herramientas (Ahrefs, SEMrush, Google Search Console). Identifica cada enlace que podria ser considerado una violacion: enlaces comprados, enlaces PBN, intercambios de enlaces, guest posts pagados y cualquier otro enlace relacionado con esquemas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Solicitar eliminaciónes de enlaces.&lt;/strong&gt; Contacta directamente a los propietarios de sitios y solicita la eliminación de enlaces problematicos. Documenta cada intento de contacto - Google quiere ver que hiciste un esfuerzo genuino. Mantiene registros de: fecha de contacto, método (email), URL específica del enlace y la respuesta (o falta de ella).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 4: Desautorizar enlaces restantes.&lt;/strong&gt; Para los enlaces que no pudiste eliminar, crea un archivo de desautorizacion completo. Incluye tanto URLs específicas como dominios completos donde sea apropiado. Se exhaustivo pero no excesivamente - no desautorices enlaces legitimos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 5: Escribir la solicitud de reconsideracion.&lt;/strong&gt; Este es el paso más crítico. Tu solicitud de reconsideracion debe incluir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un reconocimiento honesto de lo que sucedio.&lt;/li&gt;
&lt;li&gt;Detalles específicos sobre que directrices fueron violadas.&lt;/li&gt;
&lt;li&gt;Documentación de tus esfuerzos de limpieza (solicitudes de eliminación enviadas, archivo de desautorizacion enviado).&lt;/li&gt;
&lt;li&gt;Explicacion de que medidas has implementado para prevenir futuras violaciones.&lt;/li&gt;
&lt;li&gt;Un compromiso de seguir las directrices de Google en adelante.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Paso 6: Enviar y esperar.&lt;/strong&gt; Envia a través de Search Console. Google tipicamente responde en 2-4 semanas. Si la solicitud es rechazada, revisa los comentarios, aborda los problemas restantes y reenvia.&lt;/p&gt;
&lt;h3 id=&quot;que-hace-exitosa-una-solicitud-de-reconsideracion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hace-exitosa-una-solicitud-de-reconsideracion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hace exitosa una solicitud de reconsideracion&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Honestidad.&lt;/strong&gt; El equipo de revision manual de Google puede detectar cuando estas siendo evasivo. Si compraste enlaces, dilo. Si contrataste una agencia que uso malas prácticas, explica eso y describe que controles has implementado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exhaustividad.&lt;/strong&gt; Demuestra que has identificado y abordado todos los enlaces problematicos, no solo un subconjunto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Medidas de prevencion.&lt;/strong&gt; Explica tus nuevas politicas de link building: que haras y que no, como examinas a las agencias, que controles internos existen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Especificidad.&lt;/strong&gt; Proporciona números exactos: “Identificamos 127 enlaces pagados en 43 dominios. Eliminamos exitosamente 89 enlaces y desautorizamos los 38 enlaces restantes de 22 dominios.”&lt;/p&gt;
&lt;h2 id=&quot;degradaciones-algoritmicas-la-penalizacion-invisible&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#degradaciones-algoritmicas-la-penalizacion-invisible&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Degradaciones algoritmicas: la penalizacion invisible&lt;/h2&gt;
&lt;h3 id=&quot;como-funcionan-las-degradaciones-algoritmicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funcionan-las-degradaciones-algoritmicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funcionan las degradaciones algoritmicas&lt;/h3&gt;
&lt;p&gt;A diferencia de las acciones manuales, las degradaciones algoritmicas se aplican automáticamente por los sistemas de clasificación de Google. No hay notificación en Search Console. Solo lo notas a través de caidas de posiciones que se correlacionan con actualizaciones de algoritmo conocidas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Penguin (ahora integrado en el algoritmo principal).&lt;/strong&gt; Devalua los enlaces detectados como spam. En lugar de penalizar, simplemente ignora los enlaces detectados, causando que las posiciones construidas sobre esos enlaces caigan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SpamBrain.&lt;/strong&gt; Identifica y devalua enlaces spam a escala. Se aplica a través de actualizaciones periodicas que amplian las capacidades de deteccion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sistema de Contenido Util.&lt;/strong&gt; Aunque no trata directamente sobre enlaces, este sistema evalua si el contenido existe para servir a los usuarios o para posicionar en buscadores. Los sitios con contenido delgado creado principalmente como cebo de enlaces pueden ser degradados por este sistema.&lt;/p&gt;
&lt;h3 id=&quot;diagnosticar-una-degradacion-algoritmica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diagnosticar-una-degradacion-algoritmica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diagnosticar una degradacion algoritmica&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Análisis de linea temporal.&lt;/strong&gt; Mapea tus caidas de tráfico organico contra las fechas confirmadas de actualizaciones de algoritmo. Google pública anuncios de actualizaciones importantes a través de su blog Search Central y la cuenta de Twitter SearchLiaison.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Análisis a nivel de página.&lt;/strong&gt; Determina que páginas perdieron posiciones. Si las páginas con más backlinks fabricados cayeron mientras las páginas con enlaces naturales se mantuvieron estables, la accion algoritmica relacionada con enlaces es probable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Análisis de competidores.&lt;/strong&gt; Verifica si competidores con perfiles más limpios ganaron posiciones que tu perdiste. Si se produjeron caidas en toda la industria, la causa podria ser un cambio de algoritmo más amplio en lugar de una penalizacion de enlaces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revision del perfil de enlaces.&lt;/strong&gt; Analiza tu perfil de backlinks en busca de patrones que SpamBrain identifica: enlaces comprados, enlaces PBN, patrones de texto ancla no naturales y participacion en esquemás de enlaces.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;recuperacion-de-degradaciones-algoritmicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recuperacion-de-degradaciones-algoritmicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recuperacion de degradaciones algoritmicas&lt;/h3&gt;
&lt;p&gt;A diferencia de las acciones manuales, no hay solicitud de reconsideracion para las degradaciones algoritmicas. La recuperacion requiere:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Corregir el problema subyacente.&lt;/strong&gt; Elimina o desautoriza enlaces problematicos. Detiene cualquier esquema de enlaces en curso. Limpia tu perfil de enlaces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Construir enlaces legitimos.&lt;/strong&gt; Reemplaza los enlaces devaluados con enlaces editoriales genuinos de fuentes relevantes y autoritativas. Sigue las estrategias descritas en nuestra &lt;a href=&quot;/es/link-building-strategies/&quot;&gt;guía de link building&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Esperar la reevaluación.&lt;/strong&gt; Los algoritmos relacionados con enlaces de Google procesan continuamente (Penguin esta ahora integrado en el algoritmo principal), pero los cambios de deteccion se despliegan en actualizaciones periodicas. La recuperacion puede tomar semanas a meses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitorear el progreso.&lt;/strong&gt; Rastrea las posiciones para las palabras clave afectadas, el tráfico organico a las páginas afectadas y la adquisicion de nuevos dominios de referencia.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;prevencion-mantener-tu-sitio-libre-de-penalizaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#prevencion-mantener-tu-sitio-libre-de-penalizaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Prevencion: mantener tu sitio libre de penalizaciones&lt;/h2&gt;
&lt;h3 id=&quot;construir-un-perfil-de-enlaces-a-prueba-de-penalizaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construir-un-perfil-de-enlaces-a-prueba-de-penalizaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construir un perfil de enlaces a prueba de penalizaciones&lt;/h3&gt;
&lt;p&gt;La mejor estrategia de recuperacion de penalizaciones es nunca necesitar una. Construye un perfil de enlaces que pueda resistir cualquier actualización de algoritmo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diversifica las fuentes de enlaces.&lt;/strong&gt; Ningun tipo de enlace único debe dominar tu perfil. Mezcla menciones editoriales, contribuciones como invitado, listados en páginas de recursos, citas en directorios y enlaces obtenidos naturalmente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mantiene texto ancla natural.&lt;/strong&gt; Mantiene los textos ancla de coincidencia exacta por debajo del 5% del total. Deja que los textos ancla de marca y URL dominen naturalmente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enfocate en la relevancia temática.&lt;/strong&gt; Construye enlaces desde sitios dentro de tu cluster tematico. La relevancia es una fuerte señal de legitimidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gana enlaces a través de la calidad del contenido.&lt;/strong&gt; Crea contenido que valga la pena enlazar - investigación original, guías completas, herramientas utiles. Los enlaces ganados a través del valor del contenido son imposibles de penalizar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audita regularmente.&lt;/strong&gt; Realiza auditorias trimestrales del perfil de enlaces para detectar problemas potenciales tempranamente. Revisa nuevos backlinks, distribucion de texto ancla y calidad de dominios de referencia.&lt;/p&gt;
&lt;h3 id=&quot;examinar-agencias-y-proveedores-de-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#examinar-agencias-y-proveedores-de-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Examinar agencias y proveedores de link building&lt;/h3&gt;
&lt;p&gt;Si externalizas el link building, examina a tus socios cuidadosamente:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pide transparencia.&lt;/strong&gt; Las agencias reputadas te diran exactamente como construyen enlaces y que sitios apuntan. Si una agencia es vaga sobre sus métodos, probablemente esta usando prácticas que no quieres asociar con tu marca.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solicita ejemplos de colocaciones.&lt;/strong&gt; Pide ver ejemplos de enlaces que han construido para otros clientes. Verifica si esos enlaces estan en sitios reales con audiencias reales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rechaza colocaciones garantizadas.&lt;/strong&gt; Ninguna agencia legitima puede garantizar colocaciones de enlaces específicas en sitios específicos. Los enlaces garantizados tipicamente significan colocaciones pagadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verifica la longevidad de resultados.&lt;/strong&gt; Pregunta sobre resultados de clientes durante más de 12 meses. Si los resultados desaparecen despues de actualizaciones de algoritmo, los métodos no eran sostenibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Retiene control editorial.&lt;/strong&gt; Asegurate de aprobar cada colocacion de enlace antes de que se publique. Si una agencia se opone a esto, probablemente esta colocando enlaces que no aprobarias.&lt;/p&gt;
&lt;h3 id=&quot;monitoreo-de-seo-negativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#monitoreo-de-seo-negativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Monitoreo de SEO negativo&lt;/h3&gt;
&lt;p&gt;Aunque raro y a menudo sobreestimado, los ataques de SEO negativo - donde competidores construyen enlaces spam hacia tu sitio - ocurren. Monitorea:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Picos repentinos de backlinks.&lt;/strong&gt; Usa alertas de Ahrefs para notificarte de aumentos inusuales en nuevos dominios de referencia. Si ganas 500 nuevos dominios enlazantes en un dia sin razon conocida, investiga.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spam de enlaces en idiomas extranjeros.&lt;/strong&gt; Grandes volumenes de enlaces de sitios en idiomas no relacionados con tu negocio pueden indicar un ataque.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Manipulación de texto ancla.&lt;/strong&gt; Si tu perfil de texto ancla muestra repentinamente picos en texto ancla de coincidencia exacta u ofensivo, alguien puede estar apuntandote.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Respuesta al SEO negativo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documenta el ataque con evidencia con marca de tiempo.&lt;/li&gt;
&lt;li&gt;Desautoriza los enlaces spam rápidamente.&lt;/li&gt;
&lt;li&gt;Si resulta en una accion manual, incluye evidencia del ataque en tu solicitud de reconsideracion.&lt;/li&gt;
&lt;li&gt;Informa del ataque a través del formulario de informe de spam de Google.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;casos-de-estudio-escenarios-de-penalizacion-y-recuperacion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#casos-de-estudio-escenarios-de-penalizacion-y-recuperacion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Casos de estudio: escenarios de penalizacion y recuperacion&lt;/h2&gt;
&lt;h3 id=&quot;escenario-1-dependencia-de-pbn&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-1-dependencia-de-pbn&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 1: Dependencia de PBN&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Situación.&lt;/strong&gt; Una agencia WordPress construyo 200 enlaces desde un PBN durante 18 meses. Las posiciones mejoraron inicialmente pero cayeron bruscamente despues de una actualización de SpamBrain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diagnostico.&lt;/strong&gt; Los enlaces PBN fueron devaluados. Sin accion manual, pero la degradacion algoritmica elimino todas las ganancias de posiciones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recuperacion.&lt;/strong&gt; Se desautorizaron todos los enlaces PBN. Se invirtio en PR digital y guest posting en publicaciónes legitimas. Se crearon 3 activos enlazables (investigación original). Las posiciones se recuperaron en 6 meses a medida que los enlaces legitimos reemplazaron los enlaces PBN.&lt;/p&gt;
&lt;h3 id=&quot;escenario-2-campana-de-guest-posts-pagados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-2-campana-de-guest-posts-pagados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 2: Campana de guest posts pagados&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Situación.&lt;/strong&gt; Un sitio de e-commerce pago por 50 guest posts en varios blogs. Se emitio una accion manual por “enlaces no naturales.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recuperacion.&lt;/strong&gt; Se contactaron los 50 sitios solicitando la eliminación de enlaces (32 eliminados). Se desautorizaron los 18 enlaces restantes. Se envio una solicitud de reconsideracion con documentación completa. La accion manual se levanto en 3 semanas. Se cambio a link building basado en contenido.&lt;/p&gt;
&lt;h3 id=&quot;escenario-3-problemás-de-enlaces-heredados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escenario-3-problemás-de-enlaces-heredados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escenario 3: Problemás de enlaces heredados&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Situación.&lt;/strong&gt; Una empresa adquirio un dominio con historial de link building agresivo por el propietario anterior. Las posiciones se estancaron a pesar de contenido de calidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diagnostico.&lt;/strong&gt; El perfil histórico de backlinks contenia cientos de enlaces de directorios de enlaces, hiladores de artículos e intercambios de enlaces de 2010-2015.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recuperacion.&lt;/strong&gt; Desautorizacion completa de enlaces spam históricos. Enfoque en construir enlaces frescos y relevantes a través de alianzas industriales y marketing de contenidos. Las posiciones mejoraron en 4 meses.&lt;/p&gt;
&lt;h2 id=&quot;herramientas-para-deteccion-y-recuperacion-de-penalizaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-para-deteccion-y-recuperacion-de-penalizaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas para deteccion y recuperacion de penalizaciones&lt;/h2&gt;
&lt;h3 id=&quot;google-search-console&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-search-console&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Search Console&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Informe de acciones manuales.&lt;/strong&gt; La única fuente definitiva para penalizaciones de acciones manuales. Verifica regularmente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problemás de seguridad.&lt;/strong&gt; Puede revelar inyecciones de enlaces hackeados que afectan tu sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Informe de enlaces.&lt;/strong&gt; Muestra la vision de Google de tu perfil de enlaces. Compara con herramientas de terceros para identificar discrepancias.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Informe de rendimiento.&lt;/strong&gt; Rastrea cambios en tráfico organico e impresiones. Las caidas repentinas correlacionadas con fechas de actualización indican potenciales problemas algoritmicos.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-de-terceros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-de-terceros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas de terceros&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Ahrefs Site Explorer.&lt;/strong&gt; Análisis integral de backlinks, datos históricos de enlaces, seguimiento de dominios de referencia y análisis de texto ancla.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEMrush Backlink Audit.&lt;/strong&gt; Puntuacion automatizada de toxicidad, integración con Google Search Console y generación simplificada de archivos de desautorizacion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Majestic.&lt;/strong&gt; El análisis de Trust Flow ayuda a identificar la composicion de calidad de tu perfil de enlaces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Panguin Tool.&lt;/strong&gt; Superpone las fechas de actualización del algoritmo de Google sobre tus datos de tráfico de Analytics para identificar visualmente correlaciones entre actualizaciones y cambios de tráfico.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Las penalizaciones de Google en 2026 son menos sobre castigo y más sobre precision. SpamBrain y los sistemas relacionados buscan asegurar que las posiciones en búsqueda reflejen autoridad y relevancia genuinas en lugar de señales de enlaces fabricadas. Los sitios que dependen de estrategias de link building legitimás no tienen nada que temer de las actualizaciones de algoritmo - cada actualización realmente les ayuda al eliminar la ventaja artificial de competidores que toman atajos.&lt;/p&gt;
&lt;p&gt;Si actualmente dependes de enlaces fabricados, la pregunta no es si te afectara, sino cuando. Cada actualización de SpamBrain amplia las capacidades de deteccion. Los enlaces que funcionan hoy pueden ser identificados manana.&lt;/p&gt;
&lt;p&gt;El camino a seguir es claro: construye autoridad genuina a través de contenido valioso, relaciones autenticas y PR legitimo. Invierte en estrategias que creen valor duradero en lugar de manipulación temporal de posiciones. Cuando tu perfil de enlaces refleja autoridad del mundo real, las actualizaciones de algoritmo se convierten en oportunidades en lugar de amenazas.&lt;/p&gt;
&lt;p&gt;Para aquellos ya afectados por penalizaciones, la recuperacion es posible y esta bien documentada. Sigue el proceso, se honesto en tus solicitudes de reconsideracion y comprometete con prácticas sostenibles. Los sitios que se recuperan con más fuerza son aquellos que usan la penalizacion como catalizador para construir un perfil de enlaces genuinamente autoritativo.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y visibilidad&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">seo</category><category domain="tag">penalties</category><category domain="tag">spambrain</category><category domain="tag">link-spam</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>Cómo monitorizar el progreso de tu link building: guía completa de métricas y herramientas</title><link>https://wppoland.com/es/monitoring-link-building-progress/</link><guid isPermaLink="true">https://wppoland.com/es/monitoring-link-building-progress/</guid><description>Guía exhaustiva sobre cómo monitorizar eficazmente tus esfuerzos de construcción de backlinks. Métricas clave, herramientas esenciales, mejores prácticas y marcos de informes para el seguimiento del link building.</description><pubDate>Sun, 01 Nov 2009 10:59:09 GMT</pubDate><content:encoded>&lt;p&gt;La construcción efectiva de enlaces requiere una monitorización y un análisis continuos. Sin un seguimiento adecuado, no puedes medir el éxito ni identificar problemas de forma temprana. Este principio es fundamental para cualquier estrategia de SEO que pretenda ser sostenible a largo plazo.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;métricas-clave-que-debes-rastrear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métricas-clave-que-debes-rastrear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métricas clave que debes rastrear&lt;/h2&gt;
&lt;h3 id=&quot;crecimiento-de-backlinks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crecimiento-de-backlinks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Crecimiento de backlinks&lt;/h3&gt;
&lt;p&gt;El primer pilar de cualquier sistema de monitorización de link building es el seguimiento del crecimiento de tu perfil de backlinks. Sin una visión clara de cómo evoluciona tu perfil de enlaces, es imposible determinar si tus esfuerzos están dando fruto.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Número total de backlinks&lt;/strong&gt;: Esta métrica te proporciona una visión general del volumen de enlaces que apuntan a tu sitio. Un crecimiento constante y orgánico es la señal más saludable. Los picos repentinos pueden indicar campañas exitosas, pero también pueden ser señales de actividad sospechosa que requiere investigación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Número de dominios referentes&lt;/strong&gt;: A menudo más importante que el número total de backlinks. Tener 100 enlaces de 100 dominios diferentes generalmente tiene más valor SEO que 100 enlaces de un solo dominio. La diversidad de dominios referentes es un indicador clave de un perfil de enlaces natural y robusto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces nuevos vs perdidos a lo largo del tiempo&lt;/strong&gt;: El ratio entre enlaces ganados y enlaces perdidos es una métrica crucial. Si estás perdiendo enlaces más rápido de lo que los ganas, tu perfil de enlaces se está deteriorando. Identifica por qué se pierden los enlaces: ¿las páginas enlazantes fueron eliminadas? ¿Cambió el contenido? ¿Se rompieron las URLs?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La clave está en establecer una línea base y hacer seguimiento de las tendencias mes a mes. Un perfil de enlaces saludable muestra un crecimiento gradual y constante, no saltos erráticos.&lt;/p&gt;
&lt;h3 id=&quot;indicadores-de-calidad-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-de-calidad-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores de calidad de enlaces&lt;/h3&gt;
&lt;p&gt;No todos los backlinks son iguales. Un enlace de un sitio con alta autoridad y relevancia temática vale exponencialmente más que cientos de enlaces de sitios de baja calidad. Los indicadores de calidad que debes monitorizar incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autoridad de Dominio (DA) / Domain Rating (DR)&lt;/strong&gt;: Estas métricas, proporcionadas por Moz y Ahrefs respectivamente, te dan una estimación de la fuerza general del dominio enlazante. Aunque no son métricas oficiales de Google, son aproximaciones útiles de la autoridad percibida de un sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad de Página (PA) / URL Rating (UR)&lt;/strong&gt;: Mientras que la DA evalúa el dominio completo, la PA se centra en la página específica que te enlaza. Un enlace desde una página con alta autoridad individual puede ser extremadamente valioso, incluso si el dominio en su conjunto no tiene una DA excepcional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relevancia y alineación temática&lt;/strong&gt;: Un enlace de un sitio que trata sobre tu mismo tema tiene más peso que un enlace de un sitio completamente no relacionado. Google evalúa la relevancia contextual del enlace. Un enlace a tu agencia de desarrollo WordPress desde un blog de tecnología tiene más sentido contextual que uno desde un sitio de recetas de cocina.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Crea un sistema de puntuación interna que combine estas métricas para evaluar rápidamente la calidad de cada nuevo enlace adquirido.&lt;/p&gt;
&lt;h3 id=&quot;métricas-de-tráfico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métricas-de-tráfico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métricas de tráfico&lt;/h3&gt;
&lt;p&gt;Las métricas de tráfico son la prueba definitiva de que tu estrategia de link building funciona. Los enlaces no existen en un vacío: su propósito final es mejorar tu visibilidad y atraer visitantes cualificados.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tráfico de referencia de backlinks&lt;/strong&gt;: Mide cuántos visitantes llegan a tu sitio directamente a través de los backlinks. Un enlace que genera tráfico de referencia constante es doblemente valioso: proporciona valor SEO y visitantes directos. Usa Google Analytics para rastrear esta métrica filtrando por fuente de tráfico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crecimiento del tráfico orgánico&lt;/strong&gt;: El objetivo principal del link building es mejorar las posiciones en los motores de búsqueda, lo que se traduce en mayor tráfico orgánico. Monitoriza el tráfico orgánico general y segmenta por las páginas que has trabajado activamente con link building para ver la correlación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejoras en posiciones de palabras clave&lt;/strong&gt;: Haz seguimiento de las posiciones de tus palabras clave objetivo antes y después de las campañas de link building. Herramientas como Ahrefs, SEMrush o Sistrix permiten monitorizar las fluctuaciones de posiciones a lo largo del tiempo y correlacionarlas con la adquisición de nuevos enlaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;herramientas-esenciales-de-monitorización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-esenciales-de-monitorización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas esenciales de monitorización&lt;/h2&gt;
&lt;h3 id=&quot;google-search-console-gratuita&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-search-console-gratuita&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Search Console (gratuita)&lt;/h3&gt;
&lt;p&gt;Google Search Console es la herramienta fundamental y gratuita que todo propietario de un sitio web debería utilizar. Es la fuente de datos más fiable porque proviene directamente de Google.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ver qué sitios enlazan a tu web&lt;/strong&gt;: El informe de “Enlaces” en GSC te muestra los principales sitios que enlazan al tuyo, las páginas más enlazadas y el anchor text más utilizado. Aunque los datos no son tan granulares como los de herramientas de pago, son directos de Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identificar errores de rastreo&lt;/strong&gt;: Los errores de rastreo pueden afectar la forma en que Google percibe los enlaces que llegan a tu sitio. Si una URL enlazada devuelve un error 404, estás desperdiciando el valor de ese enlace. Configura redirecciones 301 para recuperar ese equity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorizar el informe de enlaces externos&lt;/strong&gt;: Revisa este informe mensualmente para detectar cambios significativos. Un aumento repentino de enlaces de sitios desconocidos puede indicar un ataque de SEO negativo, mientras que la pérdida de enlaces importantes requiere investigación.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ahrefs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ahrefs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ahrefs&lt;/h3&gt;
&lt;p&gt;Ahrefs es una de las herramientas más completas para el análisis de backlinks. Su rastreador es uno de los más grandes y frecuentes del mercado, lo que significa que detecta nuevos enlaces rápidamente.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Análisis completo de backlinks&lt;/strong&gt;: Ahrefs proporciona datos detallados sobre cada enlace, incluyendo el DR del dominio enlazante, el UR de la página, el anchor text, si el enlace es dofollow o nofollow, y cuándo fue detectado por primera vez.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alertas de enlaces nuevos/perdidos&lt;/strong&gt;: Configura alertas para recibir notificaciones por correo electrónico cada vez que ganes o pierdas un backlink. Esto te permite reaccionar rápidamente, ya sea agradeciendo a quien te enlazó o investigando por qué se perdió un enlace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguimiento de enlaces de competidores&lt;/strong&gt;: La función “Link Intersect” te permite ver qué sitios enlazan a tus competidores pero no a ti, identificando oportunidades de link building. También puedes monitorizar el crecimiento de backlinks de tus competidores para contextualizar tus propios esfuerzos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;moz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#moz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Moz&lt;/h3&gt;
&lt;p&gt;Moz ofrece métricas propietarias que han sido estándares de la industria durante años. Su Autoridad de Dominio es quizás la métrica de enlace más ampliamente reconocida.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seguimiento de Autoridad de Dominio&lt;/strong&gt;: Monitoriza la evolución de tu DA a lo largo del tiempo. Ten en cuenta que la DA puede fluctuar debido a actualizaciones del índice de Moz, no solo por cambios reales en tu perfil de enlaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de intersección de enlaces&lt;/strong&gt;: Identifica dominios que enlazan a múltiples competidores pero no a ti. Estos sitios son probablemente receptivos a contenido de tu sector y representan oportunidades de outreach de alta probabilidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorización de Spam Score&lt;/strong&gt;: El Spam Score de Moz evalúa la probabilidad de que un dominio sea spam. Úsalo para identificar enlaces potencialmente tóxicos en tu perfil y tomar medidas preventivas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;semrush&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#semrush&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEMrush&lt;/h3&gt;
&lt;p&gt;SEMrush combina análisis de backlinks con herramientas de auditoría que facilitan la identificación de problemas en tu perfil de enlaces.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Funciones de auditoría de backlinks&lt;/strong&gt;: La herramienta de auditoría de backlinks de SEMrush analiza automáticamente tu perfil y clasifica los enlaces por nivel de toxicidad, facilitando la priorización de acciones de limpieza.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identificación de enlaces tóxicos&lt;/strong&gt;: SEMrush utiliza múltiples señales para identificar enlaces potencialmente dañinos, incluyendo la calidad del dominio, patrones de enlaces y relevancia temática. Genera listas de desautorización listas para enviar a Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Métricas de Authority Score&lt;/strong&gt;: El Authority Score de SEMrush es una métrica compuesta que evalúa la calidad general de un dominio basándose en datos de backlinks, tráfico orgánico y otros factores.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mejores-prácticas-de-monitorización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-de-monitorización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas de monitorización&lt;/h2&gt;
&lt;p&gt;La monitorización efectiva no se trata solo de qué herramientas usas, sino de cómo las usas de forma sistemática y consistente.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configura alertas&lt;/strong&gt; para enlaces nuevos y perdidos. La detección temprana de cambios te permite reaccionar rápidamente. Si pierdes un enlace valioso, puedes contactar al webmaster antes de que sea demasiado tarde. Si ganas un enlace sospechoso, puedes investigar antes de que cause problemas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revisa mensualmente&lt;/strong&gt; buscando patrones inusuales. Una revisión mensual profunda te permite detectar tendencias que las alertas diarias pueden pasar por alto. Busca cambios en la distribución de anchor text, aumentos repentinos de enlaces de un país o idioma específico, y cambios en el ratio dofollow/nofollow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Compara con competidores&lt;/strong&gt; regularmente. Tu perfil de enlaces no existe en un vacío. Lo que importa es cómo se compara con los de tus competidores directos. Si tus competidores están ganando enlaces de sitios de alta autoridad a un ritmo mayor, necesitas ajustar tu estrategia.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rastrea la distribución de anchor text&lt;/strong&gt;. Un perfil de anchor text natural es diverso. Si más del 5% de tus anchors son palabras clave comerciales exactas, puede parecer manipulativo. Monitoriza la distribución y asegúrate de que los anchors de marca, URL genéricas y texto variado predominen sobre las palabras clave exactas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitoriza enlaces tóxicos&lt;/strong&gt; de forma continua. Los enlaces tóxicos pueden acumularse con el tiempo, ya sea por campañas antiguas, por ataques de SEO negativo o por la degradación natural de sitios que te enlazaron. Establece un proceso trimestral de revisión y limpieza de enlaces tóxicos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;marco-de-informes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marco-de-informes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marco de informes&lt;/h2&gt;
&lt;p&gt;Crear informes regulares es esencial para comunicar el progreso, justificar la inversión y tomar decisiones basadas en datos. Un buen informe de link building debe ser claro, accionable y conectar las métricas de enlaces con los resultados de negocio.&lt;/p&gt;
&lt;p&gt;Incluye en cada informe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enlaces adquiridos en este período&lt;/strong&gt;: Lista los nuevos enlaces obtenidos, incluyendo el dominio, la DA/DR, el anchor text y el contexto de la página enlazante. Distingue entre enlaces ganados orgánicamente y enlaces obtenidos a través de outreach activo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puntuación de calidad de los nuevos enlaces&lt;/strong&gt;: No te limites a contar enlaces. Asigna una puntuación de calidad a cada enlace basándose en la autoridad del dominio, la relevancia temática, el tráfico del sitio enlazante y la ubicación del enlace (contextual vs barra lateral).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impacto en el tráfico de referencia&lt;/strong&gt;: Muestra cuánto tráfico directo generan los backlinks. Este dato ayuda a demostrar el valor inmediato del link building más allá del SEO puro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejoras en posiciones&lt;/strong&gt;: Correlaciona la adquisición de nuevos enlaces con mejoras en las posiciones de palabras clave objetivo. Usa gráficos que muestren la evolución temporal para visualizar el impacto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlaces problemáticos identificados&lt;/strong&gt;: Documenta cualquier enlace tóxico o sospechoso detectado durante el período, junto con las acciones tomadas (solicitud de eliminación, desautorización, monitorización).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La monitorización consistente garantiza que tus esfuerzos de link building se mantengan efectivos y seguros a lo largo del tiempo. Sin un sistema de seguimiento robusto, estás navegando a ciegas en uno de los aspectos más importantes del SEO.&lt;/p&gt;
&lt;h2 id=&quot;establecimiento-de-kpis-para-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#establecimiento-de-kpis-para-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Establecimiento de KPIs para link building&lt;/h2&gt;
&lt;p&gt;Además de las métricas de seguimiento habituales, es fundamental establecer Indicadores Clave de Rendimiento (KPIs) específicos para tu estrategia de link building. Estos KPIs deben ser medibles, realistas y alineados con tus objetivos de negocio.&lt;/p&gt;
&lt;h3 id=&quot;kpis-cuantitativos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kpis-cuantitativos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;KPIs cuantitativos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Número de nuevos dominios referentes por mes&lt;/strong&gt;: Establece un objetivo mensual basado en tu presupuesto y recursos. Para la mayoría de las empresas medianas, ganar entre 5 y 15 nuevos dominios referentes de calidad al mes es un objetivo razonable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DA/DR mínimo de enlaces objetivo&lt;/strong&gt;: Define un umbral mínimo de calidad. Si tu estrategia se centra en enlaces de alta calidad, establece un DR mínimo de 30 o 40 como criterio de éxito.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ratio de enlaces dofollow vs nofollow&lt;/strong&gt;: Un perfil natural tiene una mezcla de ambos. Un ratio del 70-80% dofollow es típicamente saludable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;kpis-cualitativos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#kpis-cualitativos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;KPIs cualitativos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Relevancia temática de los enlaces&lt;/strong&gt;: Evalúa qué porcentaje de los nuevos enlaces proviene de sitios temáticamente relevantes. Apunta a que al menos el 60-70% de tus enlaces sean temáticamente alineados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diversidad geográfica&lt;/strong&gt;: Si tu negocio es internacional, monitoriza la distribución geográfica de tus enlaces para asegurar cobertura en tus mercados objetivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Naturalidad del perfil de enlaces&lt;/strong&gt;: Evalúa regularmente si tu perfil de enlaces parece natural o si muestra señales de manipulación.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;automatización-de-la-monitorización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#automatización-de-la-monitorización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Automatización de la monitorización&lt;/h2&gt;
&lt;p&gt;En un mundo ideal, revisarías manualmente cada nuevo enlace. En la práctica, la automatización es esencial para escalar la monitorización sin perder eficacia.&lt;/p&gt;
&lt;h3 id=&quot;configuración-de-alertas-automatizadas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-de-alertas-automatizadas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración de alertas automatizadas&lt;/h3&gt;
&lt;p&gt;Configura alertas en múltiples herramientas para crear un sistema de detección redundante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ahrefs Alerts&lt;/strong&gt;: Configura alertas de nuevos backlinks y backlinks perdidos para tu dominio y los de tus competidores principales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Alerts&lt;/strong&gt;: Monitoriza menciones de tu marca que podrían convertirse en oportunidades de link building si las menciones no incluyen enlace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEMrush Alerts&lt;/strong&gt;: Configura alertas para cambios significativos en tu Authority Score o en el de tus competidores.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;dashboards-de-monitorización&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dashboards-de-monitorización&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Dashboards de monitorización&lt;/h3&gt;
&lt;p&gt;Crea dashboards centralizados que reúnan datos de múltiples fuentes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa Google Data Studio (Looker Studio) para combinar datos de Google Search Console, Google Analytics y hojas de cálculo con datos de herramientas SEO.&lt;/li&gt;
&lt;li&gt;Programa actualizaciones automáticas para que los datos estén siempre frescos.&lt;/li&gt;
&lt;li&gt;Incluye visualizaciones de tendencias para detectar patrones rápidamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La clave del éxito en la monitorización de link building es la consistencia. No se trata de hacer un análisis profundo una vez al año, sino de mantener un pulso constante sobre la salud de tu perfil de enlaces. Con las herramientas adecuadas, las métricas correctas y un proceso sistematizado, puedes asegurar que cada enlace que ganas contribuye positivamente a tus objetivos de SEO y de negocio.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">wordpress</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Tipos de Backlinks SEO: Guia Completa de Tipos de Link Building</title><link>https://wppoland.com/es/types-of-seo-backlinks/</link><guid isPermaLink="true">https://wppoland.com/es/types-of-seo-backlinks/</guid><description>Diferentes tipos de backlinks y sus roles en la estrategia SEO. Aprende a construir un perfil de enlaces diverso y de alta calidad.</description><pubDate>Mon, 26 Oct 2009 10:59:09 GMT</pubDate><content:encoded>&lt;p&gt;Entender los diferentes tipos de backlinks es crucial para desarrollar una estrategia SEO efectiva. No todos los enlaces son iguales, y conocer la diferencia puede ayudarte a priorizar tus esfuerzos de link building.&lt;/p&gt;
&lt;p&gt;Conoce más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;tipos-de-backlinks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-backlinks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de backlinks&lt;/h2&gt;
&lt;h3 id=&quot;1-enlaces-editoriales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-enlaces-editoriales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Enlaces editoriales&lt;/h3&gt;
&lt;p&gt;Estos son enlaces que los sitios web dan naturalmente sin que tu los pidas. Se ganan porque tu contenido es valioso y vale la pena referenciarlo. Los enlaces editoriales son la forma más pura de recomendación en la web y llevan el mayor peso en los algoritmos de Google. Para ganar estos enlaces, necesitas crear contenido excepcionalmente util, original o perspicaz que otros creadores de contenido quieran citar como fuente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategias para ganar enlaces editoriales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Publicar investigación original con datos propios&lt;/li&gt;
&lt;li&gt;Crear guías definitivas que cubran temas exhaustivamente&lt;/li&gt;
&lt;li&gt;Ofrecer perspectivas únicas basadas en experiencia directa&lt;/li&gt;
&lt;li&gt;Desarrollar marcos conceptuales o métodologías propias&lt;/li&gt;
&lt;li&gt;Publicar análisis de tendencias con datos actualizados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-enlaces-de-guest-blogging&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-enlaces-de-guest-blogging&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Enlaces de guest blogging&lt;/h3&gt;
&lt;p&gt;Enlaces obtenidos al escribir contenido para otros sitios web de tu industria. Estos deberian venir de sitios reputados y proporcionar valor genuino. El guest blogging efectivo no se trata de obtener un enlace: se trata de compartir tu experiencia con una nueva audiencia y construir relaciones profesionales duraderas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores prácticas de guest blogging:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Elegir sitios con audiencia real y relevante&lt;/li&gt;
&lt;li&gt;Proporcionar contenido de mayor calidad que el que publicas en tu propio sitio&lt;/li&gt;
&lt;li&gt;Incluir enlaces contextuales naturales, no forzados&lt;/li&gt;
&lt;li&gt;Diversificar los sitios donde publicas&lt;/li&gt;
&lt;li&gt;Evitar “paquetes de guest posting” masivos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-enlaces-de-perfiles-de-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-enlaces-de-perfiles-de-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Enlaces de perfiles de negocio&lt;/h3&gt;
&lt;p&gt;Enlaces de listados de directorios, perfiles de redes sociales y directorios de negocios. Aunque de menor valor individual, ayudan a establecer presencia online y construir la base de tu perfil de backlinks. Son especialmente importantes para SEO local.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Directorios clave para negocios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Business Profile&lt;/li&gt;
&lt;li&gt;LinkedIn Company Page&lt;/li&gt;
&lt;li&gt;Yelp y directorios locales&lt;/li&gt;
&lt;li&gt;Directorios específicos de la industria&lt;/li&gt;
&lt;li&gt;Camaras de comercio locales&lt;/li&gt;
&lt;li&gt;Asociaciones profesionales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;4-enlaces-de-webinars-y-podcasts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-enlaces-de-webinars-y-podcasts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Enlaces de webinars y podcasts&lt;/h3&gt;
&lt;p&gt;Enlaces ganados por participar en webinars, podcasts y entrevistas de la industria. Estos a menudo vienen con alta autoridad porque demuestran liderazgo intelectual. Las plataformas de podcasts y los sitios que alojan webinars tienden a tener buena autoridad de dominio, y el enlace aparece en un contexto editorial genuino.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como conseguir invitaciones:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Construir una presencia activa en redes sociales profesionales&lt;/li&gt;
&lt;li&gt;Publicar contenido de calidad que demuestre experiencia&lt;/li&gt;
&lt;li&gt;Contactar directamente a hosts de podcasts con propuestas de valor&lt;/li&gt;
&lt;li&gt;Participar en comunidades de tu industria&lt;/li&gt;
&lt;li&gt;Crear un media kit profesional&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;5-enlaces-de-herramientas-gratuitas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-enlaces-de-herramientas-gratuitas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Enlaces de herramientas gratuitas&lt;/h3&gt;
&lt;p&gt;Crear herramientas o recursos gratuitos que otros quieran enlazar y referenciar. Este es uno de los métodos más efectivos y sostenibles de link building porque proporciona valor continuo. Una vez creada la herramienta, los enlaces llegan de forma organica con el tiempo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplos de herramientas enlazables:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calculadoras específicas de la industria&lt;/li&gt;
&lt;li&gt;Generadores de documentos o plantillas&lt;/li&gt;
&lt;li&gt;Analizadores o auditores automatizados&lt;/li&gt;
&lt;li&gt;Bases de datos o directorios especializados&lt;/li&gt;
&lt;li&gt;Infografias interactivas con datos actualizados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;6-enlaces-de-reconocimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-enlaces-de-reconocimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Enlaces de reconocimiento&lt;/h3&gt;
&lt;p&gt;Enlaces de sitios que reconocen tu patrocinio, asociación o contribucion. Estos validan relaciones comerciales y construyen credibilidad de marca. Incluyen patrocinios de eventos, donaciones a organizaciónes sin fines de lucro y participacion en iniciativas comunitarias.&lt;/p&gt;
&lt;h2 id=&quot;factores-de-calidad-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#factores-de-calidad-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Factores de calidad de enlaces&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autoridad del Dominio&lt;/strong&gt;: Sitios con DA más alto pasan más valor. Un enlace de un sitio con DA 80 vale exponencialmente más que uno de DA 20.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relevancia de la Página&lt;/strong&gt;: El contexto importa para el valor del enlace. Un enlace de una página temáticamente relacionada tiene mucho más peso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Posición del Enlace&lt;/strong&gt;: Los enlaces dentro del contenido son más valiosos que los enlaces en el pie de página, barra lateral o páginas de socios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Texto Ancla&lt;/strong&gt;: La variacion natural es clave. Un perfil de texto ancla diverso parece más natural y evita penalizaciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estado Follow&lt;/strong&gt;: Los enlaces DoFollow pasan equity de enlace, mientras que los NoFollow proporcionan tráfico y diversidad de perfil.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;construyendo-un-perfil-de-backlinks-natural&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construyendo-un-perfil-de-backlinks-natural&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construyendo un perfil de backlinks natural&lt;/h2&gt;
&lt;p&gt;Un perfil de backlinks saludable se parece a esto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;40-50%&lt;/strong&gt; de enlaces de marca (nombre de empresa o dominio)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20-30%&lt;/strong&gt; de enlaces editoriales de alta calidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10-15%&lt;/strong&gt; de enlaces de directorios y perfiles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5-10%&lt;/strong&gt; de enlaces de guest posting estrategico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5-10%&lt;/strong&gt; de otros tipos (herramientas, reconocimiento, podcasts)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La clave es la diversidad y la naturalidad. Google esta cada vez más sofisticado en detectar perfiles de enlaces manipulados. Un crecimiento constante y organico de backlinks de diversas fuentes es mucho más valioso que un pico repentino de enlaces del mismo tipo.&lt;/p&gt;
&lt;h2 id=&quot;errores-comunes-en-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-en-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes en link building&lt;/h2&gt;
&lt;h3 id=&quot;compra-directa-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#compra-directa-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Compra directa de enlaces&lt;/h3&gt;
&lt;p&gt;Viola las directrices de Google y puede resultar en penalizaciones severas. Los enlaces comprados a menudo vienen de sitios de baja calidad que Google ya tiene identificados.&lt;/p&gt;
&lt;h3 id=&quot;intercambio-excesivo-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#intercambio-excesivo-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Intercambio excesivo de enlaces&lt;/h3&gt;
&lt;p&gt;El intercambio reciproco masivo de enlaces es fácilmente detectable por Google. Los intercambios ocasionales y naturales entre sitios relacionados son normales, pero los esquemás sistematicos no lo son.&lt;/p&gt;
&lt;h3 id=&quot;texto-ancla-sobre-optimizado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#texto-ancla-sobre-optimizado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Texto ancla sobre-optimizado&lt;/h3&gt;
&lt;p&gt;Usar siempre la misma palabra clave exacta como texto ancla es una señal clara de manipulación. Diversifica entre texto de marca, generico y variaciones naturales.&lt;/p&gt;
&lt;h3 id=&quot;ignorar-la-relevancia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ignorar-la-relevancia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ignorar la relevancia&lt;/h3&gt;
&lt;p&gt;Un enlace de un sitio no relacionado con tu industria tiene poco valor y puede incluso ser considerado sospechoso por Google.&lt;/p&gt;
&lt;h2 id=&quot;plan-de-accion-de-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-accion-de-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de accion de link building&lt;/h2&gt;
&lt;h3 id=&quot;semana-1-2-auditoria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#semana-1-2-auditoria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Semana 1-2: Auditoria&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Analiza tu perfil actual de backlinks&lt;/li&gt;
&lt;li&gt;Identifica tipos de enlaces faltantes&lt;/li&gt;
&lt;li&gt;Investiga perfiles de backlinks de competidores&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;semana-3-4-creación-de-activos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#semana-3-4-creación-de-activos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Semana 3-4: Creación de activos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Desarrolla 2-3 piezas de contenido enlazable&lt;/li&gt;
&lt;li&gt;Crea o actualiza tus perfiles de negocio&lt;/li&gt;
&lt;li&gt;Prepara propuestas de guest posting&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;semana-5-8-outreach&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#semana-5-8-outreach&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Semana 5-8: Outreach&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contacta sitios objetivo para guest posting&lt;/li&gt;
&lt;li&gt;Registrate en directorios relevantes&lt;/li&gt;
&lt;li&gt;Participa en eventos de la industria&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;continuo-monitoreo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#continuo-monitoreo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Continuo: Monitoreo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Rastrea nuevos backlinks semanalmente&lt;/li&gt;
&lt;li&gt;Analiza el impacto en posicionamiento&lt;/li&gt;
&lt;li&gt;Ajusta estrategia según resultados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enfocate en construir un perfil de backlinks diverso y natural para el éxito SEO a largo plazo.&lt;/p&gt;
&lt;p&gt;Explora nuestros servicios de &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; para mantener tu sitio optimizado y seguro.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">backlinks</category><category domain="tag">seo</category><enclosure url="https://wppoland.com/images/og/pulapki-spidera.jpg" type="image/jpeg"/></item><item><title>Evaluación de Calidad de Backlinks 2026: Métricas DA/DR, Relevancia Temática y Análisis de Enlaces Tóxicos</title><link>https://wppoland.com/es/seo-link-building-backlinks/</link><guid isPermaLink="true">https://wppoland.com/es/seo-link-building-backlinks/</guid><description>Guía completa para evaluar la calidad de backlinks en 2026. Métricas DA/DR, relevancia temática y cómo identificar y eliminar enlaces tóxicos para mejorar tu SEO.</description><pubDate>Fri, 16 Oct 2009 10:59:09 GMT</pubDate><content:encoded>&lt;h2 id=&quot;evaluación-de-la-calidad-de-backlinks-por-que-no-todos-los-enlaces-son-iguales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evaluación-de-la-calidad-de-backlinks-por-que-no-todos-los-enlaces-son-iguales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evaluación de la calidad de backlinks: por que no todos los enlaces son iguales&lt;/h2&gt;
&lt;p&gt;En los primeros dias del SEO, la estrategia de backlinks era simple: más enlaces significaban mejores posiciones. La calidad de esos enlaces apenas importaba. Un enlace desde un comentario de blog aleatorio contaba casí tanto como un enlace desde una publicación importante.&lt;/p&gt;
&lt;p&gt;Esa era termino con Google Penguin en 2012, y cada actualización de algoritmo posterior ha hecho la evaluación de la calidad de enlaces más crítica. En 2026, la IA SpamBrain de Google evalua los backlinks con una sofisticacion que habria parecido imposible hace una decada. Entiende relaciones temáticas entre sitios, detecta patrones de enlaces fabricados y puede distinguir enlaces editoriales genuinos de colocaciones compradas con notable precision.&lt;/p&gt;
&lt;p&gt;Entender como evaluar la calidad de los backlinks ya no es opcional. Es la base de cualquier estrategia SEO efectiva. Ya sea que estes construyendo nuevos enlaces, auditando tu perfil existente o evaluando la estrategia de un competidor, necesitas un framework fiable para determinar que enlaces realmente mueven la aguja.&lt;/p&gt;
&lt;p&gt;Esta guía proporciona ese framework, cubriendo todo desde la interpretacion de metricas de autoridad hasta la identificacion de enlaces toxicos y la toma de decisiones sobre el disavow.&lt;/p&gt;
&lt;p&gt;Descubre nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;entendiendo-las-metricas-de-autoridad-da-dr-y-más-alla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entendiendo-las-metricas-de-autoridad-da-dr-y-más-alla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entendiendo las metricas de autoridad: DA, DR y más alla&lt;/h2&gt;
&lt;h3 id=&quot;domain-authority-da-de-moz&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#domain-authority-da-de-moz&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Domain Authority (DA) de Moz&lt;/h3&gt;
&lt;p&gt;Domain Authority es la metrica propietaria de Moz, puntuada en una escala logaritmica de 0 a 100. Predice la probabilidad de que un dominio posicione en los resultados de búsqueda basandose en la cantidad y calidad de su perfil de backlinks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteristicas clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La escala logaritmica significa que pasar de DA 20 a 30 es mucho más fácil que pasar de 70 a 80.&lt;/li&gt;
&lt;li&gt;Se actualiza regularmente cuando Moz rastrea la web y recalcula las puntuaciones.&lt;/li&gt;
&lt;li&gt;Esta influenciada por el número de dominios raiz que enlazan, la autoridad de esos dominios y la composicion general del perfil de enlaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DA no es una metrica de Google. Google ha declarado explicitamente que no usa el Domain Authority de Moz.&lt;/li&gt;
&lt;li&gt;El DA puede inflarse artificialmente mediante manipulación de enlaces.&lt;/li&gt;
&lt;li&gt;Un DA alto no garantiza capacidad de posicionamiento. Un sitio con DA 90 puede no posicionar para consultas fuera de su experiencia temática.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;domain-rating-dr-de-ahrefs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#domain-rating-dr-de-ahrefs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Domain Rating (DR) de Ahrefs&lt;/h3&gt;
&lt;p&gt;Domain Rating es la metrica equivalente de Ahrefs, también puntuada de 0 a 100. Evalua la fuerza del perfil de backlinks de un dominio basandose en la cantidad y calidad de los sitios que le enlazan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caracteristicas clave:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se centra específicamente en la fuerza del perfil de backlinks.&lt;/li&gt;
&lt;li&gt;Se calcula basandose en dominios referentes únicos y sus respectivos DR.&lt;/li&gt;
&lt;li&gt;Se actualiza a medida que Ahrefs descubre nuevos enlaces y dominios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Limitaciones:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Como el DA, el DR es una estimacion de terceros, no una señal de Google.&lt;/li&gt;
&lt;li&gt;El DR puede ser alto para sitios con muchos enlaces de unos pocos dominios muy potentes, incluso si el recuento total de enlaces es bajo.&lt;/li&gt;
&lt;li&gt;El DR no tiene en cuenta la relevancia temática. Un blog de moda con DR 70 y una publicación tecnológica con DR 70 tienen la misma puntuacion a pesar de un valor tematico vastamente diferente para un sitio web tecnológico.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;trust-flow-y-citation-flow-de-majestic&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#trust-flow-y-citation-flow-de-majestic&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Trust Flow y Citation Flow de Majestic&lt;/h3&gt;
&lt;p&gt;Majestic ofrece dos metricas complementarias:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trust Flow (TF):&lt;/strong&gt; Mide la calidad de los enlaces que apuntan a un sitio. Basandose en un conjunto semilla de sitios de confianza (universidades importantes, sitios gubernamentales, publicaciónes establecidas), el TF puntua lo estrechamente que el perfil de enlaces de un dominio se conecta a estas fuentes de confianza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Citation Flow (CF):&lt;/strong&gt; Mide la cantidad de enlaces que apuntan a un sitio, independientemente de la calidad. Un CF alto con TF bajo sugiere que el sitio tiene muchos enlaces pero de fuentes de baja calidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La ratio TF/CF&lt;/strong&gt; es reveladora. Un sitio con TF 30/CF 35 tiene un equilibrio saludable. Un sitio con TF 10/CF 60 probablemente tiene un perfil de enlaces manipulado, con muchos enlaces de baja calidad inflando su recuento.&lt;/p&gt;
&lt;h3 id=&quot;como-usar-las-metricas-de-autoridad-correctamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-usar-las-metricas-de-autoridad-correctamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como usar las metricas de autoridad correctamente&lt;/h3&gt;
&lt;p&gt;Las metricas de autoridad son utiles como &lt;strong&gt;herramientas de comparación relativa&lt;/strong&gt;, no como indicadores absolutos de calidad. El enfoque correcto es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Compara dentro de tu nicho.&lt;/strong&gt; Un DR 25 en un nicho especializado de desarrollo WordPress es respetable. Un DR 25 en el espacio general de noticias es insignificante. El contexto importa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Observa tendencias, no fotos fijas.&lt;/strong&gt; Un sitio cuyo DR ha crecido de 20 a 40 en dos años probablemente esta construyendo autoridad legitima. Un sitio que salto de 15 a 55 en tres meses probablemente compro enlaces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cruza metricas.&lt;/strong&gt; Si un sitio tiene DR 60 (Ahrefs) pero TF 8 (Majestic), el DR alto probablemente esta impulsado por cantidad en lugar de calidad. Triangula usando multiples herramientas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Complementa con datos de tráfico.&lt;/strong&gt; Un sitio con DR 40 y 50.000 visitantes organicos mensuales es más valioso que un sitio con DR 50 y 200 visitantes mensuales. El tráfico indica que Google realmente confia en el sitio y lo posiciona.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;relevancia-temática-el-factor-de-calidad-más-importante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#relevancia-temática-el-factor-de-calidad-más-importante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Relevancia temática: el factor de calidad más importante&lt;/h2&gt;
&lt;h3 id=&quot;por-que-la-relevancia-supera-a-la-autoridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-la-relevancia-supera-a-la-autoridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que la relevancia supera a la autoridad&lt;/h3&gt;
&lt;p&gt;La comprension de Google de las relaciones temáticas ha avanzado dramaticamente a través de tecnologías como BERT, MUM y sus sucesores. En 2026, Google no solo ve un enlace como “el Sitio A apunta al Sitio B”. Entiende el contexto semántico: de que trata el Sitio A, que discute la página que enlaza y si el enlace tiene sentido contextual.&lt;/p&gt;
&lt;p&gt;Un enlace desde un blog de desarrollo WordPress (DR 30) a una guía de seguridad WordPress transmite señales temáticas fuertes. El sitio que enlaza cubre temas relacionados, el contenido de la página que enlaza es contextualmente relevante y la conexión entre ambos sitios tiene sentido semántico.&lt;/p&gt;
&lt;p&gt;Un enlace desde un sitio de cotilleos de famosos (DR 70) a esa misma guía de seguridad WordPress transmite un valor tematico minimo. A pesar de la mayor autoridad, la desconexión temática significa que Google asigna menos peso a este enlace para posicionamientos relacionados con WordPress.&lt;/p&gt;
&lt;h3 id=&quot;evaluar-la-relevancia-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evaluar-la-relevancia-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evaluar la relevancia temática&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Relevancia a nivel de sitio.&lt;/strong&gt; El sitio que enlaza cubre temas relacionados con tu nicho? Revisa la taxonomía de categorías del sitio, los artículos recientes y el enfoque editorial declarado. Un sitio que pública principalmente sobre desarrollo web es relevante para una agencia WordPress. Un sitio que pública sobre todo es menos relevante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Relevancia a nivel de página.&lt;/strong&gt; Incluso en un sitio relevante, la página específica que enlaza importa. Un enlace desde un post sobre “Mejores plugins de seguridad WordPress” es más relevante para una página de seguridad WordPress que un enlace desde la página “Sobre nosotros” del mismo sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Relevancia contextual.&lt;/strong&gt; Donde aparece el enlace dentro del contenido importa. Un enlace incrustado naturalmente dentro de un parrafo que discute tu tema específico tiene más peso que un enlace en un blogroll, barra lateral o lista generica de recursos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Superposicion de audiencia.&lt;/strong&gt; El sitio ideal que te enlaza tiene una audiencia que se superpone con tu audiencia objetivo. Si los lectores del sitio podrian convertirse en tus clientes o consumidores de contenido, el enlace tiene valor tanto de SEO como de tráfico de referencia.&lt;/p&gt;
&lt;h3 id=&quot;construir-una-puntuacion-de-relevancia-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construir-una-puntuacion-de-relevancia-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construir una puntuacion de relevancia temática&lt;/h3&gt;
&lt;p&gt;Crea un sistema de puntuacion simple para tu auditoria de backlinks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Puntuacion 3 (Altamente relevante):&lt;/strong&gt; El sitio que enlaza opera en tu nicho exacto. La página que enlaza discute un tema directamente relacionado con tu contenido. El enlace esta contextualmente incrustado en contenido relevante.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puntuacion 2 (Parcialmente relevante):&lt;/strong&gt; El sitio que enlaza cubre temas adyacentes. La página tiene superposicion temática parcial. La conexión es lógica pero no directa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puntuacion 1 (Baja relevancia):&lt;/strong&gt; El sitio que enlaza es una publicación general. La página tiene conexión temática minima. El enlace existe por razones distintas al valor tematico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puntuacion 0 (Irrelevante):&lt;/strong&gt; El sitio que enlaza no tiene conexión con tu nicho. El enlace parece comprado, spam o coincidental.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apunta a que el 60% o más de tu perfil de backlinks puntue 2 o 3 en esta escala.&lt;/p&gt;
&lt;h2 id=&quot;análisis-de-anchor-text-patrones-que-ayudan-y-perjudican&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-de-anchor-text-patrones-que-ayudan-y-perjudican&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis de anchor text: patrones que ayudan y perjudican&lt;/h2&gt;
&lt;h3 id=&quot;entender-las-señales-del-anchor-text&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#entender-las-señales-del-anchor-text&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Entender las señales del anchor text&lt;/h3&gt;
&lt;p&gt;El anchor text (el texto clicable de un hiperenlace) proporciona a Google contexto sobre de que trata la página enlazada. El anchor text sobre-optimizado fue el objetivo principal de la actualización Penguin original, y sigue siendo una de las señales de penalizacion algoritmica más fuertes en 2026.&lt;/p&gt;
&lt;h3 id=&quot;el-perfil-saludable-de-anchor-text&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-perfil-saludable-de-anchor-text&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El perfil saludable de anchor text&lt;/h3&gt;
&lt;p&gt;Un perfil de backlinks natural tiene anchor text diverso que refleja como las personas reales enlazarian a tu contenido:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anchors de marca (aproximadamente 40-50%):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tu nombre de marca: “WPPoland”&lt;/li&gt;
&lt;li&gt;Variaciones de marca: “WPPoland.com”, “agencia WP Poland”&lt;/li&gt;
&lt;li&gt;Estos dominan los perfiles naturales porque la mayoria de personas referencian la fuente por su nombre.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Anchors de URL (aproximadamente 15-20%):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;URL completa: “&lt;a href=&quot;https://wppoland.com/es/link-building-strategies/&quot;&gt;https://wppoland.com/es/link-building-strategies/&lt;/a&gt;”&lt;/li&gt;
&lt;li&gt;URL parcial: “wppoland.com”&lt;/li&gt;
&lt;li&gt;Las URLs desnudas son comunes en la construccion natural de enlaces, especialmente en foros y comentarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Anchors genericos (aproximadamente 15-20%):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Haz clic aqui”, “Mas información”, “Lee la guía completa”&lt;/li&gt;
&lt;li&gt;“Este artículo”, “Fuente”, “Aqui”&lt;/li&gt;
&lt;li&gt;Anchors de lenguaje natural que no contienen palabras clave.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Anchors semánticos/coincidencia parcial (aproximadamente 5-10%):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frases relacionadas: “guía de desarrollo WordPress”, “consejos de link building”&lt;/li&gt;
&lt;li&gt;Coincidencias parciales de palabras clave: “estrategias para construir enlaces”&lt;/li&gt;
&lt;li&gt;Variaciones naturales de tus palabras clave objetivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Anchors de coincidencia exacta (menos del 5%):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tu palabra clave objetivo exacta: “estrategias de link building”&lt;/li&gt;
&lt;li&gt;Deberia ser el segmento más pequeño. Si la coincidencia exacta supera el 10%, estas en territorio peligroso.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;señales-de-alarma-en-el-análisis-de-anchor-text&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-alarma-en-el-análisis-de-anchor-text&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de alarma en el análisis de anchor text&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Dominancia de coincidencia exacta.&lt;/strong&gt; Si cualquier frase de palabra clave individual representa más del 5% de tu anchor text total, investiga. Los perfiles naturales raramente se concentran en una sola frase.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anchors de palabras clave no naturales.&lt;/strong&gt; Anchors con intencion comercial como “comprar hosting WordPress barato” o “mejor agencia SEO precios” apareciendo en contextos editoriales senalan enlaces comprados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cambios subitos en el anchor text.&lt;/strong&gt; Si tu perfil de anchor text cambia de repente (por ejemplo, un pico en anchors de coincidencia exacta despues de lanzar una campana de link building), senala manipulación ante la deteccion de patrones de Google.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anomalias de idioma extranjero.&lt;/strong&gt; Enlaces con anchors en idiomas no relacionados con tu contenido o audiencia (por ejemplo, anchors en chino o arabe apuntando a un sitio WordPress en español) tipicamente indican spam.&lt;/p&gt;
&lt;h3 id=&quot;estrategia-de-optimización-de-anchor-text&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-optimización-de-anchor-text&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de optimización de anchor text&lt;/h3&gt;
&lt;p&gt;No puedes controlar directamente como otros sitios anclan sus enlaces hacia ti. Pero puedes influir en el patron:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Guest posts y contenido contribuido:&lt;/strong&gt; Usa anchors de marca en las biografias de autor. Usa anchors naturales y variados en el contenido del cuerpo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Digital PR:&lt;/strong&gt; Los periodistas tipicamente usan anchors de marca o frases descriptivas de forma natural.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listados en directorios:&lt;/strong&gt; Estos generan naturalmente anchors de marca y URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlazado interno:&lt;/strong&gt; Usa tus enlaces internos (que controlas completamente) para reforzar las asociaciones de palabras clave, reduciendo la presion de construir anchors de coincidencia exacta externos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;identificacion-de-enlaces-toxicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#identificacion-de-enlaces-toxicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Identificacion de enlaces toxicos&lt;/h2&gt;
&lt;h3 id=&quot;que-hace-que-un-enlace-sea-verdaderamente-toxico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-hace-que-un-enlace-sea-verdaderamente-toxico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que hace que un enlace sea verdaderamente toxico&lt;/h3&gt;
&lt;p&gt;El termino “enlace toxico” esta sobreusado y frecuentemente mal entendido. No todos los enlaces de baja calidad son toxicos. En 2026, el algoritmo Penguin de Google (ahora integrado en el algoritmo principal) generalmente ignora los enlaces de baja calidad en lugar de penalizar por ellos.&lt;/p&gt;
&lt;p&gt;Un enlace verdaderamente toxico cumple uno o más de estos criterios:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces de esquemás de enlaces conocidos.&lt;/strong&gt; Si pagaste por enlaces a través de una red de brokers, participaste en intercambios de enlaces o usaste una red de blogs privados (PBN), esos enlaces son genuinamente problematicos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces de sitios con acciones manuales.&lt;/strong&gt; Si el sitio que enlaza ha recibido una accion manual de Google por spam de enlaces, los enlaces desde ese sitio pueden ser escrutados más intensamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces de sitios hackeados.&lt;/strong&gt; Enlaces inyectados a través de compromisos de seguridad en sitios por lo demás legitimos son señales de spam.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces de páginas doorway.&lt;/strong&gt; Páginas creadas únicamente para posicionar por palabras clave específicas y redirigir usuarios son spam.&lt;/p&gt;
&lt;h3 id=&quot;que-no-es-toxico-a-pesar-de-lo-que-digan-las-herramientas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-no-es-toxico-a-pesar-de-lo-que-digan-las-herramientas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que NO es toxico (a pesar de lo que digan las herramientas)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Comentarios spam aleatorios o enlaces de foros.&lt;/strong&gt; Google ha estado ignorando estos durante años. Son de bajo valor, no toxicos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces de sitios con bajo DA/DR.&lt;/strong&gt; Un blog pequeño con DA 5 que enlaza a tu contenido no es danino. Es simplemente un enlace de baja autoridad. Google no te penaliza por la decision de otra persona de enlazarte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces de sitios no relacionados.&lt;/strong&gt; Un enlace aleatorio desde un blog de cocina a tu sitio WordPress no es toxico. Es simplemente irrelevante. Google descuenta su valor tematico pero no penaliza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces antiguos de contenido desactualizado.&lt;/strong&gt; Los enlaces heredados de artículos publicados hace años no son toxicos simplemente porque el contenido este ahora desactualizado.&lt;/p&gt;
&lt;h3 id=&quot;proceso-de-identificacion-de-enlaces-toxicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-identificacion-de-enlaces-toxicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de identificacion de enlaces toxicos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Exporta tu perfil completo de backlinks&lt;/strong&gt; de Ahrefs o SEMrush.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filtra por patrones sospechosos:&lt;/strong&gt; picos subitos en adquisicion de enlaces, clusters de enlaces del mismo rango de IP, enlaces de sitios en idiomas no relacionados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisa manualmente los enlaces marcados.&lt;/strong&gt; Visita las páginas que enlazan reales. Son sitios reales con contenido real y audiencias reales? O son sitios delgados, basados en plantillas, que existen únicamente para colocacion de enlaces?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cruza con bases de datos de spam conocidas.&lt;/strong&gt; Herramientas como la Auditoria de Backlinks de SEMrush y Link Intersect de Ahrefs pueden ayudar a identificar patrones asociados con redes de enlaces conocidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisa tu Google Search Console&lt;/strong&gt; buscando notificaciones de acciones manuales. Este es el único indicador definitivo de que Google considera problematico tu perfil de enlaces.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;la-herramienta-de-disavow-cuando-y-como-usarla&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-herramienta-de-disavow-cuando-y-como-usarla&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La herramienta de disavow: cuando y como usarla&lt;/h2&gt;
&lt;h3 id=&quot;cuando-hacer-disavow&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-hacer-disavow&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando hacer disavow&lt;/h3&gt;
&lt;p&gt;La herramienta de disavow debe usarse con moderación. John Mueller de Google ha declarado repetidamente que la mayoria de sitios nunca necesitan usarla. Usa la herramienta de disavow solo en estas situaciones específicas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Escenario 1: Tienes una accion manual.&lt;/strong&gt; Si Google Search Console muestra una accion manual por “enlaces no naturales que apuntan a tu sitio”, necesitas hacer disavow de los enlaces problematicos como parte de tu solicitud de reconsideracion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Escenario 2: Participaste en esquemás de enlaces.&lt;/strong&gt; Si previamente compraste enlaces, usaste PBNs o participaste en intercambios de enlaces, deberias hacer disavow de esos enlaces específicos. Sabes cuales son porque los creaste o pagaste por ellos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Escenario 3: Eres objetivo de una campana de SEO negativo.&lt;/strong&gt; En casos raros, competidores pueden construir grandes volumenes de enlaces spam hacia tu sitio. Si puedes documentar esto y ves una caida correspondiente en posiciones, el disavow puede ayudar. Sin embargo, Google es generalmente efectivo ignorando estos ataques sin intervencion.&lt;/p&gt;
&lt;h3 id=&quot;cuando-no-hacer-disavow&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuando-no-hacer-disavow&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuando NO hacer disavow&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;No hagas disavow de enlaces solo porque tienen bajo DA/DR.&lt;/strong&gt; No eres penalizado por recibir enlaces de sitios pequeños.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No hagas disavow de enlaces porque una herramienta los marco como “toxicos”.&lt;/strong&gt; Las puntuaciones de toxicidad de terceros son estimaciones, no la evaluación real de Google.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No hagas disavow de todos los enlaces de un dominio porque un enlace sea malo.&lt;/strong&gt; Usa disavow a nivel de URL cuando sea posible; disavow a nivel de dominio solo cuando el sitio completo sea spam.&lt;/p&gt;
&lt;h3 id=&quot;como-crear-un-archivo-de-disavow&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-crear-un-archivo-de-disavow&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como crear un archivo de disavow&lt;/h3&gt;
&lt;p&gt;El archivo de disavow es un archivo de texto plano que se envia a través de Google Search Console:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Archivo de disavow para ejemplo.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Enlaces de red de enlaces pagados conocida&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;https://sitespam1.com/artículo-con-enlace-pagado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;https://sitespam2.com/guest-post-placement&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Disavow a nivel de dominio para red de spam completa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domain:granjadeenlaces.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domain:redpbn.net&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Proceso de envio:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crea el archivo de disavow con URLs o dominios específicos.&lt;/li&gt;
&lt;li&gt;Ve a la herramienta Disavow Links de Google (search.google.com/search-console/disavow).&lt;/li&gt;
&lt;li&gt;Selecciona tu propiedad.&lt;/li&gt;
&lt;li&gt;Sube el archivo.&lt;/li&gt;
&lt;li&gt;Espera 2 a 4 semanas para que Google procese el disavow.&lt;/li&gt;
&lt;li&gt;Si se combina con una solicitud de reconsideracion, envia la solicitud despues de subir el archivo de disavow.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;framework-de-auditoria-del-perfil-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#framework-de-auditoria-del-perfil-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Framework de auditoria del perfil de enlaces&lt;/h2&gt;
&lt;h3 id=&quot;checklist-de-auditoria-trimestral&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#checklist-de-auditoria-trimestral&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Checklist de auditoria trimestral&lt;/h3&gt;
&lt;p&gt;Realiza esta auditoria cada trimestre para mantener un perfil de enlaces saludable:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Análisis de nuevos dominios referentes.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cuantos nuevos dominios referentes se adquirieron este trimestre?&lt;/li&gt;
&lt;li&gt;Cual es la distribucion de relevancia temática (Puntuacion 3/2/1/0)?&lt;/li&gt;
&lt;li&gt;Hay algun patron sospechoso en el timing de adquisicion o tipo de fuente?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Revision de la distribucion de anchor text.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calcula los porcentajes actuales de anchor text.&lt;/li&gt;
&lt;li&gt;Compara contra el benchmark 70/20/10 (marca/generico/palabra clave).&lt;/li&gt;
&lt;li&gt;Marca cualquier frase que supere el 5% del total.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Recuperacion de enlaces perdidos.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica enlaces perdidos durante el trimestre.&lt;/li&gt;
&lt;li&gt;Determina por que (contenido eliminado, sitio fuera de linea, enlace editado).&lt;/li&gt;
&lt;li&gt;Contacta para reclamar enlaces valiosos perdidos donde sea posible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Comparación con competidores.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extrae perfiles de backlinks de los 3 principales competidores.&lt;/li&gt;
&lt;li&gt;Identifica dominios referentes que ellos tienen y tu no.&lt;/li&gt;
&lt;li&gt;Encuentra oportunidades de enlaces del análisis de gaps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. Verificación de enlaces toxicos.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Revisa cualquier nuevo enlace potencialmente problematico.&lt;/li&gt;
&lt;li&gt;Comprueba Google Search Console buscando acciones manuales.&lt;/li&gt;
&lt;li&gt;Documenta cualquier enlace que necesite atención.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;señales-avanzadas-de-calidad-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-avanzadas-de-calidad-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales avanzadas de calidad de enlaces&lt;/h2&gt;
&lt;h3 id=&quot;contexto-y-ubicacion-del-enlace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-ubicacion-del-enlace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y ubicacion del enlace&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Los enlaces editoriales dentro del contenido del cuerpo&lt;/strong&gt; tienen el mayor peso. Un enlace naturalmente incrustado en un parrafo relevante, donde el texto circundante proporciona contexto de por que existe el enlace, envia la señal de calidad más fuerte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los enlaces above the fold&lt;/strong&gt; pueden tener ligeramente más peso que los enlaces enterrados al final de artículos largos, aunque este efecto es menor comparado con las señales de relevancia y autoridad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los enlaces en listas y secciones de recursos&lt;/strong&gt; tienen peso moderado. Son claramente editoriales (alguien eligio incluir tu enlace) pero carecen de la rica incrustacion contextual de los enlaces en el cuerpo del contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Los enlaces en footer, sidebar y navegación&lt;/strong&gt; tienen peso SEO minimo para propósitos de link building. Son enlaces de todo el sitio que Google ha devaluado porque no representan decisiones editoriales individuales.&lt;/p&gt;
&lt;h3 id=&quot;follow-vs-nofollow-vs-sponsored-vs-ugc&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#follow-vs-nofollow-vs-sponsored-vs-ugc&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Follow vs. nofollow vs. sponsored vs. UGC&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Enlaces follow&lt;/strong&gt; pasan equidad de enlace completa y son el objetivo principal de los esfuerzos de link building.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces nofollow&lt;/strong&gt; no pasan equidad de enlace por defecto, pero Google trata el atributo nofollow como una “sugerencia” en lugar de una directiva desde 2019. Los enlaces nofollow de alta autoridad (desde Wikipedia, publicaciónes importantes) pueden proporcionar valor indirecto a través de exposicion de marca y tráfico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces sponsored&lt;/strong&gt; (rel=“sponsored”) indican colocaciones pagadas. Google no pasa equidad de enlace a través de enlaces sponsored. Usar este atributo para enlaces pagados es el enfoque correcto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces UGC&lt;/strong&gt; (rel=“ugc”) indican contenido generado por usuarios como comentarios y posts de foros. Google generalmente descuenta estos para propósitos de posicionamiento.&lt;/p&gt;
&lt;h3 id=&quot;antiguedad-del-enlace-y-patrones-históricos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#antiguedad-del-enlace-y-patrones-históricos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Antiguedad del enlace y patrones históricos&lt;/h3&gt;
&lt;p&gt;Los enlaces más antiguos de sitios establecidos tienden a tener más peso que los enlaces nuevos. Un enlace que ha existido durante 5 años en una página mantenida consistentemente demuestra un respaldo editorial a largo plazo.&lt;/p&gt;
&lt;p&gt;Sin embargo, los enlaces nuevos proporcionan la señal de “frescura” que indica a Google que tu contenido esta siendo activamente descubierto y referenciado. Un perfil saludable tiene una mezcla de enlaces establecidos y nuevos.&lt;/p&gt;
&lt;h3 id=&quot;diversidad-de-dominios-referentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#diversidad-de-dominios-referentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Diversidad de dominios referentes&lt;/h3&gt;
&lt;p&gt;La diversidad de enlaces (el número de dominios referentes únicos) es más importante que el recuento bruto de backlinks. 100 enlaces de 100 dominios diferentes es dramaticamente más poderoso que 100 enlaces de 5 dominios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Benchmarks de diversidad:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monitoriza tu recuento de dominios referentes mensualmente.&lt;/li&gt;
&lt;li&gt;Compara tu tasa de crecimiento de dominios referentes contra competidores.&lt;/li&gt;
&lt;li&gt;Marca si algun dominio individual representa más del 10% de tus backlinks totales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;plan-de-accion-implementar-un-programa-de-evaluación-de-calidad-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-accion-implementar-un-programa-de-evaluación-de-calidad-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de accion: implementar un programa de evaluación de calidad de enlaces&lt;/h2&gt;
&lt;h3 id=&quot;mes-1-auditoria-de-linea-base&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-1-auditoria-de-linea-base&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 1: Auditoria de linea base&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Exporta datos completos de backlinks de Ahrefs o SEMrush.&lt;/li&gt;
&lt;li&gt;Calcula los porcentajes de distribucion de anchor text.&lt;/li&gt;
&lt;li&gt;Puntua todos los dominios referentes por relevancia temática (3/2/1/0).&lt;/li&gt;
&lt;li&gt;Identifica cualquier enlace que requiera consideracion de disavow.&lt;/li&gt;
&lt;li&gt;Documenta metricas de linea base: dominios referentes totales, DA/DR promedio, distribucion de puntuacion de relevancia.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mes-2-benchmarking-de-competidores&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-2-benchmarking-de-competidores&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 2: Benchmarking de competidores&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Extrae perfiles de backlinks de los 5 principales competidores en posiciones.&lt;/li&gt;
&lt;li&gt;Identifica el gap de dominios referentes (dominios que enlazan a competidores pero no a ti).&lt;/li&gt;
&lt;li&gt;Analiza los perfiles de anchor text de competidores para comparación.&lt;/li&gt;
&lt;li&gt;Identifica 20 oportunidades de enlaces de alta relevancia del análisis de gaps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mes-3-configuración-de-monitoreo-continuo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-3-configuración-de-monitoreo-continuo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 3: Configuración de monitoreo continuo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configura alertas semanales de nuevos backlinks en Ahrefs o SEMrush.&lt;/li&gt;
&lt;li&gt;Establece integración con Google Search Console para alertas en tiempo real de acciones manuales.&lt;/li&gt;
&lt;li&gt;Crea una plantilla de auditoria trimestral basada en el framework anterior.&lt;/li&gt;
&lt;li&gt;Establece KPIs: objetivo de crecimiento de dominios referentes, objetivo de mejora de puntuacion de relevancia, objetivos de distribucion de anchor text.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La evaluación de la calidad de backlinks en 2026 requiere ir más alla de metricas simples como DA y DR. Aunque estas herramientas son utiles para un filtrado inicial, el verdadero valor de un backlink reside en su relevancia temática, ubicacion contextual, naturalidad del anchor text y la intencion editorial genuina detras de el.&lt;/p&gt;
&lt;p&gt;Centrate en construir un perfil de enlaces que refleje como funciona la adquisicion natural de enlaces: fuentes diversas, anchor text de marca, sitios temáticamente relevantes y respaldo editorial genuino. Cuando tengas dudas sobre si un enlace es danino, recuerda que el algoritmo de Google en 2026 es lo suficientemente sofisticado como para ignorar enlaces de baja calidad sin penalizar tu sitio por ellos.&lt;/p&gt;
&lt;p&gt;La herramienta de disavow es tu freno de emergencia, no tu herramienta diaria. Usala solo cuando tengas evidencia clara de un problema: una notificación de accion manual o enlaces de esquemás en los que participaste conscientemente. Para todo lo demas, concentra tu energia en adquirir más enlaces de alta calidad y relevantes en lugar de preocuparte por los que no puedes controlar.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y de visibilidad&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">backlinki</category><category domain="tag">seo</category><category domain="tag">jakosc-linkow</category><category domain="tag">disavow</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Directorios de empresas y SEO local 2026: guía completa de citaciones, GBP y listados de nicho</title><link>https://wppoland.com/es/directory-submission-strategy-seo/</link><guid isPermaLink="true">https://wppoland.com/es/directory-submission-strategy-seo/</guid><description>Domina el envio a directorios de empresas para SEO local en 2026. Cubre la optimización de Google Business Profile, Yelp, Clutch, DesignRush, directorios de nicho, consistencia de citaciones, precision NAP y estrategias de posicionamiento local.</description><pubDate>Thu, 15 Oct 2009 10:59:09 GMT</pubDate><content:encoded>&lt;h2 id=&quot;directorios-de-empresas-y-seo-local-lo-que-realmente-importa-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#directorios-de-empresas-y-seo-local-lo-que-realmente-importa-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Directorios de empresas y SEO local: lo que realmente importa en 2026&lt;/h2&gt;
&lt;p&gt;El envio a directorios fue una vez la columna vertebral del SEO. En los primeros dias de la búsqueda, aparecer en DMOZ, Yahoo Directory y docenas de directorios web era una estrategia principal de link building. Esos directorios ya no existen. La estrategia ha evolucionado.&lt;/p&gt;
&lt;p&gt;En 2026, los envios a directorios de empresas sirven un propósito fundamentalmente diferente al de hace una decada. No se trata principalmente de backlinks. Se trata de &lt;strong&gt;señales de posicionamiento local, verificación de entidades, consistencia de citaciones y visibilidad de marca&lt;/strong&gt; en los lugares donde tus clientes potenciales realmente buscan.&lt;/p&gt;
&lt;p&gt;Google Business Profile por si solo influye en las posiciones del local pack más que cualquier otro factor individual. Los directorios de nicho como Clutch, DesignRush y G2 sirven como señales de confianza para industrias específicas. Y los datos NAP (Nombre, Dirección, Telefono) consistentes a través de directorios ayudan a Google a verificar tu entidad comercial con confianza.&lt;/p&gt;
&lt;p&gt;Esta guía cubre cada aspecto de la estrategia de directorios de empresas para SEO local en 2026, desde la optimización de Google Business Profile hasta la seleccion de directorios de nicho y la gestión de citaciones.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;google-business-profile-la-base-del-seo-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-business-profile-la-base-del-seo-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Business Profile: la base del SEO local&lt;/h2&gt;
&lt;h3 id=&quot;por-que-gbp-es-innegociable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-gbp-es-innegociable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que GBP es innegociable&lt;/h3&gt;
&lt;p&gt;Google Business Profile (anteriormente Google My Business) es el listado de directorio más importante para cualquier negocio con un componente local. Alimenta directamente el local pack - los resultados del mapa que aparecen en la parte superior de las consultas de búsqueda locales.&lt;/p&gt;
&lt;p&gt;Segun la investigación de la industria, las señales de GBP representan aproximadamente el 32% de los factores de posicionamiento del local pack. Ningun otro directorio se acerca.&lt;/p&gt;
&lt;h3 id=&quot;lista-de-verificación-completa-de-optimización-de-gbp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-completa-de-optimización-de-gbp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación completa de optimización de GBP&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Precision de la información comercial:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifica que tu nombre comercial coincida exactamente con tu nombre legal y senalizacion.&lt;/li&gt;
&lt;li&gt;Usa tu dirección real (no un apartado postal a menos que seas un negocio de area de servicio).&lt;/li&gt;
&lt;li&gt;Lista tu número de telefono principal - un número local, no un número de seguimiento gratuito.&lt;/li&gt;
&lt;li&gt;Establece horarios comerciales precisos, incluyendo horarios especiales para festivos.&lt;/li&gt;
&lt;li&gt;Escribe una descripción comercial completa usando palabras clave relevantes de forma natural.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optimización de categorías:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Selecciona la categoría principal más específica disponible. “Agencia de desarrollo WordPress” es mejor que “Desarrollador web.”&lt;/li&gt;
&lt;li&gt;Agrega hasta 9 categorías secundarias que describan con precision tus servicios.&lt;/li&gt;
&lt;li&gt;Revisa las categorías trimestralmente - Google agrega nuevas categorías regularmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contenido visual:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sube un logotipo profesional y una foto de portada.&lt;/li&gt;
&lt;li&gt;Agrega al menos 10 fotos de alta calidad de tu oficina, equipo y trabajo.&lt;/li&gt;
&lt;li&gt;Incluye un recorrido virtual si aplica.&lt;/li&gt;
&lt;li&gt;Sube videos cortos (menos de 30 segundos) mostrando tus servicios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Gestión activa:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pública actualizaciones semanales usando las Publicaciones de GBP (eventos, ofertas, actualizaciones, productos).&lt;/li&gt;
&lt;li&gt;Responde a cada pregunta en la sección de Preguntas y Respuestas de forma rápida y exhaustiva.&lt;/li&gt;
&lt;li&gt;Responde a cada resena - positiva y negativa - dentro de 24 horas.&lt;/li&gt;
&lt;li&gt;Agrega productos y servicios con descripciones y precios cuando aplique.&lt;/li&gt;
&lt;li&gt;Activa la mensajeria si puedes responder rápidamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-de-publicaciónes-en-gbp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-publicaciónes-en-gbp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de publicaciónes en GBP&lt;/h3&gt;
&lt;p&gt;Las publicaciónes de GBP aparecen directamente en tu Panel de Conocimiento y en los resultados de búsqueda local. Senalizan a Google que tu negocio esta activo y comprometido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de publicaciónes efectivas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Publicaciones de actualización:&lt;/strong&gt; Comparte noticias, consejos o perspectivas relacionadas con tu industria. Incluye palabras clave relevantes de forma natural.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicaciones de oferta:&lt;/strong&gt; Promociona ofertas especiales con fechas de vencimiento para crear urgencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicaciones de evento:&lt;/strong&gt; Anuncia eventos proximos, webinars o talleres con fechas y enlaces de registro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicaciones de producto:&lt;/strong&gt; Muestra productos o servicios específicos con imágenes y descripciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pública de forma consistente - al menos una vez por semana. Cada publicación permanece visible durante 7 dias, por lo que publicar semanalmente asegura presencia continua.&lt;/p&gt;
&lt;h2 id=&quot;comprender-las-citaciones-y-la-consistencia-nap&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprender-las-citaciones-y-la-consistencia-nap&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprender las citaciones y la consistencia NAP&lt;/h2&gt;
&lt;h3 id=&quot;que-son-las-citaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-son-las-citaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que son las citaciones&lt;/h3&gt;
&lt;p&gt;Una citacion es cualquier mencion en linea del Nombre, Dirección y Telefono (NAP) de tu negocio. Las citaciones pueden ser estructuradas (en listados formales de directorios) o no estructuradas (menciones en publicaciónes de blog, artículos de noticias o redes sociales).&lt;/p&gt;
&lt;p&gt;Google usa las citaciones para verificar que tu negocio existe, que esta ubicado donde dice estar y que su información de contacto es precisa. Cuanto más consistentes son tus citaciones en la web, más confianza tiene Google en tu entidad comercial.&lt;/p&gt;
&lt;h3 id=&quot;por-que-importa-la-consistencia-nap&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-importa-la-consistencia-nap&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que importa la consistencia NAP&lt;/h3&gt;
&lt;p&gt;La inconsistencia NAP es uno de los errores de SEO local más comunes - y más daninos. Considera estos escenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tu GBP lista “Calle Principal 123, Suite 200” pero Yelp muestra “C/ Principal 123 #200.”&lt;/li&gt;
&lt;li&gt;El pie de página de tu sitio web dice “WP Poland” pero tu GBP dice “WPPoland.com.”&lt;/li&gt;
&lt;li&gt;Tu página de Facebook tiene un número de telefono antiguo que cambiaste hace dos años.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada inconsistencia reduce la confianza de Google en tu entidad comercial. Cuando Google no puede verificar tu información con confianza, es menos probable que muestre tu negocio de forma prominente en los resultados locales.&lt;/p&gt;
&lt;h3 id=&quot;establecer-un-estándar-nap&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#establecer-un-estándar-nap&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Establecer un estándar NAP&lt;/h3&gt;
&lt;p&gt;Crea un documento NAP canonico que defina exactamente como debe aparecer la información de tu negocio en todas partes:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Nombre comercial: WPPoland&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Direccion: Calle Principal 123, Suite 200, Viena, Austria 1010&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Telefono: +43 123 456 789&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sitio web: https://wppoland.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Usa este formato exacto - las mismás abreviaturas, espaciado, puntuacion - en cada directorio, pie de página de tu sitio web, perfiles sociales y cualquier mencion que controles.&lt;/p&gt;
&lt;h3 id=&quot;proceso-de-auditoria-de-citaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-auditoria-de-citaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de auditoria de citaciones&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Escanear citaciones existentes.&lt;/strong&gt; Usa BrightLocal, Moz Local o Whitespark para encontrar donde se menciona tu negocio en linea.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identificar inconsistencias.&lt;/strong&gt; Compara cada citacion con tu NAP canonico. Marca cualquier discrepancia en nombre, dirección, telefono o URL del sitio web.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Corregir inexactitudes.&lt;/strong&gt; Contacta cada directorio para actualizar la información incorrecta. Para muchas plataformas, puedes reclamar y editar tu listado directamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminar duplicados.&lt;/strong&gt; Los listados duplicados en el mismo directorio confunden a Google. Fusiona o elimina los extras.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorear continuamente.&lt;/strong&gt; Configura auditorias de citaciones trimestrales para detectar nuevas inconsistencias cuando aparezcan.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;directorios-de-nivel-1-los-listados-esenciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#directorios-de-nivel-1-los-listados-esenciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Directorios de nivel 1: los listados esenciales&lt;/h2&gt;
&lt;h3 id=&quot;google-business-profile&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-business-profile&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Business Profile&lt;/h3&gt;
&lt;p&gt;Ya cubierto arriba. Esta es tu maxima prioridad.&lt;/p&gt;
&lt;h3 id=&quot;apple-maps-apple-business-connect&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#apple-maps-apple-business-connect&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Apple Maps (Apple Business Connect)&lt;/h3&gt;
&lt;p&gt;Apple Maps alimenta la búsqueda en cada iPhone, iPad, Mac y Apple Watch. Con la creciente cuota de mercado de Apple, la presencia en Apple Maps es esencial.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reclama tu listado a través de Apple Business Connect (business.apple.com).&lt;/li&gt;
&lt;li&gt;Asegurate de que la información coincida exactamente con tu listado de GBP.&lt;/li&gt;
&lt;li&gt;Sube fotos de alta calidad.&lt;/li&gt;
&lt;li&gt;Agrega horarios comerciales y categorías.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;bing-places-for-business&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bing-places-for-business&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bing Places for Business&lt;/h3&gt;
&lt;p&gt;Bing alimenta la búsqueda en Microsoft Edge, Cortana y muchos entornos empresariales. También alimenta datos a otros directorios y agregadores.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reclama tu listado en bingplaces.com.&lt;/li&gt;
&lt;li&gt;Importa desde GBP para consistencia, luego verifica todos los detalles.&lt;/li&gt;
&lt;li&gt;Bing Places soporta importacion masiva para negocios multi-ubicacion.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;yelp&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#yelp&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Yelp&lt;/h3&gt;
&lt;p&gt;Yelp sigue siendo uno de los directorios locales más autoritativos, especialmente para negocios orientados al consumidor. Los listados de Yelp frecuentemente se posicionan en los resultados de búsqueda de Google para consultas relacionadas con negocios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reclama tu listado y completa cada campo disponible.&lt;/li&gt;
&lt;li&gt;Sube fotos profesionales.&lt;/li&gt;
&lt;li&gt;Responde a cada resena - Yelp muestra de forma prominente las tasas de respuesta del negocio.&lt;/li&gt;
&lt;li&gt;No pidas a los clientes que te resenen en Yelp específicamente (el algoritmo de Yelp filtra las resenas que sospecha que fueron solicitadas).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;página-de-facebook-business&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#página-de-facebook-business&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Página de Facebook Business&lt;/h3&gt;
&lt;p&gt;Facebook sigue siendo uno de los directorios de negocios más grandes por volumen de usuarios. Tu página de Facebook alimenta datos de citacion a númerosos agregadores.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crea o reclama tu Página de Facebook Business.&lt;/li&gt;
&lt;li&gt;Completa todos los campos de información comercial.&lt;/li&gt;
&lt;li&gt;Haz coincidir el NAP exactamente con tu estándar canonico.&lt;/li&gt;
&lt;li&gt;Activa las resenas y responde a ellas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;directorios-de-nivel-2-plataformas-específicas-de-la-industria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#directorios-de-nivel-2-plataformas-específicas-de-la-industria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Directorios de nivel 2: plataformas específicas de la industria&lt;/h2&gt;
&lt;h3 id=&quot;para-agencias-digitales-y-empresas-de-ti&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-agencias-digitales-y-empresas-de-ti&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para agencias digitales y empresas de TI&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Clutch.co.&lt;/strong&gt; La plataforma dominante de resenas y calificaciones B2B para proveedores de servicios. Los listados de Clutch se posicionan bien en Google para consultas de “[tipo de servicio] + agencia”. Completa tu perfil exhaustivamente, incluyendo resenas de clientes verificados, portafolios de proyectos y descripciones detalladas de servicios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DesignRush.&lt;/strong&gt; Un marketplace B2B que conecta marcas con agencias. Los perfiles de DesignRush incluyen información detallada de la empresa, resenas de clientes y elementos de portafolio. Los rankings en DesignRush influyen en la visibilidad para búsquedas relacionadas con agencias.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;G2.&lt;/strong&gt; Principalmente para empresas de software, pero también lista proveedores de servicios. Las resenas de G2 tienen autoridad significativa en las decisiones de compra B2B.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GoodFirms.&lt;/strong&gt; Otro directorio B2B con fuerte visibilidad en búsquedas para consultas relacionadas con agencias.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sortlist.&lt;/strong&gt; Directorio de agencias enfocado en Europa con autoridad creciente.&lt;/p&gt;
&lt;h3 id=&quot;para-negocios-de-servicios-locales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-negocios-de-servicios-locales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para negocios de servicios locales&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Angi (anteriormente Angie’s List).&lt;/strong&gt; Esencial para servicios del hogar, contratistas y proveedores de servicios locales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Houzz.&lt;/strong&gt; El directorio principal para profesionales de remodelacion del hogar, diseño de interiores y arquitectura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HomeAdvisor.&lt;/strong&gt; Conectado con Angi, importante para servicios de mejora y reparacion del hogar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thumbtack.&lt;/strong&gt; Marketplace de servicios locales con visibilidad de búsqueda creciente.&lt;/p&gt;
&lt;h3 id=&quot;para-servicios-profesionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-servicios-profesionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para servicios profesionales&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Avvo.&lt;/strong&gt; El directorio dominante para abogados y profesionales legales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Healthgrades.&lt;/strong&gt; Esencial para proveedores de salud.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zocdoc.&lt;/strong&gt; Plataforma de citas medicas con funcionalidad de directorio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expertise.com.&lt;/strong&gt; Listas curadas de los mejores profesionales por ciudad y categoría.&lt;/p&gt;
&lt;h3 id=&quot;para-e-commerce-y-retail&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#para-e-commerce-y-retail&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Para e-commerce y retail&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Better Business Bureau (BBB).&lt;/strong&gt; La acreditacion senaliza confianza. Los listados de BBB se posicionan bien para búsquedas relacionadas con la marca.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TrustPilot.&lt;/strong&gt; La plataforma de resenas independiente dominante para negocios de e-commerce.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sitejabber.&lt;/strong&gt; Plataforma de resenas de consumidores con autoridad creciente.&lt;/p&gt;
&lt;h2 id=&quot;directorios-de-nivel-3-locales-y-regionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#directorios-de-nivel-3-locales-y-regionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Directorios de nivel 3: locales y regionales&lt;/h2&gt;
&lt;h3 id=&quot;camaras-de-comercio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#camaras-de-comercio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Camaras de comercio&lt;/h3&gt;
&lt;p&gt;Las membresias en camaras de comercio locales tipicamente incluyen un listado en el directorio del sitio web de la camara. Estas son citaciones locales de alta calidad de fuentes autoritativas y geograficamente relevantes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unete a tu camara de comercio local.&lt;/li&gt;
&lt;li&gt;Asegurate de que tu listado coincida con tu NAP canonico.&lt;/li&gt;
&lt;li&gt;Participa en eventos de la camara para visibilidad adicional y oportunidades de enlaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;directorios-de-ciudad-y-regionales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#directorios-de-ciudad-y-regionales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Directorios de ciudad y regionales&lt;/h3&gt;
&lt;p&gt;Muchas ciudades mantienen directorios de empresas. Busca “[tu ciudad] directorio de empresas” y envia a cualquier directorio legitimo y activamente mantenido que encuentres.&lt;/p&gt;
&lt;h3 id=&quot;directorios-de-asociaciones-industriales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#directorios-de-asociaciones-industriales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Directorios de asociaciones industriales&lt;/h3&gt;
&lt;p&gt;Las asociaciones profesionales de tu industria a menudo mantienen directorios de miembros. Estas citaciones de nicho refuerzan tanto la relevancia geografica como temática.&lt;/p&gt;
&lt;h2 id=&quot;estrategia-de-construccion-de-citaciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-construccion-de-citaciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de construccion de citaciones&lt;/h2&gt;
&lt;h3 id=&quot;orden-de-prioridad-para-negocios-nuevos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#orden-de-prioridad-para-negocios-nuevos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Orden de prioridad para negocios nuevos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Semana 1:&lt;/strong&gt; Reclama y optimiza Google Business Profile. Configura Apple Maps y Bing Places.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 2:&lt;/strong&gt; Crea listados en Yelp y Facebook. Envia a 2-3 agregadores de datos principales (Foursquare, Data Axle, Neustar Localeze).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semana 3-4:&lt;/strong&gt; Envia a los principales directorios de nicho relevantes para tu industria.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mes 2:&lt;/strong&gt; Envia a directorios locales - camara de comercio, directorios de la ciudad, asociaciones empresariales regionales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuo:&lt;/strong&gt; Agrega 2-3 nuevas citaciones de calidad por mes. Monitorea y corrige citaciones existentes trimestralmente.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;escribir-descripciones-únicas-para-directorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escribir-descripciones-únicas-para-directorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escribir descripciones únicas para directorios&lt;/h3&gt;
&lt;p&gt;Cada listado de directorio debe tener una descripción de negocio única. No copies y pegues la misma descripción en todos los directorios - esto no proporciona valor adicional y puede parecer spam.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Marco de descripción:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Oracion 1:&lt;/strong&gt; Que haces y a quien sirves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracion 2:&lt;/strong&gt; Que te diferencia (propuesta de valor única).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracion 3:&lt;/strong&gt; Credenciales, experiencia o logros clave.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracion 4:&lt;/strong&gt; Información de ubicacion y area de servicio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracion 5:&lt;/strong&gt; Llamada a la accion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ejemplo para una agencia WordPress:
“WPPoland es una agencia de desarrollo WordPress de servicio completo especializada en soluciones WooCommerce empresariales y desarrollo de plugins personalizados. Con más de 15 años de experiencia y más de 300 proyectos exitosos, entregamos sitios web de alto rendimiento que generan resultados de negocio medibles. Nuestro equipo esta certificado en WordPress, WooCommerce y optimización SEO avanzada. Con sede en Viena y clientes en toda Europa, servimos a empresas que exigen excelencia técnica y crecimiento digital estrategico. Contactanos para una consulta gratuita sobre tu proximo proyecto WordPress.”&lt;/p&gt;
&lt;h2 id=&quot;estrategia-de-gestión-de-resenas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-gestión-de-resenas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de gestión de resenas&lt;/h2&gt;
&lt;h3 id=&quot;por-que-las-resenas-son-un-factor-de-posicionamiento-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-las-resenas-son-un-factor-de-posicionamiento-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que las resenas son un factor de posicionamiento local&lt;/h3&gt;
&lt;p&gt;Las resenas son consistentemente identificadas como un factor de posicionamiento local top-3 en estudios de la industria. Google evalua señales de resenas incluyendo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cantidad:&lt;/strong&gt; Mas resenas indican un negocio más establecido y activo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calidad:&lt;/strong&gt; Calificaciones promedio más altas se correlacionan con mejor visibilidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recencia:&lt;/strong&gt; Las resenas recientes tienen más peso que las antiguas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velocidad:&lt;/strong&gt; La adquisicion consistente de resenas senaliza actividad comercial continua.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diversidad:&lt;/strong&gt; Las resenas a través de multiples plataformas (GBP, Yelp, Facebook, directorios de nicho) refuerzan las señales de citacion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Palabras clave en resenas:&lt;/strong&gt; Cuando los clientes mencionan naturalmente tus servicios o ubicacion en resenas, refuerza la relevancia para esos terminos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;generación-sistemática-de-resenas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generación-sistemática-de-resenas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Generación sistemática de resenas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Pide en el momento adecuado.&lt;/strong&gt; Solicita resenas inmediatamente despues de entregar un resultado positivo - finalizacion de proyecto, resolución de problema, entrega exitosa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hazlo fácil.&lt;/strong&gt; Proporciona un enlace directo a tu página de resenas de GBP. Acorta el enlace e incluyelo en emails de seguimiento, facturas y mensajes de agradecimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diversifica plataformas.&lt;/strong&gt; Aunque las resenas de GBP son las más importantes, también fomenta resenas en Clutch, G2 u otras plataformas relevantes de la industria. Alterna que plataforma sugieres para construir perfiles de resenas diversos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Responde a cada resena.&lt;/strong&gt; Resenas positivas: agradece al clientes y menciona detalles específicos sobre su proyecto. Resenas negativas: reconoce la preocupacion, explica cualquier accion correctiva y ofrece resolver el problema fuera de linea. Nunca discutas publicamente.&lt;/p&gt;
&lt;h3 id=&quot;manejo-de-resenas-negativas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-de-resenas-negativas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo de resenas negativas&lt;/h3&gt;
&lt;p&gt;Las resenas negativas no son inherentemente daninas para el SEO - de hecho, una calificación perfecta de 5.0 puede parecer sospechosa. Un promedio de 4.6-4.8 con algunas calificaciones más bajas parece más natural.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Marco de respuesta para resenas negativas:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agradece al resenador por sus comentarios.&lt;/li&gt;
&lt;li&gt;Reconoce su preocupacion específica.&lt;/li&gt;
&lt;li&gt;Explica que has hecho o haras para abordarla.&lt;/li&gt;
&lt;li&gt;Invitalo a contactarte directamente para la resolución.&lt;/li&gt;
&lt;li&gt;Mantiene la respuesta profesional - los clientes potenciales leen las respuestas a resenas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;citaciones-estructuradas-vs-no-estructuradas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#citaciones-estructuradas-vs-no-estructuradas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Citaciones estructuradas vs no estructuradas&lt;/h2&gt;
&lt;h3 id=&quot;citaciones-estructuradas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#citaciones-estructuradas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Citaciones estructuradas&lt;/h3&gt;
&lt;p&gt;Las citaciones estructuradas son listados formales de negocios en directorios con campos NAP definidos. Estos son los envios estándar a directorios cubiertos a lo largo de esta guía.&lt;/p&gt;
&lt;h3 id=&quot;citaciones-no-estructuradas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#citaciones-no-estructuradas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Citaciones no estructuradas&lt;/h3&gt;
&lt;p&gt;Las citaciones no estructuradas son menciones NAP en contenido que no es de directorio: publicaciónes de blog, artículos de noticias, notas de prensa, páginas de eventos, publicaciónes en redes sociales y discusiones en foros.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Construir citaciones no estructuradas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aparece mencionado en coberturas de noticias locales (PR digital).&lt;/li&gt;
&lt;li&gt;Participa en eventos de la industria que publiquen listas de asistentes o ponentes.&lt;/li&gt;
&lt;li&gt;Contribuye con comentarios de experto a artículos que incluyan tu información comercial.&lt;/li&gt;
&lt;li&gt;Patrocina eventos locales, organizaciónes beneficas u organizaciónes que listen patrocinadores en sus sitios web.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las citaciones no estructuradas tienen peso porque parecen más organicas y más dificiles de manipular que los envios a directorios.&lt;/p&gt;
&lt;h2 id=&quot;seo-local-más-alla-de-los-directorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#seo-local-más-alla-de-los-directorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SEO local más alla de los directorios&lt;/h2&gt;
&lt;h3 id=&quot;el-ecosistema-de-seo-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-ecosistema-de-seo-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El ecosistema de SEO local&lt;/h3&gt;
&lt;p&gt;Los directorios son un componente del SEO local. Una estrategia local completa incluye:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Optimización on-page:&lt;/strong&gt; Etiquetas de título, meta descripciones y contenido específicos de ubicacion. Marcado schema local (LocalBusiness, Organization). Páginas de ubicacion para negocios multi-ubicacion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google Business Profile:&lt;/strong&gt; Como se cubrio en detalle arriba.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resenas y reputacion:&lt;/strong&gt; Gestión activa de resenas a través de plataformas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Link building:&lt;/strong&gt; Backlinks locales de organizaciónes comunitarias, sitios de noticias locales, socios comerciales y asociaciones industriales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Marketing de contenidos:&lt;/strong&gt; Contenido de blog dirigido a palabras clave locales (“desarrollo WordPress en Viena,” “mejores agencias WooCommerce en Europa”).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEO técnico:&lt;/strong&gt; Compatibilidad móvil, Core Web Vitals, implementación de datos estructurados.&lt;/p&gt;
&lt;h3 id=&quot;medir-el-éxito-del-seo-local&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medir-el-éxito-del-seo-local&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medir el éxito del SEO local&lt;/h3&gt;
&lt;p&gt;Rastrea estas metricas para evaluar tu estrategia de directorios y SEO local:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Posiciones en el local pack&lt;/strong&gt; para palabras clave objetivo (rastreadas via BrightLocal o Whitespark).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estadísticas de GBP:&lt;/strong&gt; vistas, búsquedas, acciones (llamadas, visitas al sitio web, solicitudes de direcciones).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puntuacion de precision de citaciones&lt;/strong&gt; en todos los directorios (auditoria de BrightLocal).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cantidad, calidad y velocidad de resenas&lt;/strong&gt; a través de plataformas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico organico de consultas locales&lt;/strong&gt; en Google Analytics 4.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Llamadas telefonicas y envios de formularios&lt;/strong&gt; desde referencias de directorios.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;errores-comunes-en-el-envio-a-directorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-en-el-envio-a-directorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes en el envio a directorios&lt;/h2&gt;
&lt;h3 id=&quot;error-1-envio-masivo-a-directorios-de-baja-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-1-envio-masivo-a-directorios-de-baja-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 1: envio masivo a directorios de baja calidad&lt;/h3&gt;
&lt;p&gt;Enviar a cientos de directorios a través de herramientas automatizadas crea citaciones de baja calidad en sitios spam. Enfocate en 30-50 directorios de alta calidad en lugar de 500 irrelevantes.&lt;/p&gt;
&lt;h3 id=&quot;error-2-listados-duplicados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-2-listados-duplicados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 2: listados duplicados&lt;/h3&gt;
&lt;p&gt;Tener dos listados en el mismo directorio confunde a Google y diluye tu perfil de resenas. Audita duplicados regularmente y fusiona o elimina los extras.&lt;/p&gt;
&lt;h3 id=&quot;error-3-información-comercial-inconsistente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-3-información-comercial-inconsistente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 3: información comercial inconsistente&lt;/h3&gt;
&lt;p&gt;El error más danino. Incluso pequeñas variaciones - “C/” vs. “Calle,” falta de número de suite, número de telefono antiguo - erosionan la confianza de las citaciones.&lt;/p&gt;
&lt;h3 id=&quot;error-4-descuidar-los-perfiles-de-directorio-despues-de-la-creación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-4-descuidar-los-perfiles-de-directorio-despues-de-la-creación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 4: descuidar los perfiles de directorio despues de la creación&lt;/h3&gt;
&lt;p&gt;Los perfiles de directorio necesitan gestión continua. Actualiza fotos, responde a resenas, corrige cualquier información que cambie y mantiene las descripciones actualizadas.&lt;/p&gt;
&lt;h3 id=&quot;error-5-ignorar-directorios-de-nicho&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-5-ignorar-directorios-de-nicho&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 5: ignorar directorios de nicho&lt;/h3&gt;
&lt;p&gt;Los directorios generales (Yelp, Facebook) son necesarios pero no suficientes. Los directorios de nicho relevantes para tu industria llevan señales de autoridad temática que los directorios generales no pueden proporcionar.&lt;/p&gt;
&lt;h3 id=&quot;error-6-keyword-stuffing-en-nombres-comerciales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-6-keyword-stuffing-en-nombres-comerciales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 6: keyword stuffing en nombres comerciales&lt;/h3&gt;
&lt;p&gt;Algunos negocios agregan palabras clave a su nombre comercial en GBP (“WPPoland - Mejor agencia de desarrollo WordPress Viena”). Esto viola las directrices de Google y puede resultar en suspension. Usa solo tu nombre comercial real.&lt;/p&gt;
&lt;h2 id=&quot;plan-de-accion-implementación-de-la-estrategia-de-directorios&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-accion-implementación-de-la-estrategia-de-directorios&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de accion: implementación de la estrategia de directorios&lt;/h2&gt;
&lt;h3 id=&quot;semana-1-base&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#semana-1-base&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Semana 1: base&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Define el estándar NAP canonico.&lt;/li&gt;
&lt;li&gt;Reclama y optimiza completamente Google Business Profile.&lt;/li&gt;
&lt;li&gt;Configura Apple Maps y Bing Places.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;semana-2-directorios-principales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#semana-2-directorios-principales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Semana 2: directorios principales&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Crea o reclama el listado en Yelp.&lt;/li&gt;
&lt;li&gt;Crea o reclama la Página de Facebook Business.&lt;/li&gt;
&lt;li&gt;Envia a los agregadores de datos principales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;semana-3-4-directorios-de-nicho&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#semana-3-4-directorios-de-nicho&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Semana 3-4: directorios de nicho&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Identifica y envia a 5-10 directorios específicos de la industria.&lt;/li&gt;
&lt;li&gt;Solicita las primeras resenas de clientes en GBP y una plataforma de nicho.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mes-2-expansion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-2-expansion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 2: expansion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Envia a directorios locales (camara de comercio, directorios de la ciudad).&lt;/li&gt;
&lt;li&gt;Inicia un programa sistematico de generación de resenas.&lt;/li&gt;
&lt;li&gt;Realiza la primera auditoria de citaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;continuo-mensual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#continuo-mensual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Continuo (mensual)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Agrega 2-3 nuevas citaciones de calidad.&lt;/li&gt;
&lt;li&gt;Responde a todas las nuevas resenas dentro de 24 horas.&lt;/li&gt;
&lt;li&gt;Pública semanalmente en GBP.&lt;/li&gt;
&lt;li&gt;Auditoria trimestral de consistencia de citaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La estrategia de directorios de empresas en 2026 no se trata de cantidad - se trata de calidad, consistencia y relevancia. Un Google Business Profile bien optimizado combinado con citaciones precisas a través de 30-50 directorios estrategicamente elegidos proporciona la base para la visibilidad en búsquedas locales.&lt;/p&gt;
&lt;p&gt;Enfocate en la consistencia NAP por encima de todo lo demas. Elige directorios de nicho que refuercen tu autoridad temática. Gestiona las resenas de forma activa y profesional. Y trata tu presencia en directorios como un programa continuo, no un proyecto único.&lt;/p&gt;
&lt;p&gt;Los negocios que dominan la búsqueda local en 2026 son aquellos que mantienen una precision de citaciones impecable, gestionan activamente su reputacion en linea y aparecen de forma consistente en los directorios donde sus clientes buscan.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y visibilidad&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">seo</category><category domain="tag">local-seo</category><category domain="tag">directories</category><category domain="tag">citations</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Estrategia Completa de Link Building 2026: De la Autoridad Temática al Digital PR</title><link>https://wppoland.com/es/link-building-strategies/</link><guid isPermaLink="true">https://wppoland.com/es/link-building-strategies/</guid><description>Guía completa de estrategias de link building para 2026. Desde la autoridad temática hasta el Digital PR, aprende a construir enlaces de calidad que impulsen tu SEO.</description><pubDate>Sat, 10 Oct 2009 10:59:09 GMT</pubDate><content:encoded>&lt;h2 id=&quot;donde-retoma-esta-guía&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#donde-retoma-esta-guía&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Donde retoma esta guía&lt;/h2&gt;
&lt;p&gt;Si ya has leído nuestra &lt;a href=&quot;/es/introduction-to-link-building-strategy-seo/&quot;&gt;introducción a la estrategia de link building&lt;/a&gt;, conoces los fundamentos: la relevancia pesa más que la autoridad bruta, el anchor text tiene que sonar natural y el outreach debe leerse como si lo hubiera escrito una persona. Esta guía lo da por sentado. Aquí dedicamos el tiempo al trabajo que de verdad mueve posiciones cuando ya tienes lo básico en pie: encargar investigación original, escribir como ghostwriter para directivos, vigilar la distribución de anchors para evitar acciones manuales y reclamar menciones de marca sin enlazar antes de que se enfríen.&lt;/p&gt;
&lt;p&gt;La mayoría de las agencias se estancan en la misma meseta. Las tasas de respuesta del outreach caen tras los primeros 200 emails. Los guest posts dejan de mover rankings porque las publicaciones a las que puedes presentarte como un desconocido ya están saturadas. El siguiente nivel exige presupuesto para digital PR o paciencia para construir relaciones reales con periodistas de Marketing4eCommerce, El Economista Tecnología o IPMARK, hosts de podcasts del circuito de la Asociación Española de Marketing y editores de directorios de AEAS-PNE u otras asociaciones sectoriales. Las dos vías funcionan. Ninguna escala como prometen los blogs de SEO.&lt;/p&gt;
&lt;p&gt;Para apoyo de pago en las cargas más exigentes, consulta nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y GEO&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;autoridad-temática-la-base-del-link-building-moderno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#autoridad-temática-la-base-del-link-building-moderno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Autoridad temática: la base del link building moderno&lt;/h2&gt;
&lt;h3 id=&quot;que-significa-la-autoridad-temática-para-los-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-significa-la-autoridad-temática-para-los-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que significa la autoridad temática para los enlaces&lt;/h3&gt;
&lt;p&gt;Google evalua los enlaces no solo por la autoridad general del sitio que enlaza, sino por su relevancia respecto al tema de la página enlazada. Un enlace desde un blog especializado en desarrollo WordPress (DR 30) tiene más peso tematico para una página sobre WordPress que un enlace desde un sitio de noticias de alta autoridad (DR 80) sin conexión con el tema.&lt;/p&gt;
&lt;p&gt;Esto es la autoridad temática en accion. Google entiende las relaciones semanticas entre sitios web, y los enlaces desde dentro de tu cluster tematico refuerzan tu experiencia más que los enlaces desde fuera de el. Un sitio que acumula enlaces relevantes de fuentes temáticamente alineadas construye una señal de autoridad mucho más fuerte que un sitio con muchos enlaces aleatorios de sitios genericos.&lt;/p&gt;
&lt;h3 id=&quot;mapear-tus-objetivos-de-enlaces-tematicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mapear-tus-objetivos-de-enlaces-tematicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mapear tus objetivos de enlaces tematicos&lt;/h3&gt;
&lt;p&gt;Antes de ejecutar cualquier campana de link building, crea un mapa de autoridad temática:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identifica tus temas centrales.&lt;/strong&gt; Lista los 5 a 10 temas principales que tu sitio cubre. Para una agencia WordPress, esto podria incluir desarrollo WordPress, WooCommerce, SEO, rendimiento web y seguridad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Encuentra dominios temáticamente relevantes.&lt;/strong&gt; Usa Ahrefs Content Explorer o SEMrush para encontrar sitios que publiquen contenido sobre tus temas. Filtra por sitios con estándares editoriales, calendarios de publicación activos y audiencias reales.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Analiza los backlinks de la competencia.&lt;/strong&gt; Pasa tus 3 principales competidores por una herramienta de backlinks e identifica dominios referentes que sean temáticamente relevantes. Estos sitios ya han demostrado disposicion a enlazar dentro de tu nicho.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prioriza relevancia sobre autoridad.&lt;/strong&gt; Ordena tu lista de objetivos por relevancia temática primero, y despues por autoridad. Un sitio DR 25 que pública exclusivamente sobre WordPress es un objetivo de mayor prioridad que un blog tecnológico general con DR 70.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;el-efecto-volante-de-la-autoridad-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-efecto-volante-de-la-autoridad-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El efecto volante de la autoridad temática&lt;/h3&gt;
&lt;p&gt;A medida que adquieres enlaces de fuentes temáticamente relevantes, la autoridad de tu sitio dentro de ese tema crece. Esto facilita el posicionamiento para consultas relacionadas, lo que genera más visibilidad organica, que a su vez atrae más enlaces naturales de personas que descubren tu contenido. El resultado es un efecto volante que se retroalimenta y se acelera con el tiempo.&lt;/p&gt;
&lt;h2 id=&quot;digital-pr-conseguir-enlaces-editoriales-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#digital-pr-conseguir-enlaces-editoriales-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Digital PR: conseguir enlaces editoriales a escala&lt;/h2&gt;
&lt;h3 id=&quot;que-es-el-digital-pr-y-que-no-es&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-es-el-digital-pr-y-que-no-es&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que es el digital PR y que no es&lt;/h3&gt;
&lt;p&gt;El digital PR es la práctica de crear contenido de interes periodistico (investigaciónes originales, estudios de datos, comentarios de expertos, tendencias del sector) y presentarlo a periodistas y publicaciónes para obtener cobertura editorial que incluya backlinks.&lt;/p&gt;
&lt;p&gt;No es enviar notas de prensa masivas. No es pagar por “contenido patrocinado”. Es crear historias genuinas que los periodistas quieran cubrir porque a sus lectores les importa el tema.&lt;/p&gt;
&lt;h3 id=&quot;tipos-de-contenido-para-digital-pr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-contenido-para-digital-pr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de contenido para digital PR&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Investigacion y encuestas originales.&lt;/strong&gt; Realiza o encarga investigaciónes relevantes para tu sector. Una agencia WordPress podria encuestar a 1.000 propietarios de sitios web sobre su satisfaccion con el hosting, incidentes de seguridad o patrones de uso de plugins. Los datos reales atraen cobertura mediatica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estudios y análisis de datos.&lt;/strong&gt; Analiza datos disponibles publicamente para descubrir tendencias. Rastrea las tendencias salariales de desarrolladores WordPress en bolsas de empleo. Analiza la Wayback Machine para seguir las tendencias de diseño durante una decada. Los periodistas adoran las historias respaldadas por datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comentarios y predicciones de expertos.&lt;/strong&gt; Posicionate como una fuente citrable. Cuando Google anuncia una actualización de algoritmo, prepara un análisis detallado y ofrecelo a periodistas tecnológicos. Cuando suceden eventos en tu sector, se la fuente experta con una perspectiva preparada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas y calculadoras interactivas.&lt;/strong&gt; Crea herramientas gratuitas que resuelvan un problema para tu audiencia. Un estimador de velocidad web, una herramienta de auditoria SEO o un verificador de compatibilidad de plugins WordPress pueden conseguir enlaces desde cada sitio que las recomiende.&lt;/p&gt;
&lt;h3 id=&quot;proceso-de-outreach-para-digital-pr&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#proceso-de-outreach-para-digital-pr&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Proceso de outreach para digital PR&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Construye listas de medios.&lt;/strong&gt; Usa herramientas como Muck Rack, Cision o investigación manual para identificar periodistas que cubran tu sector. Centrate en reporteros de publicaciónes que lea tu audiencia objetivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Elabora el pitch.&lt;/strong&gt; Lidera con la historia, no con tu marca. El asunto del email debe comunicar el valor noticioso. El cuerpo debe proporcionar el dato clave o la perspectiva principal. Incluye un enlace al contenido completo. Mantente por debajo de 200 palabras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: El timing importa.&lt;/strong&gt; Envia pitches de martes a jueves por la manana. Evita dias de noticias importantes. Alinea tus pitches con tendencias estacionales y eventos del sector.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 4: Haz un único seguimiento.&lt;/strong&gt; Envia un solo seguimiento 3 a 5 dias despues del pitch inicial. Si no hay respuesta, sigue adelante. Los periodistas reciben cientos de pitches diariamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 5: Construye relaciones.&lt;/strong&gt; Interactua con periodistas en redes sociales. Comparte sus artículos. Proporciona perspectivas utiles cuando hagan preguntas publicamente. El mejor PR se basa en relaciones.&lt;/p&gt;
&lt;h2 id=&quot;guest-posting-la-forma-correcta-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#guest-posting-la-forma-correcta-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Guest posting: la forma correcta en 2026&lt;/h2&gt;
&lt;h3 id=&quot;por-que-el-guest-posting-sigue-funcionando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-el-guest-posting-sigue-funcionando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que el guest posting sigue funcionando&lt;/h3&gt;
&lt;p&gt;El guest posting (escribir contenido original para otro sitio a cambio de un enlace en la biografia del autor) sigue siendo efectivo cuando se ejecuta correctamente. La distincion clave es entre guest posting estrategico y guest posting masivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guest posting estrategico&lt;/strong&gt; se dirige a publicaciónes relevantes y autorizadas donde tu experiencia anade valor genuino. Escribes contenido que la audiencia de la publicación quiere leer, y el enlace hacia tu sitio es un subproducto natural de la atribucion de autoria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guest posting masivo&lt;/strong&gt; envia artículos genericos a cualquier sitio que los acepte, puramente por enlaces. Esta es una tactica de spam que SpamBrain de Google detecta y penaliza activamente.&lt;/p&gt;
&lt;h3 id=&quot;encontrar-oportunidades-de-guest-posting-de-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encontrar-oportunidades-de-guest-posting-de-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encontrar oportunidades de guest posting de calidad&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Señales de calidad de la publicación.&lt;/strong&gt; Busca procesos editoriales reales (directrices de pitch, tasas de rechazo), audiencias comprometidas (comentarios activos, compartidos en redes), calendarios de publicación consistentes y contenido original.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Alineacion de relevancia.&lt;/strong&gt; La publicación debe cubrir temas directamente relacionados con tu experiencia. Un artículo sobre desarrollo WordPress en un blog de marketing puede ser forzado; el mismo artículo en una publicación de desarrollo web encaja naturalmente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Superposicion de audiencia.&lt;/strong&gt; Tu guest post debe llegar a personas que podrian convertirse en tu audiencia. Si los lectores de la publicación no tienen interes en tus servicios o contenido, el valor del enlace disminuye.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;escribir-guest-posts-que-consigan-enlaces-y-autoridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escribir-guest-posts-que-consigan-enlaces-y-autoridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escribir guest posts que consigan enlaces y autoridad&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Proporciona perspectivas originales, no información reciclada.&lt;/li&gt;
&lt;li&gt;Incluye datos, casos de estudio o ejemplos de tu propia experiencia.&lt;/li&gt;
&lt;li&gt;Escribe con la misma calidad (o superior) que en tu propio blog.&lt;/li&gt;
&lt;li&gt;Haz que el contenido sea genuinamente útil para la audiencia de la publicación.&lt;/li&gt;
&lt;li&gt;Mantiene el enlace de la bio natural: tu nombre de marca o una página de recurso relevante, nunca un anchor de coincidencia exacta.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;broken-link-building-encontrar-oportunidades-en-páginas-muertas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#broken-link-building-encontrar-oportunidades-en-páginas-muertas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Broken link building: encontrar oportunidades en páginas muertas&lt;/h2&gt;
&lt;h3 id=&quot;el-proceso-de-broken-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-proceso-de-broken-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El proceso de broken link building&lt;/h3&gt;
&lt;p&gt;El broken link building explota una verdad simple: los propietarios de sitios no quieren enlaces rotos en sus páginas. Cuando encuentras un enlace roto, creas contenido que reemplaza el recurso muerto y lo ofreces al propietario del sitio, proporcionas valor genuino mientras consigues un enlace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Identifica sitios objetivo.&lt;/strong&gt; Usa tu mapa de autoridad temática para encontrar sitios relevantes con páginas de recursos, compilaciones de enlaces o contenido que referencia fuentes externas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Encuentra enlaces rotos.&lt;/strong&gt; Usa Ahrefs Broken Link Checker, Screaming Frog o la extensión de Chrome Check My Links para escanear páginas objetivo buscando enlaces externos muertos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Crea contenido de reemplazo.&lt;/strong&gt; Si un enlace roto apuntaba a una guía sobre “Mejores prácticas de seguridad WordPress” que ya no existe, crea una versión completa y actualizada en tu sitio que cumpla la misma función.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 4: Outreach.&lt;/strong&gt; Envia un email al propietario del sitio con un mensaje específico y util: “He notado que el enlace a [recurso muerto] en tu página [nombre de la página] esta roto. Recientemente publique una guía completa sobre el mismo tema que podria servir como reemplazo: [tu URL].”&lt;/p&gt;
&lt;h3 id=&quot;escalar-el-broken-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escalar-el-broken-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escalar el broken link building&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Centrate en páginas de recursos y listas “best of” en tu nicho. Contienen más enlaces externos y, por tanto, más enlaces rotos.&lt;/li&gt;
&lt;li&gt;Construye una biblioteca de “contenido de reemplazo” que cubra temas comunes en tu sector, para que siempre tengas algo que ofrecer.&lt;/li&gt;
&lt;li&gt;Usa Ahrefs para encontrar páginas con muchos dominios referentes que se han caido. Reemplazar estas crea oportunidades de adquisicion de backlinks a escala.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;haro-y-plataformas-de-fuentes-para-periodistas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#haro-y-plataformas-de-fuentes-para-periodistas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;HARO y plataformas de fuentes para periodistas&lt;/h2&gt;
&lt;h3 id=&quot;como-funciona-haro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-funciona-haro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como funciona HARO&lt;/h3&gt;
&lt;p&gt;HARO (Help A Reporter Out), ahora operado como Connectively, conecta periodistas que buscan fuentes expertas con profesionales que pueden proporcionar citas, datos y perspectivas. Los periodistas publican consultas y los expertos responden con información relevante.&lt;/p&gt;
&lt;p&gt;Cuando tu respuesta se utiliza, normalmente recibes un backlink de la publicación, a menudo medios de alta autoridad como Forbes, Business Insider o publicaciónes especializadas del sector.&lt;/p&gt;
&lt;h3 id=&quot;estrategias-de-éxito-en-haro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-éxito-en-haro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de éxito en HARO&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;La velocidad importa.&lt;/strong&gt; Las consultas reciben decenas de respuestas en horas. Configura alertas para tus palabras clave y responde dentro de los 30 minutos siguientes a la publicación de la consulta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lidera con credenciales.&lt;/strong&gt; Los periodistas eligen fuentes basandose en la credibilidad. Abre con tu experiencia relevante, título y empresa. “Como desarrollador WordPress con 15 años de experiencia y más de 200 despliegues empresariales” es más convincente que “trabajo con WordPress”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Responde a la pregunta específica.&lt;/strong&gt; No envies un pitch generico. Lee la consulta cuidadosamente y proporciona una respuesta concisa y citable a exactamente lo que el periodista esta preguntando.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ofrece perspectivas únicas.&lt;/strong&gt; Todos los expertos que respondan diran la respuesta obvia. Diferencia compartiendo datos originales, perspectivas contrarias (con evidencia) o ejemplos específicos de tu experiencia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Se citable.&lt;/strong&gt; Escribe en frases cortas y directas que un periodista pueda copiar directamente en su artículo. Evita jerga. Se específico.&lt;/p&gt;
&lt;h3 id=&quot;plataformás-alternativas-de-fuentes&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plataformás-alternativas-de-fuentes&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plataformás alternativas de fuentes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Qwoted:&lt;/strong&gt; similar a HARO con funcionalidades adicionales para construir relaciones con periodistas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terkel:&lt;/strong&gt; centrada en contribuciones de expertos a temas de artículos específicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Featured.com:&lt;/strong&gt; conecta expertos con editores para inclusion de citas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#JournoRequest en Twitter/X:&lt;/strong&gt; periodistas publican solicitudes de fuentes publicamente usando este hashtag.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;link-building-basado-en-páginas-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#link-building-basado-en-páginas-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Link building basado en páginas de recursos&lt;/h2&gt;
&lt;h3 id=&quot;que-son-las-páginas-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-son-las-páginas-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que son las páginas de recursos&lt;/h3&gt;
&lt;p&gt;Las páginas de recursos son listas curadas de enlaces utiles sobre un tema específico. Ejemplos: “Mejores recursos de desarrollo WordPress”, “Herramientas SEO para pequeñas empresas” o “Recursos gratuitos para aprender diseño web”.&lt;/p&gt;
&lt;p&gt;Estas páginas existen específicamente para enlazar a contenido valioso, lo que las convierte en objetivos naturales para outreach de link building.&lt;/p&gt;
&lt;h3 id=&quot;encontrar-páginas-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encontrar-páginas-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encontrar páginas de recursos&lt;/h3&gt;
&lt;p&gt;Usa estos operadores de búsqueda para encontrar páginas de recursos en tu nicho:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&quot;recursos utiles&quot; + [tu palabra clave]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&quot;enlaces recomendados&quot; + [tu palabra clave]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&quot;herramientas recomendadas&quot; + [tu palabra clave]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intitle:&quot;recursos&quot; + [tu palabra clave]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inurl:recursos + [tu palabra clave]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;outreach-para-páginas-de-recursos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#outreach-para-páginas-de-recursos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Outreach para páginas de recursos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Verifica que la página se mantiene activamente (busca actualizaciones recientes).&lt;/li&gt;
&lt;li&gt;Asegurate de que tu contenido merece genuinamente la inclusion; debe ser el mejor recurso sobre su tema específico.&lt;/li&gt;
&lt;li&gt;Personaliza tu email de outreach. Referencia recursos específicos de la página que te resultaron utiles.&lt;/li&gt;
&lt;li&gt;Explica por que tu recurso anade valor que la lista actual no tiene.&lt;/li&gt;
&lt;li&gt;Mantiene el email corto, por debajo de 150 palabras.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;marketing-de-contenidos-como-motor-de-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marketing-de-contenidos-como-motor-de-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marketing de contenidos como motor de link building&lt;/h2&gt;
&lt;h3 id=&quot;crear-activos-enlazables&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#crear-activos-enlazables&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Crear activos enlazables&lt;/h3&gt;
&lt;p&gt;La estrategia de link building más sostenible es crear contenido tan valioso que la gente enlace a el sin que se lo pidas. Estos “activos enlazables” incluyen:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Datos e investigación original.&lt;/strong&gt; Un “Estado del rendimiento WordPress 2026” con datos de benchmark originales de 1.000 sitios atraera enlaces desde cada blog de WordPress que cite los resultados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guias completas.&lt;/strong&gt; La guía definitiva y más exhaustiva sobre un tema se convierte en el objetivo de enlace por defecto. Cuando los bloggers escriben sobre un tema y necesitan referenciar algo, enlazan al mejor recurso disponible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Herramientas y calculadoras gratuitas.&lt;/strong&gt; Las herramientas interactivas que resuelven un problema específico generan backlinks sostenidos. Un verificador gratuito de Core Web Vitals, un detector de conflictos de plugins WordPress o una calculadora de costes de hosting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Activos visuales.&lt;/strong&gt; Infografias originales, graficos y visualizaciones de datos se incrustan en otros sitios con enlaces de atribucion. Crea visuales que cuenten una historia con datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plantillas y frameworks.&lt;/strong&gt; Plantillas descargables (calendarios de contenido, checklists de auditoria SEO, frameworks de gestión de proyectos) atraen enlaces desde sitios que las recomiendan.&lt;/p&gt;
&lt;h2 id=&quot;metricas-y-medicion-del-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-y-medicion-del-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas y medicion del link building&lt;/h2&gt;
&lt;h3 id=&quot;indicadores-clave-de-rendimiento&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#indicadores-clave-de-rendimiento&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Indicadores clave de rendimiento&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Crecimiento de dominios referentes.&lt;/strong&gt; El número de dominios únicos que enlazan a tu sitio a lo largo del tiempo. Esto es más importante que el número total de backlinks, ya que un enlace de un nuevo dominio tiene más valor que 10 enlaces adicionales de un sitio que ya te enlaza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Puntuacion de relevancia temática.&lt;/strong&gt; Mide que porcentaje de tus backlinks provienen de sitios temáticamente relevantes. Usa las categorías de Ahrefs o clasificación manual. Apunta al 60% o más de relevancia temática.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Velocidad de enlace (patron natural).&lt;/strong&gt; Rastrea la tasa de adquisicion de nuevos enlaces. Los perfiles saludables muestran variacion organica (algunas semanas ganas muchos enlaces, otras pocas) en lugar de un crecimiento constante y uniforme.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tráfico organico desde páginas enlazadas.&lt;/strong&gt; Mide si las páginas con nuevos backlinks muestran aumentos correspondientes en tráfico de búsqueda organica. Esto válida que los enlaces estan teniendo el efecto SEO deseado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Calidad del tráfico de referencia.&lt;/strong&gt; Los backlinks de calidad envian tráfico de referencia cualificado. Si un enlace genera cero clics, puede tener valor SEO, pero los enlaces que también generan tráfico son los más valiosos.&lt;/p&gt;
&lt;h2 id=&quot;tácticas-que-van-más-allá-del-outreach-101&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tácticas-que-van-más-allá-del-outreach-101&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tácticas que van más allá del outreach 101&lt;/h2&gt;
&lt;h3 id=&quot;encarga-una-encuesta-y-vende-los-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#encarga-una-encuesta-y-vende-los-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Encarga una encuesta y vende los datos&lt;/h3&gt;
&lt;p&gt;Una campaña de digital PR construida sobre datos novedosos es lo más parecido que existe a un motor de enlaces repetible. La receta: encarga una encuesta de 500 a 1.000 personas en una audiencia relevante (Pollfish, Prolific, o agencias gestionadas como Sigma Dos, GAD3 o IPSOS España), convierte los resultados en una nota de prensa más un informe de una página en tu sitio, y presenta los datos a periodistas de Marketing4eCommerce, El Economista Tecnología, IPMARK o Reason Why. Espera unos cinco a quince dominios referentes por campaña una vez que aterriza, con la mayor parte del valor procediendo de unos pocos medios grandes y el resto de cabeceras menores que sindican el mismo dato. Estos proyectos no son baratos; presupuesta una cifra de seis dígitos para uno serio que incluya investigación, diseño y outreach. El precio es individual y depende del tamaño de la muestra y del alcance de outreach.&lt;/p&gt;
&lt;p&gt;El error que comete la mayoría de los equipos es encargar investigación sobre un tema que nadie está buscando. Elige un ángulo que conecte con un ciclo informativo actual (regulación, desplazamiento por IA, contratación) y lidera con el dato titular que un periodista podría meter en un tuit.&lt;/p&gt;
&lt;h3 id=&quot;escribe-como-ghostwriter-para-quienes-los-periodistas-ya-creen&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#escribe-como-ghostwriter-para-quienes-los-periodistas-ya-creen&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Escribe como ghostwriter para quienes los periodistas ya creen&lt;/h3&gt;
&lt;p&gt;Los guest posts en blogs de SEO tienen un techo. El thought leadership ghostwriting para directivos de empresas cliente, no. Si el CEO está dispuesto a poner su nombre en una pieza que tú redactas, puedes colocarla en publicaciones sectoriales que jamás aceptarían una firma de proveedor. Lo mismo aplica a las apariciones en podcasts (una buena intervención supera a diez guest posts genéricos porque las show notes enlazan a tu sitio y el audio se cita durante años), a los pitches de speakers en conferencias del circuito de la Asociación Española de Marketing, AERCO-PSM o el Mobile World Congress (la mayoría publica una página de ponentes con bio dofollow), y a las membresías en asociaciones sectoriales: el directorio de miembros suele ser el enlace más autoritativo de un nicho.&lt;/p&gt;
&lt;h3 id=&quot;vigila-la-distribución-de-anchors-para-reducir-el-riesgo-de-acción-manual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#vigila-la-distribución-de-anchors-para-reducir-el-riesgo-de-acción-manual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Vigila la distribución de anchors para reducir el riesgo de acción manual&lt;/h3&gt;
&lt;p&gt;Una vez que cruzas los 1.000 dominios referentes, el anchor text de coincidencia exacta se vuelve un riesgo. Abre Ahrefs o Majestic, ejecuta el perfil de anchors por página de tus money pages y marca cualquier URL donde los anchors comerciales exactos superen el 30% del total de anchors entrantes. Ese umbral es informal pero coherente con los patrones sobre los que el equipo de revisión manual de Google parece actuar. Para los .es ccTLD añade una vigilancia extra: los anchors locales tipo “agencia SEO Madrid” o “desarrollador WordPress Barcelona” son más fáciles de inflar de lo que parece y los revisores de Google España son sensibles a esta señal. La solución rara vez es disavow; es diluir el perfil con anchors de marca y URL desnuda procedentes de enlaces nuevos, además de actualizar los anchors internos que apuntan a la página.&lt;/p&gt;
&lt;h3 id=&quot;usa-el-archivo-disavow-con-cuentagotas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#usa-el-archivo-disavow-con-cuentagotas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Usa el archivo disavow con cuentagotas&lt;/h3&gt;
&lt;p&gt;Google ha declarado desde 2017 que la herramienta disavow es prácticamente innecesaria porque SpamBrain ignora automáticamente los enlaces de baja calidad. Úsala solo cuando tengas una acción manual en Search Console o sepas que has participado en algo explícitamente manipulador (PBNs, link drops pagados, comment spam a escala). Subir un disavow defensivo contra informes aleatorios de toxic score de herramientas de terceros más a menudo elimina enlaces que estaban ayudando en silencio que resuelve un problema real.&lt;/p&gt;
&lt;h3 id=&quot;herramientas-que-valen-lo-que-cuestan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#herramientas-que-valen-lo-que-cuestan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Herramientas que valen lo que cuestan&lt;/h3&gt;
&lt;p&gt;Más allá de lo básico, las herramientas que de verdad ahorran tiempo en campañas avanzadas: BuzzStream y Pitchbox para pipelines de outreach (BuzzStream es más amable para operadores en solitario, Pitchbox es el estándar de agencia); Hunter.io y Apollo para descubrimiento y verificación de email (recuerda que para bases de datos de outreach desde España las consultas RGPD-compliant en Hunter.io son obligatorias y Apollo exige una base legal documentada); Respona para gestionar relaciones y follow-ups en múltiples campañas; Detailed.com para detectar qué sitios obtienen enlaces tus competidores frente a los que parecen grandes en Ahrefs pero no enlazan a nadie. Combina Detailed con Ahrefs Content Explorer cuando intentes encontrar publicaciones que enlazan a competidores directos pero no a ti.&lt;/p&gt;
&lt;h3 id=&quot;link-building-reactivo-con-google-alerts&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#link-building-reactivo-con-google-alerts&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Link building reactivo con Google Alerts&lt;/h3&gt;
&lt;p&gt;El reactivo gana al proactivo en términos de coste por hora. Configura Google Alerts (y Ahrefs Alerts, que captura más) para tu nombre de marca, los nombres de tus fundadores, los nombres de producto y cualquier metodología propia que publiques. La mayoría de semanas encontrarás al menos una mención sin enlazar. Un email corto y educado pidiendo al autor que añada un enlace a la fuente que ya está citando convierte mucho más que el outreach en frío porque la relación y la relevancia ya están establecidas. Es la hora de link building más fácil que cualquiera de tu equipo hará en todo el mes.&lt;/p&gt;
&lt;h3 id=&quot;las-señales-de-entidad-como-multiplicador-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-señales-de-entidad-como-multiplicador-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las señales de entidad como multiplicador de enlaces&lt;/h3&gt;
&lt;p&gt;Los enlaces a un dominio siguen importando, pero Google rastrea cada vez más entidades (una marca, un fundador, una metodología) por toda la web. Mantén tu entrada de Wikidata precisa, consigue artículos firmados con el nombre de tus fundadores en publicaciones autoritativas, y trata las co-citaciones sin enlazar (tu marca apareciendo junto a competidores en listados y recopilaciones) como una señal deliberada que merece persecución. El grafo de enlaces y el grafo de entidades se refuerzan mutuamente; ignorar uno deja resultados sobre la mesa.&lt;/p&gt;
&lt;h2 id=&quot;una-secuencia-de-trabajo-para-los-próximos-doce-meses&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#una-secuencia-de-trabajo-para-los-próximos-doce-meses&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Una secuencia de trabajo para los próximos doce meses&lt;/h2&gt;
&lt;p&gt;La mayoría de los planes de acción trimestrales colapsan al primer contacto con la realidad. La versión que sobrevive se parece más a una secuencia rodada que a un calendario, porque cada fase solo arranca cuando la anterior empieza a producir datos.&lt;/p&gt;
&lt;p&gt;Los tres primeros meses son diagnósticos y preparatorios. Audita el perfil actual de backlinks en Ahrefs, ejecuta análisis de distribución de anchors sobre las diez money pages principales (con atención específica al peso de anchors en .es) y saca un informe de gap competitivo contra tres competidores directos (no aspiracionales). Decide qué ángulo único de digital PR puede reivindicar el negocio con credibilidad y arranca la investigación o el trabajo de encuesta. En paralelo, configura Google Alerts y Ahrefs Alerts para menciones de marca y empieza el flujo reactivo. Para el mes tres deberías tener un activo de datos pitcheable, una lista de unas 50 menciones sin enlazar para reclamar y una idea calibrada de qué dominios referentes tienen tus competidores que tú no.&lt;/p&gt;
&lt;p&gt;Los meses cuatro a ocho son cuando el outreach se gana el sueldo. Lanza la campaña de digital PR, sigue la cobertura con pitches secundarios a publicaciones que se perdieron la primera ola y ejecuta en paralelo un flujo de broken link o resource page contra el informe de gap. Es también la ventana correcta para alinear dos o tres apariciones en podcast y un slot de speaker en una conferencia, porque los plazos de ambas cosas corren entre tres y seis meses. Mantén dos firmas ghost-escritas por trimestre en publicaciones sectoriales.&lt;/p&gt;
&lt;p&gt;Los meses nueve a doce van de capitalizar lo que funcionó. Refresca la investigación original con un dato de seguimiento que los periodistas puedan cubrir como historia de actualización. Recupera enlaces perdidos comprobando 404s en URLs referentes y pidiendo redirecciones. Vuelve a auditar el perfil de anchors para confirmar que los anchors comerciales exactos siguen por debajo del 30% en las páginas que importan. Planifica el siguiente proyecto de investigación antes de que el actual deje de generar cobertura, porque el hueco entre campañas es cuando los rankings se desvían.&lt;/p&gt;
&lt;p&gt;La constante a lo largo de los doce meses es que la relevancia y las relaciones hacen el trabajo. SpamBrain se ocupa del ruido de fondo; lo que queda es si los periodistas, los editores de asociaciones y los organizadores de conferencias saben quién eres y confían en lo que publicas. Ese es el activo que compone. Para apoyo en cualquier parte de la ejecución, consulta nuestros servicios de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y de visibilidad&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">seo</category><category domain="tag">backlinki</category><category domain="tag">link-building</category><category domain="tag">digital-pr</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-resized-e1570276213229.jpg" type="image/jpeg"/></item><item><title>Señales sociales y SEO en 2026: cómo las redes sociales impactan realmente en el posicionamiento</title><link>https://wppoland.com/es/social-media-microblogging-seo/</link><guid isPermaLink="true">https://wppoland.com/es/social-media-microblogging-seo/</guid><description>La guía definitiva sobre señales sociales y SEO en 2026. Aprende cómo las redes sociales impactan en las posiciones a través de señales de marca, amplificación de contenido, prueba social para E-E-A-T y estrategias de visibilidad multiplataforma.</description><pubDate>Fri, 09 Oct 2009 10:59:09 GMT</pubDate><content:encoded>&lt;h2 id=&quot;señales-sociales-y-seo-la-relación-real-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-sociales-y-seo-la-relación-real-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales sociales y SEO: la relación real en 2026&lt;/h2&gt;
&lt;p&gt;Durante años, la comunidad SEO ha debatido si la actividad en redes sociales influye directamente en las posiciones de búsqueda. Los representantes de Google han declarado repetidamente que las señales sociales - me gusta, compartidos, retweets - no son factores de posicionamiento directos. Sin embargo, estudio tras estudio muestra una fuerte correlación entre una presencia social robusta y una mayor visibilidad en las búsquedas.&lt;/p&gt;
&lt;p&gt;La verdad, como siempre, reside en los matices. Las redes sociales no mejoran las posiciones a través de un simple mecanismo de “más compartidos equivale a mejor posición”. En cambio, las plataformas sociales funcionan como &lt;strong&gt;motores de amplificación&lt;/strong&gt; que generan las señales que Google sí valora: búsquedas de marca, backlinks de calidad, reconocimiento de entidades y marcadores de autoridad E-E-A-T.&lt;/p&gt;
&lt;p&gt;En 2026, la relación entre las redes sociales y el SEO se ha vuelto más compleja y más importante que nunca. La búsqueda ya no es un monopolio de Google. TikTok, Reddit, LinkedIn y Pinterest funcionan como motores de búsqueda por derecho propio, y Google mismo indexa contenido social directamente en sus páginas de resultados.&lt;/p&gt;
&lt;p&gt;Esta guía desglosa exactamente cómo las redes sociales impactan en el SEO hoy, qué estrategias realmente mueven la aguja y cómo construir una presencia multiplataforma que fortalezca tanto tus posiciones de búsqueda como tu autoridad de marca.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;h2 id=&quot;el-mito-de-las-señales-sociales-como-factor-de-posicionamiento-directo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-mito-de-las-señales-sociales-como-factor-de-posicionamiento-directo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El mito de las señales sociales como factor de posicionamiento directo&lt;/h2&gt;
&lt;h3 id=&quot;lo-que-google-ha-dicho-realmente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-google-ha-dicho-realmente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que Google ha dicho realmente&lt;/h3&gt;
&lt;p&gt;Matt Cutts abordó esto por primera vez en 2014, y la posición se ha mantenido consistente: Google no utiliza métricas de redes sociales (me gusta, compartidos, seguidores) como señales de posicionamiento directas. John Mueller y Gary Illyes lo han reafirmado múltiples veces desde entonces.&lt;/p&gt;
&lt;p&gt;El razonamiento es práctico. Las plataformas sociales pueden restringir el acceso a los rastreadores en cualquier momento, las métricas sociales son fácilmente manipulables, y el enorme volumen de actividad social las hace poco fiables como señal consistente.&lt;/p&gt;
&lt;h3 id=&quot;por-qué-la-correlación-existe-de-todos-modos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-la-correlación-existe-de-todos-modos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué la correlación existe de todos modos&lt;/h3&gt;
&lt;p&gt;Si las señales sociales no son factores de posicionamiento directos, ¿por qué prácticamente todos los estudios de correlación muestran que las páginas mejor posicionadas tienen un engagement social más fuerte? La respuesta involucra varios mecanismos indirectos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Amplificación de contenido.&lt;/strong&gt; Cuando un contenido obtiene tracción social significativa, llega a más personas. Más ojos sobre el contenido significa más backlinks potenciales de blogueros, periodistas y creadores de contenido que lo descubren a través de feeds sociales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Volumen de búsquedas de marca.&lt;/strong&gt; Una campaña social viral provoca picos en las consultas de búsqueda de marca. Google interpreta el aumento del volumen de búsquedas de marca como una señal de autoridad y relevancia, lo que puede influir positivamente en las posiciones para consultas no relacionadas con la marca.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Indexación más rápida.&lt;/strong&gt; Google descubre contenido a través del rastreo de enlaces. El contenido ampliamente compartido genera más enlaces externos, lo que lleva a un descubrimiento e indexación más rápidos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Señales de interacción del usuario.&lt;/strong&gt; El contenido que funciona bien en redes sociales tiende a ser genuinamente útil o atractivo. Cuando los usuarios encuentran este contenido a través de la búsqueda, es más probable que interactúen positivamente - menores tasas de rebote, mayor tiempo de permanencia - lo que refuerza su posicionamiento.&lt;/p&gt;
&lt;h2 id=&quot;velocidad-de-marca-la-señal-que-google-realmente-valora&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-de-marca-la-señal-que-google-realmente-valora&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad de marca: la señal que Google realmente valora&lt;/h2&gt;
&lt;h3 id=&quot;definición-de-velocidad-de-marca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#definición-de-velocidad-de-marca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Definición de velocidad de marca&lt;/h3&gt;
&lt;p&gt;La velocidad de marca es la tasa a la que las personas hablan, buscan e interactúan con tu marca en Internet. Abarca consultas de búsqueda de marca, menciones sociales, cobertura de prensa, discusiones en foros y actividad en sitios de reseñas.&lt;/p&gt;
&lt;p&gt;Los algoritmos de Google se han vuelto lo suficientemente sofisticados como para comprender el contexto de marca. Cuando tu marca se discute activamente en múltiples plataformas, Google la reconoce como una entidad legítima con relevancia en el mundo real. Este reconocimiento de entidades alimenta directamente cómo Google evalúa la autoridad de tu sitio.&lt;/p&gt;
&lt;h3 id=&quot;cómo-la-velocidad-de-marca-influye-en-las-posiciones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-la-velocidad-de-marca-influye-en-las-posiciones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo la velocidad de marca influye en las posiciones&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Fortalecimiento del Knowledge Graph.&lt;/strong&gt; Las menciones de marca consistentes en las plataformas con datos NAP (Nombre, Dirección, Teléfono) coincidentes y descripciones consistentes fortalecen tu entidad en el Knowledge Graph de Google. Una entidad más fuerte significa que Google confía más en tu dominio para consultas relacionadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Query Deserves Freshness (QDF).&lt;/strong&gt; Cuando la discusión sobre tu marca aumenta repentinamente - un lanzamiento de producto, un momento viral, cobertura mediática - el algoritmo QDF de Google puede impulsar tu contenido para consultas relacionadas porque detecta una mayor demanda de los usuarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patrones de coocurrencia.&lt;/strong&gt; Si tu marca se menciona consistentemente junto con términos del sector (“WPPoland desarrollo WordPress”, “WPPoland servicios SEO”), Google construye asociaciones semánticas que pueden influir en la autoridad temática.&lt;/p&gt;
&lt;h3 id=&quot;pasos-prácticos-para-aumentar-la-velocidad-de-marca&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pasos-prácticos-para-aumentar-la-velocidad-de-marca&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pasos prácticos para aumentar la velocidad de marca&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cadencia de publicación consistente.&lt;/strong&gt; Comparte ideas originales, datos y perspectivas en LinkedIn y Twitter/X semanalmente. Cada publicación genera menciones y discusiones de marca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Programás de defensa de empleados.&lt;/strong&gt; Cuando los miembros del equipo comparten contenido de la empresa desde perfiles personales, multiplica el alcance y crea patrones de mención diversos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Outreach a periodistas y blogueros.&lt;/strong&gt; Consigue que tu marca sea mencionada en publicaciónes del sector. Incluso las menciones sin enlace contribuyen a la velocidad de marca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Participación comunitaria.&lt;/strong&gt; Participa de forma auténtica en hilos de Reddit, foros de WordPress y discusiones de Stack Overflow. Responde preguntas usando tu identidad de marca real.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;e-e-a-t-y-prueba-social-construyendo-señales-de-confianza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#e-e-a-t-y-prueba-social-construyendo-señales-de-confianza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;E-E-A-T y prueba social: construyendo señales de confianza&lt;/h2&gt;
&lt;h3 id=&quot;experiencia-especialización-autoridad-fiabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#experiencia-especialización-autoridad-fiabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Experiencia, Especialización, Autoridad, Fiabilidad&lt;/h3&gt;
&lt;p&gt;El marco E-E-A-T de Google se ha convertido en algo central para la evaluación de la calidad del contenido. Las redes sociales proporcionan múltiples vectores para demostrar cada componente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Experiencia.&lt;/strong&gt; Compartir resultados reales de proyectos, casos de estudio antes-y-después y contenido detrás de escenas en plataformas sociales demuestra la experiencia de primera mano que los evaluadores de calidad de Google buscan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Especialización.&lt;/strong&gt; El liderazgo de opinión consistente - artículos detallados en LinkedIn, hilos técnicos en Twitter, tutoriales en YouTube - construye un registro público de especialización que refuerza tus entidades de autor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Autoridad.&lt;/strong&gt; Cuando los pares del sector comparten, citan e interactúan con tu contenido en plataformas sociales, se crea una red de señales de autoridad. Ser etiquetado como fuente experta por periodistas o ser invitado a hablar en eventos (promovidos a través de redes sociales) contribuye a todo esto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fiabilidad.&lt;/strong&gt; Una presencia social transparente - respondiendo a comentarios de clientes, reconociendo errores, compartiendo resultados reales - construye señales de confianza que se extienden a la credibilidad de tu sitio web.&lt;/p&gt;
&lt;h3 id=&quot;construcción-de-entidad-de-autor-a-través-de-redes-sociales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construcción-de-entidad-de-autor-a-través-de-redes-sociales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construcción de entidad de autor a través de redes sociales&lt;/h3&gt;
&lt;p&gt;Google se centra cada vez más en comprender quién crea el contenido. Una entidad de autor fuerte - verificable a través de LinkedIn, Twitter/X, sitio web personal y publicaciónes del sector - ayuda a Google a asociar la especialización con contenido específico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consistencia multiplataforma.&lt;/strong&gt; Usa la misma foto profesional, biografía y handle en todas las plataformas. Enlaza tus perfiles sociales a las páginas de autor de tu sitio web usando datos estructurados (propiedad sameAs en el esquema Person).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Huella de contenido.&lt;/strong&gt; Pública consistentemente sobre tu área de especialización. Si tu sitio WordPress cubre SEO, tus publicaciónes de LinkedIn deberían reforzar ese enfoque temático. Señales mixtas - hoy publicando sobre SEO, mañana sobre jardinería - debilitan tu entidad de autor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verificación de credenciales.&lt;/strong&gt; Lista certificaciones, conferencias y publicaciónes en tu perfil de LinkedIn. Los algoritmos de Google pueden cruzar esta información para validar las afirmaciones de experiencia.&lt;/p&gt;
&lt;h2 id=&quot;optimización-de-búsqueda-social-posicionarse-más-allá-de-google&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-búsqueda-social-posicionarse-más-allá-de-google&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de búsqueda social: posicionarse más allá de Google&lt;/h2&gt;
&lt;h3 id=&quot;tiktok-como-motor-de-búsqueda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tiktok-como-motor-de-búsqueda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;TikTok como motor de búsqueda&lt;/h3&gt;
&lt;p&gt;Los datos internos de Google mostraron que aproximadamente el 40% de los usuarios de la Generación Z prefieren TikTok o Instagram sobre Google cuando buscan restaurantes locales, reseñas de productos, guías prácticas y recomendaciónes. En 2026, esta tendencia se ha expandido más allá de la Generación Z.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fundamentos del SEO de TikTok:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Palabras clave habladas.&lt;/strong&gt; El algoritmo de TikTok transcribe el audio. Di tu palabra clave objetivo claramente dentro de los primeros 3 segundos de tu vídeo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Texto en pantalla.&lt;/strong&gt; Incluye superposiciones de texto ricas en palabras clave que refuercen el tema tanto para los espectadores como para el algoritmo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización de descripciones.&lt;/strong&gt; Escribe descripciones con palabras clave relevantes. Evita las descripciones solo con hashtags - usa frases naturales que incorporen términos de búsqueda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ganchos de engagement.&lt;/strong&gt; El posicionamiento de búsqueda de TikTok pondera fuertemente el tiempo de visualización y el engagement. Estructura los vídeos con un gancho, entrega de valor y llamada a la acción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cruce con Google.&lt;/strong&gt; Google indexa vídeos de TikTok y los muestra en los resultados de búsqueda, particularmente para consultas de “cómo hacer” y reseñas. Un TikTok bien optimizado puede posicionarse en ambas plataformas simultáneamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;reddit-y-seo-de-foros&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#reddit-y-seo-de-foros&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Reddit y SEO de foros&lt;/h3&gt;
&lt;p&gt;Google ha aumentado dramáticamente la visibilidad del contenido de Reddit en los resultados de búsqueda desde su alianza de 2024. Los hilos de Reddit aparecen frecuentemente en fragmentos destacados y secciones de “Discusiones y foros”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de Reddit para impacto SEO:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Participación auténtica.&lt;/strong&gt; La comunidad de Reddit detecta y castiga la autopromoción. Construye karma y reputación ayudando genuinamente a otros antes de mencionar tu marca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respuestas extensas.&lt;/strong&gt; Las respuestas detalladas y expertas en subreddits relevantes se posicionan en Google. Escribe respuestas que se sostengan por sí mismás como contenido útil.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AMAs e hilos de expertos.&lt;/strong&gt; Organiza sesiones Pregúntame Lo Que Quieras en subreddits relevantes del sector. Estas generan engagement, backlinks y notoriedad de marca.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoriza menciones de marca.&lt;/strong&gt; Configura alertas para el nombre de tu marca en Reddit. Responde a preguntas y preocupaciones de forma rápida y útil.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;linkedin-para-visibilidad-de-búsqueda-b2b&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#linkedin-para-visibilidad-de-búsqueda-b2b&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;LinkedIn para visibilidad de búsqueda B2B&lt;/h3&gt;
&lt;p&gt;El contenido de LinkedIn aparece cada vez más en los resultados de Google para consultas profesionales y B2B. Los artículos de LinkedIn reciben un impulso de autoridad de dominio del dominio DR 98+ de LinkedIn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia SEO de LinkedIn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Artículos extensos.&lt;/strong&gt; Pública artículos detallados (no solo publicaciónes) en LinkedIn. Estos se indexan por Google y pueden posicionarse para palabras clave profesionales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Función de newsletter.&lt;/strong&gt; Los newsletters de LinkedIn construyen una base de suscriptores y envían contenido directamente a las bandejas de entrada, generando señales de engagement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfiles ricos en palabras clave.&lt;/strong&gt; Optimiza el titular, la sección “Acerca de” y las descripciones de experiencia de tu perfil de LinkedIn con palabras clave relevantes. Tu perfil en sí puede posicionarse en Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Engagement en comentarios.&lt;/strong&gt; Comentar activamente en publicaciónes del sector aumenta tu visibilidad en el algoritmo de LinkedIn, lo que lleva a más visitas al perfil y búsquedas de marca.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;estrategias-de-amplificación-de-contenido-que-generan-resultados-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-de-amplificación-de-contenido-que-generan-resultados-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias de amplificación de contenido que generan resultados SEO&lt;/h2&gt;
&lt;h3 id=&quot;el-volante-de-amplificación-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-volante-de-amplificación-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El volante de amplificación de contenido&lt;/h3&gt;
&lt;p&gt;La estrategia social-a-SEO más efectiva no es publicar enlaces a tu blog en redes sociales. Es crear un volante de contenido donde la actividad social genera descubrimiento orgánico, que genera backlinks, que mejora las posiciones, que genera más comparticiones sociales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Crea contenido que merezca enlaces.&lt;/strong&gt; Antes de cualquier estrategia social, necesitas contenido que las personas quieran referenciar - investigación original, guías completas, datos únicos o herramientas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Siembra en plataformas sociales.&lt;/strong&gt; Comparte el contenido de forma nativa en plataformas relevantes. En LinkedIn, escribe una publicación independiente que resuma los hallazgos clave y enlace al artículo completo. En Twitter/X, crea un hilo destacando los puntos de datos más convincentes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Participa en conversaciones.&lt;/strong&gt; No solo publiques y desaparezcas. Responde a cada comentario, contesta preguntas y añade ideas adicionales. Este engagement extiende la ventana de visibilidad del contenido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 4: Apunta a amplificadores.&lt;/strong&gt; Identifica periodistas, blogueros e influencers del sector que cubran tu tema. Comparte tu contenido con ellos personalmente, destacando por qué es relevante para su audiencia. Una sola mención de una fuente de alta autoridad puede generar docenas de enlaces derivados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 5: Reutiliza en múltiples plataformas.&lt;/strong&gt; Transforma publicaciónes de blog en explicadores de TikTok, episodios de podcast, carruseles de LinkedIn e infografías. Cada formato llega a un segmento de audiencia diferente y genera menciones de marca adicionales.&lt;/p&gt;
&lt;h3 id=&quot;medición-del-impacto-social-en-el-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medición-del-impacto-social-en-el-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medición del impacto social en el SEO&lt;/h3&gt;
&lt;p&gt;Rastrea estas métricas para entender cómo la actividad social influye en tu rendimiento de búsqueda:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Volumen de búsquedas de marca.&lt;/strong&gt; Usa Google Search Console para monitorizar las impresiones de consultas de marca a lo largo del tiempo. Los picos deberían correlacionarse con las campañas sociales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dominios referentes desde lo social.&lt;/strong&gt; Rastrea nuevos backlinks que se originan por el descubrimiento social usando Ahrefs o SEMrush.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico orgánico al contenido promocionado socialmente.&lt;/strong&gt; Compara el tráfico de búsqueda orgánica al contenido antes y después de la promoción social.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ruta de conversión social-a-sitio.&lt;/strong&gt; Usa parámetros UTM para rastrear cómo los visitantes sociales interactúan con tu sitio y si regresan a través de búsqueda orgánica más tarde.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;el-fediverso-y-la-distribución-propia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-fediverso-y-la-distribución-propia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El Fediverso y la distribución propia&lt;/h2&gt;
&lt;h3 id=&quot;por-qué-las-redes-sociales-descentralizadas-importan-para-el-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-las-redes-sociales-descentralizadas-importan-para-el-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué las redes sociales descentralizadas importan para el SEO&lt;/h3&gt;
&lt;p&gt;El Fediverso - la red de servidores interconectados que utilizan el protocolo ActivityPub (Mastodon, Threads, Pixelfed, Bluesky a través del protocolo AT) - representa un cambio fundamental en las redes sociales. Para los profesionales del SEO, la diferencia clave es la &lt;strong&gt;propiedad de la audiencia&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En plataformas centralizadas (Facebook, Instagram, TikTok), tu alcance depende enteramente del algoritmo de la plataforma. Un cambio puede reducir tu visibilidad un 80% de la noche a la mañana. En el Fediverso, los seguidores se conectan directamente a tu feed de contenido.&lt;/p&gt;
&lt;h3 id=&quot;integración-de-wordpress-y-activitypub&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#integración-de-wordpress-y-activitypub&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Integración de WordPress y ActivityPub&lt;/h3&gt;
&lt;p&gt;WordPress puede funcionar como un nodo del Fediverso a través del &lt;a href=&quot;https://wordpress.org/plugins/activitypub/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;plugin ActivityPub&lt;/a&gt;. Una vez activado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada autor en tu sitio WordPress obtiene un handle del Fediverso (ej., @&lt;a href=&quot;mailto:autor@tusitio.com&quot;&gt;autor@tusitio.com&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Los usuarios de Mastodon y Threads pueden seguir estos handles.&lt;/li&gt;
&lt;li&gt;Las nuevas publicaciónes del blog aparecen automáticamente en los feeds de los seguidores.&lt;/li&gt;
&lt;li&gt;Las respuestas desde el Fediverso aparecen como comentarios en tu blog.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Beneficios SEO de la integración con ActivityPub:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tráfico directo desde nuevas publicaciónes.&lt;/strong&gt; Cada nuevo artículo envía notificaciones a los seguidores sin filtrado algorítmico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generación de backlinks.&lt;/strong&gt; Los usuarios del Fediverso que descubren tu contenido pueden enlazarlo desde sus propios blogs y sitios web.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diversidad de menciones de marca.&lt;/strong&gt; Tu contenido aparece en miles de instancias del Fediverso, creando patrones de mención orgánicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refuerzo de entidad de autor.&lt;/strong&gt; Tu perfil de autor de WordPress se convierte en una identidad social verificable, fortaleciendo las señales E-E-A-T.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;estrategia-práctica-para-el-fediverso&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-práctica-para-el-fediverso&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia práctica para el Fediverso&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Instala el plugin ActivityPub en tu sitio WordPress.&lt;/li&gt;
&lt;li&gt;Configura perfiles de autor con biografías profesionales e imágenes de perfil.&lt;/li&gt;
&lt;li&gt;Promociona tu handle del Fediverso en otras plataformas (“Sígueme en Mastodon para actualizaciones sin publicidad”).&lt;/li&gt;
&lt;li&gt;Interactúa con la comunidad del Fediverso - impulsa el contenido de otras personas, responde a discusiones, participa en conversaciones de hashtags.&lt;/li&gt;
&lt;li&gt;Monitoriza las analíticas para rastrear el tráfico y engagement desde fuentes del Fediverso.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lista-de-verificación-de-optimización-por-plataforma&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lista-de-verificación-de-optimización-por-plataforma&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lista de verificación de optimización por plataforma&lt;/h2&gt;
&lt;h3 id=&quot;google-business-profile&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#google-business-profile&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Google Business Profile&lt;/h3&gt;
&lt;p&gt;Para negocios locales, tu Google Business Profile es el activo más importante relacionado con lo social para el SEO. Mantenlo actualizado con publicaciónes, fotos, respuestas a preguntas y gestión de reseñas. Las publicaciónes de GBP aparecen en los resultados del paquete local y pueden generar tráfico local significativo.&lt;/p&gt;
&lt;h3 id=&quot;youtube&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#youtube&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;YouTube&lt;/h3&gt;
&lt;p&gt;YouTube es el segundo motor de búsqueda más grande. Optimiza títulos, descripciones y etiquetas de vídeo con palabras clave objetivo. Crea marcadores de capítulos para vídeos largos. Los vídeos de YouTube se posicionan frecuentemente en la SERP principal de Google y en carruseles de vídeo.&lt;/p&gt;
&lt;h3 id=&quot;pinterest&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pinterest&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Pinterest&lt;/h3&gt;
&lt;p&gt;Pinterest funciona como un motor de búsqueda visual con una indexación significativa por parte de Google. Los pines de Pinterest se posicionan en la Búsqueda de Imágenes de Google y pueden generar tráfico long-tail durante meses o años después de la publicación. Optimiza las descripciones de los pines con palabras clave y usa texto alternativo.&lt;/p&gt;
&lt;h3 id=&quot;instagram&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#instagram&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Instagram&lt;/h3&gt;
&lt;p&gt;La funcionalidad de búsqueda de Instagram ha mejorado significativamente. Optimiza tu biografía con palabras clave, usa descripciones detalladas (no solo hashtags) y aprovecha la función de Guías para colecciones de contenido curado. El contenido de Instagram aparece ocasionalmente en la SERP de Google.&lt;/p&gt;
&lt;h2 id=&quot;errores-comunes-que-debes-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-que-debes-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes que debes evitar&lt;/h2&gt;
&lt;h3 id=&quot;error-1-tratar-las-redes-sociales-como-un-canal-de-distribución-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-1-tratar-las-redes-sociales-como-un-canal-de-distribución-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 1: Tratar las redes sociales como un canal de distribución de enlaces&lt;/h3&gt;
&lt;p&gt;Publicar “Nueva entrada del blog [enlace]” en cada plataforma es la peor estrategia social para el SEO. Las plataformas suprimen los enlaces externos, tu audiencia los ignora y no genera ninguna señal de engagement.&lt;/p&gt;
&lt;p&gt;En cambio, crea contenido nativo para cada plataforma que proporcione valor independiente y que naturalmente haga referencia a tu sitio web.&lt;/p&gt;
&lt;h3 id=&quot;error-2-comprar-engagement-social&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-2-comprar-engagement-social&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 2: Comprar engagement social&lt;/h3&gt;
&lt;p&gt;Los seguidores falsos, los me gusta comprados y los comentarios de bots no generan ningún valor SEO. No producen búsquedas de marca, ni backlinks, ni engagement genuino, y pueden dañar la reputación de tu marca si se descubren.&lt;/p&gt;
&lt;h3 id=&quot;error-3-ignorar-las-señales-sociales-negativas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-3-ignorar-las-señales-sociales-negativas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 3: Ignorar las señales sociales negativas&lt;/h3&gt;
&lt;p&gt;Si tu marca se discute negativamente en Reddit o sitios de reseñas, esto afecta tu entidad de marca. El sentimiento negativo en las discusiones sociales puede influir en cómo los evaluadores de calidad de Google perciben tu fiabilidad. Aborda las críticas de forma transparente y constructiva.&lt;/p&gt;
&lt;h3 id=&quot;error-4-identidad-de-marca-inconsistente-en-las-plataformas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-4-identidad-de-marca-inconsistente-en-las-plataformas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 4: Identidad de marca inconsistente en las plataformas&lt;/h3&gt;
&lt;p&gt;Usar diferentes nombres, handles, logos y descripciones en las plataformas debilita la asociación de entidades. Google cruza información de marca de múltiples fuentes. La consistencia refuerza tu entidad en el Knowledge Graph.&lt;/p&gt;
&lt;h3 id=&quot;error-5-descuidar-los-perfiles-sociales-en-los-datos-estructurados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#error-5-descuidar-los-perfiles-sociales-en-los-datos-estructurados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Error 5: Descuidar los perfiles sociales en los datos estructurados&lt;/h3&gt;
&lt;p&gt;El marcado schema de tu sitio web debería incluir propiedades sameAs que enlacen a todos los perfiles sociales oficiales. Esto ayuda a Google a conectar explícitamente tus identidades sociales con la entidad de tu sitio web.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;@type&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Organization&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;WPPoland&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  &quot;sameAs&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;https://www.linkedin.com/company/wppoland&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;https://twitter.com/wppoland&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    &quot;https://www.facebook.com/wppoland&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;medición-del-roi-impacto-de-las-redes-sociales-en-el-rendimiento-de-búsqueda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medición-del-roi-impacto-de-las-redes-sociales-en-el-rendimiento-de-búsqueda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medición del ROI: impacto de las redes sociales en el rendimiento de búsqueda&lt;/h2&gt;
&lt;h3 id=&quot;métricas-directas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métricas-directas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métricas directas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tráfico de referencia desde plataformas sociales&lt;/strong&gt; - rastreado a través de Google Analytics 4.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversiones asistidas por redes sociales&lt;/strong&gt; - atribución multitoque que muestra lo social en la ruta de conversión.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nuevos backlinks correlacionados con campañas sociales&lt;/strong&gt; - rastreados a través de Ahrefs/SEMrush.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;métricas-indirectas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#métricas-indirectas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Métricas indirectas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Crecimiento de consultas de búsqueda de marca&lt;/strong&gt; - tendencias de impresiones de marca en Google Search Console.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aparición o enriquecimiento del Knowledge Panel&lt;/strong&gt; - activado por señales de entidad fuertes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adquisición de fragmentos destacados&lt;/strong&gt; - el contenido con señales de engagement fuertes a menudo obtiene fragmentos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejora del CTR orgánico&lt;/strong&gt; - el reconocimiento de marca desde redes sociales aumenta las tasas de clics en los resultados de búsqueda.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;marco-de-atribución&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marco-de-atribución&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marco de atribución&lt;/h3&gt;
&lt;p&gt;Implementa un modelo de atribución sencillo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Etiqueta todo el contenido social con parámetros UTM.&lt;/li&gt;
&lt;li&gt;Rastrea la atribución de primer toque y último toque en GA4.&lt;/li&gt;
&lt;li&gt;Monitoriza ventanas de conversión asistida de 30 días.&lt;/li&gt;
&lt;li&gt;Compara el rendimiento de búsqueda orgánica del contenido con y sin promoción social.&lt;/li&gt;
&lt;li&gt;Rastrea las tendencias de consultas de búsqueda de marca en relación con el calendario de campañas sociales.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;plan-de-acción-construyendo-una-estrategia-social-seo-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#plan-de-acción-construyendo-una-estrategia-social-seo-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Plan de acción: construyendo una estrategia Social-SEO en 2026&lt;/h2&gt;
&lt;h3 id=&quot;mes-1-fundamentos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-1-fundamentos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 1: Fundamentos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Audita la presencia de marca en todas las plataformas sociales principales.&lt;/li&gt;
&lt;li&gt;Asegura NAP, biografías e identidad visual consistentes.&lt;/li&gt;
&lt;li&gt;Implementa datos estructurados sameAs en tu sitio web.&lt;/li&gt;
&lt;li&gt;Instala el plugin ActivityPub en WordPress.&lt;/li&gt;
&lt;li&gt;Configura monitorización de menciones de marca (Google Alerts, Mention, Brand24).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mes-2-motor-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-2-motor-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 2: Motor de contenido&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Crea un calendario de contenido que coordine publicaciónes del blog y redes sociales.&lt;/li&gt;
&lt;li&gt;Desarrolla formatos de contenido específicos por plataforma (artículos de LinkedIn, vídeos de TikTok, contribuciones en Reddit).&lt;/li&gt;
&lt;li&gt;Comienza a participar regularmente en 2-3 comunidades relevantes del sector.&lt;/li&gt;
&lt;li&gt;Lanza un programa de defensa de empleados si es aplicable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mes-3-amplificación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mes-3-amplificación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mes 3: Amplificación&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Identifica y construye relaciones con 20 amplificadores del sector.&lt;/li&gt;
&lt;li&gt;Lanza un contenido basado en datos con promoción social coordinada.&lt;/li&gt;
&lt;li&gt;Mide el impacto inicial en el volumen de búsquedas de marca y la adquisición de backlinks.&lt;/li&gt;
&lt;li&gt;Refina la estrategia basándote en datos de rendimiento específicos por plataforma.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;continuamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#continuamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Continuamente&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Mantén una cadencia de publicación semanal en las plataformas principales.&lt;/li&gt;
&lt;li&gt;Monitoriza las tendencias de velocidad de marca mensualmente.&lt;/li&gt;
&lt;li&gt;Realiza auditorías trimestrales del impacto social-a-SEO.&lt;/li&gt;
&lt;li&gt;Adáptate a los cambios de algoritmo de las plataformas y nuevas funciones de búsqueda social.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Las redes sociales y el SEO no son disciplinas separadas - son componentes interconectados de una estrategia integral de visibilidad digital. Aunque las señales sociales no influyen directamente en el algoritmo de posicionamiento de Google, los efectos indirectos - velocidad de marca, amplificación de contenido, refuerzo de E-E-A-T y presencia de búsqueda multiplataforma - hacen de las redes sociales una parte esencial de cualquier programa SEO serio en 2026.&lt;/p&gt;
&lt;p&gt;Las marcas que ganan en la búsqueda son las marcas que existen en todos los lugares donde su audiencia mira - en Google, en TikTok, en Reddit, en LinkedIn y en el Fediverso. Construye una presencia que cree valor genuino en cada plataforma, y los beneficios SEO seguirán de forma natural.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y de visibilidad&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">seo</category><category domain="tag">social-media</category><category domain="tag">e-e-a-t</category><category domain="tag">brand-signals</category><enclosure url="https://wppoland.com/images/og/wordpress-developer.jpg" type="image/jpeg"/></item><item><title>Por qué los esquemás de enlaces no funcionan en 2026: penalizaciones de Google, detección de SpamBrain y alternativas White-Hat para la adquisición de enlaces basada en contenido</title><link>https://wppoland.com/es/link-exchange-buying-strategies/</link><guid isPermaLink="true">https://wppoland.com/es/link-exchange-buying-strategies/</guid><description>Un análisis exhaustivo de por qué el intercambio de enlaces, la compra de enlaces y los esquemás de enlaces fracasan en 2026. Cubre el algoritmo SpamBrain de Google, penalizaciones por acciones manuales, casos de estudio reales y alternativas white-hat probadas, incluyendo adquisición de enlaces basada en contenido, PR digital y estrategias de autoridad temática.</description><pubDate>Sat, 26 Sep 2009 10:59:09 GMT</pubDate><content:encoded>&lt;p&gt;Cuando este artículo fue publicado originalmente en 2009, los sistemas de intercambio de enlaces (SWL - Systemy Wymiany Linków) y la compra de enlaces eran tácticas SEO comunes en Europa Central. Kaspar Szymański de Google (entonces analista de webspam) advirtió sobre estas prácticas, pero muchas agencias y propietarios de sitios web ignoraron las advertencias.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Diecisiete años después, el veredicto es claro: los esquemás de enlaces no funcionan en 2026. El algoritmo SpamBrain de Google, mejorado con capacidades de inteligencia artificial desde 2024, detecta y penaliza patrones de enlaces manipulativos con una precisión sin precedentes. Este artículo explica exactamente por qué los esquemás de enlaces fracasan, cuáles son las consecuencias reales y qué alternativas probadas existen.&lt;/p&gt;
&lt;h2 id=&quot;cómo-google-detecta-los-esquemás-de-enlaces-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-google-detecta-los-esquemás-de-enlaces-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo Google detecta los esquemás de enlaces en 2026&lt;/h2&gt;
&lt;h3 id=&quot;spambrain-análisis-del-gráfico-de-enlaces-potenciado-por-ia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#spambrain-análisis-del-gráfico-de-enlaces-potenciado-por-ia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;SpamBrain: análisis del gráfico de enlaces potenciado por IA&lt;/h3&gt;
&lt;p&gt;SpamBrain es el sistema de detección de spam basado en inteligencia artificial de Google, anunciado por primera vez en 2018 y significativamente mejorado entre 2022 y 2025. Analiza el gráfico completo de enlaces de la web para identificar patrones no naturales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agrupamiento del gráfico de enlaces&lt;/strong&gt;: SpamBrain identifica grupos de sitios que se enlazan entre sí más de lo esperado por azar, revelando redes de enlaces y anillos de intercambio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis temporal&lt;/strong&gt;: Los enlaces que aparecen en masa en fechas específicas, o siguen calendarios de publicación regulares, son marcados como potencialmente comprados o automatizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribución de anchor text&lt;/strong&gt;: La concentración antinatural de anchor text comercial (“comprar silla ergonómica barata”) señala manipulación. Los perfiles de enlaces naturales muestran anclas diversas, principalmente de marca y basadas en URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlación con la calidad del contenido&lt;/strong&gt;: SpamBrain cruza referencias de los sitios enlazantes con señales de calidad del contenido. Los enlaces de sitios con contenido delgado, sitios autogenerados o sitios con enlaces salientes desproporcionados son devaluados o marcados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de entidades&lt;/strong&gt;: SpamBrain evalúa si el sitio enlazante tiene una relación temática genuina con el sitio enlazado. Un blog de cocina que enlaza a una tienda de muebles recibe un tratamiento diferente al de una revista de diseño de interiores que enlaza a la misma tienda de muebles.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;revisiones-manuales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#revisiones-manuales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Revisiones manuales&lt;/h3&gt;
&lt;p&gt;El equipo de Calidad de Búsqueda de Google realiza revisiones manuales activadas por señales algorítmicas, informes de spam de competidores o auditorías rutinarias. Los revisores manuales comprueban:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si el contenido enlazado proporciona valor editorial genuino&lt;/li&gt;
&lt;li&gt;Si existe una relación financiera entre los sitios (enlaces pagados)&lt;/li&gt;
&lt;li&gt;Si la ubicación del enlace parece natural (contextual vs pie de página/barra lateral)&lt;/li&gt;
&lt;li&gt;Si el sitio participa en redes de enlaces conocidas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;actualizaciones-de-spam-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#actualizaciones-de-spam-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Actualizaciones de spam de enlaces&lt;/h3&gt;
&lt;p&gt;Google despliega regularmente actualizaciones de spam de enlaces (2022, 2023, 2024) que ajustan el peso otorgado a los enlaces identificados como spam. Estas actualizaciones pueden causar caídas repentinas en las posiciones de sitios que dependían de enlaces manipulativos, incluso sin una acción manual formal.&lt;/p&gt;
&lt;h2 id=&quot;el-coste-real-de-las-penalizaciones-por-esquemás-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-coste-real-de-las-penalizaciones-por-esquemás-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El coste real de las penalizaciones por esquemás de enlaces&lt;/h2&gt;
&lt;h3 id=&quot;caso-de-estudio-1-sitio-de-e-commerce-penalizado-por-enlaces-comprados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-1-sitio-de-e-commerce-penalizado-por-enlaces-comprados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de estudio 1: sitio de e-commerce penalizado por enlaces comprados&lt;/h3&gt;
&lt;p&gt;Un minorista de comercio electrónico de tamaño medio en Polonia compró aproximadamente 200 enlaces al mes en un marketplace de enlaces a un coste promedio de 30 EUR por enlace (6.000 EUR/mes). Después de 8 meses (48.000 EUR invertidos), el sitio recibió una acción manual por “Enlaces artificiales dirigidos a tu sitio”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consecuencias&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El tráfico orgánico cayó un 78% en dos semanas&lt;/li&gt;
&lt;li&gt;Los ingresos por búsqueda orgánica cayeron de 85.000 EUR/mes a 18.700 EUR/mes&lt;/li&gt;
&lt;li&gt;La recuperación requirió: envío de archivo de desautorización, solicitudes de eliminación de enlaces, mejoras en la calidad del contenido y una solicitud formal de reconsideración&lt;/li&gt;
&lt;li&gt;Tiempo de recuperación: 7 meses&lt;/li&gt;
&lt;li&gt;Coste total de la penalización: 48.000 EUR (compra de enlaces) + 463.000 EUR (ingresos perdidos) + 22.000 EUR (honorarios de agencia de limpieza) = &lt;strong&gt;533.000 EUR&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;caso-de-estudio-2-empresa-saas-atrapada-en-una-red-de-intercambio-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-2-empresa-saas-atrapada-en-una-red-de-intercambio-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de estudio 2: empresa SaaS atrapada en una red de intercambio de enlaces&lt;/h3&gt;
&lt;p&gt;Una empresa SaaS participó en una red informal de intercambio de enlaces con otras 40 empresas tecnológicas. Cada empresa mantenía una página de “partners” o “recursos” enlazando a los demás miembros. SpamBrain de Google identificó el patrón de la red.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consecuencias&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descenso algorítmico (sin notificación de acción manual)&lt;/li&gt;
&lt;li&gt;Declive gradual del tráfico orgánico del 45% durante 3 meses&lt;/li&gt;
&lt;li&gt;La empresa no se dio cuenta de que los enlaces eran la causa hasta que contrató un auditor SEO&lt;/li&gt;
&lt;li&gt;La recuperación requirió eliminar todos los enlaces de intercambio y construir enlaces nuevos y legítimos&lt;/li&gt;
&lt;li&gt;Tiempo de recuperación: 5 meses después de identificar el problema&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;caso-de-estudio-3-enlaces-pbn-vendidos-por-una-agencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#caso-de-estudio-3-enlaces-pbn-vendidos-por-una-agencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Caso de estudio 3: enlaces PBN vendidos por una agencia&lt;/h3&gt;
&lt;p&gt;Una agencia de marketing vendió “enlaces editoriales de alta calidad” a sus clientes desde una PBN (Red Privada de Blogs) de 150 sitios que controlaban. Cuando Google identificó la red, todos los sitios de los clientes se vieron afectados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consecuencias&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;23 sitios de clientes recibieron acciones manuales simultáneamente&lt;/li&gt;
&lt;li&gt;Pérdida media de tráfico orgánico: 65%&lt;/li&gt;
&lt;li&gt;Múltiples clientes demandaron a la agencia por daños y perjuicios&lt;/li&gt;
&lt;li&gt;La agencia cerró en 6 meses&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tipos-de-esquemás-de-enlaces-y-su-tasa-de-detección-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-esquemás-de-enlaces-y-su-tasa-de-detección-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de esquemás de enlaces y su tasa de detección en 2026&lt;/h2&gt;

































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Esquema de enlaces&lt;/th&gt;&lt;th&gt;Riesgo de detección&lt;/th&gt;&lt;th&gt;Penalización típica&lt;/th&gt;&lt;th&gt;Tiempo de recuperación&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Enlaces comprados (marketplaces)&lt;/td&gt;&lt;td&gt;Muy alto&lt;/td&gt;&lt;td&gt;Acción manual&lt;/td&gt;&lt;td&gt;4-8 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PBN (Red Privada de Blogs)&lt;/td&gt;&lt;td&gt;Muy alto&lt;/td&gt;&lt;td&gt;Acción manual o algorítmica&lt;/td&gt;&lt;td&gt;6-12 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Intercambio recíproco de enlaces (a escala)&lt;/td&gt;&lt;td&gt;Alto&lt;/td&gt;&lt;td&gt;Devaluación algorítmica&lt;/td&gt;&lt;td&gt;3-6 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Granjas de guest posts (enfocadas en enlaces)&lt;/td&gt;&lt;td&gt;Alto&lt;/td&gt;&lt;td&gt;Devaluación algorítmica&lt;/td&gt;&lt;td&gt;2-4 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ubicación de enlaces en pie de página/barra lateral&lt;/td&gt;&lt;td&gt;Moderado-Alto&lt;/td&gt;&lt;td&gt;Devaluación algorítmica&lt;/td&gt;&lt;td&gt;2-3 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Envíos automatizados a directorios&lt;/td&gt;&lt;td&gt;Moderado&lt;/td&gt;&lt;td&gt;Devaluación algorítmica&lt;/td&gt;&lt;td&gt;1-2 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Spam en comentarios/foros&lt;/td&gt;&lt;td&gt;Muy alto&lt;/td&gt;&lt;td&gt;Algorítmica + potencial manual&lt;/td&gt;&lt;td&gt;1-3 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Esquemás de enlaces por becas&lt;/td&gt;&lt;td&gt;Alto&lt;/td&gt;&lt;td&gt;Devaluación algorítmica&lt;/td&gt;&lt;td&gt;2-4 meses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Contenido patrocinado sin rel=sponsored&lt;/td&gt;&lt;td&gt;Moderado&lt;/td&gt;&lt;td&gt;Devaluación algorítmica&lt;/td&gt;&lt;td&gt;1-2 meses&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;la-economía-por-qué-los-esquemás-de-enlaces-son-malas-inversiones&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-economía-por-qué-los-esquemás-de-enlaces-son-malas-inversiones&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La economía: por qué los esquemás de enlaces son malas inversiones&lt;/h2&gt;
&lt;p&gt;Incluso ignorando el riesgo de penalización, los esquemás de enlaces son inversiones deficientes en comparación con las alternativas white-hat:&lt;/p&gt;
&lt;h3 id=&quot;comparación-de-costes-proyección-a-12-meses&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comparación-de-costes-proyección-a-12-meses&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comparación de costes (proyección a 12 meses)&lt;/h3&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Enfoque&lt;/th&gt;&lt;th&gt;Coste mensual&lt;/th&gt;&lt;th&gt;Enlaces obtenidos&lt;/th&gt;&lt;th&gt;Calidad media del enlace&lt;/th&gt;&lt;th&gt;Riesgo de penalización&lt;/th&gt;&lt;th&gt;ROI a 12 meses&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Compra de enlaces (marketplace)&lt;/td&gt;&lt;td&gt;3.000 EUR&lt;/td&gt;&lt;td&gt;30-50&lt;/td&gt;&lt;td&gt;Baja (DA 20-35)&lt;/td&gt;&lt;td&gt;Muy alto&lt;/td&gt;&lt;td&gt;Negativo (penalización)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mantenimiento de PBN&lt;/td&gt;&lt;td&gt;2.500 EUR&lt;/td&gt;&lt;td&gt;20-30&lt;/td&gt;&lt;td&gt;Baja-Media&lt;/td&gt;&lt;td&gt;Muy alto&lt;/td&gt;&lt;td&gt;Negativo (penalización)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PR digital&lt;/td&gt;&lt;td&gt;4.000 EUR&lt;/td&gt;&lt;td&gt;8-15&lt;/td&gt;&lt;td&gt;Alta (DA 50-80)&lt;/td&gt;&lt;td&gt;Cero&lt;/td&gt;&lt;td&gt;Positivo (compuesto)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Adquisición basada en contenido&lt;/td&gt;&lt;td&gt;3.500 EUR&lt;/td&gt;&lt;td&gt;5-10&lt;/td&gt;&lt;td&gt;Media-Alta&lt;/td&gt;&lt;td&gt;Cero&lt;/td&gt;&lt;td&gt;Positivo (compuesto)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HARO/Connectively&lt;/td&gt;&lt;td&gt;1.000 EUR&lt;/td&gt;&lt;td&gt;3-6&lt;/td&gt;&lt;td&gt;Alta (DA 40-70)&lt;/td&gt;&lt;td&gt;Cero&lt;/td&gt;&lt;td&gt;Positivo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;La diferencia fundamental: los enlaces comprados son un activo que se deprecia (pierden valor con el tiempo a medida que Google los detecta), mientras que los enlaces ganados son un activo que se aprecia (ganan autoridad compuesta con el tiempo).&lt;/p&gt;
&lt;h2 id=&quot;siete-alternativas-white-hat-que-realmente-funcionan&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#siete-alternativas-white-hat-que-realmente-funcionan&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Siete alternativas white-hat que realmente funcionan&lt;/h2&gt;
&lt;h3 id=&quot;1-investigación-original-y-contenido-basado-en-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-investigación-original-y-contenido-basado-en-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Investigación original y contenido basado en datos&lt;/h3&gt;
&lt;p&gt;Crea investigación propietaria que periodistas y profesionales del sector quieran citar. Esta es la táctica de link building con mayor retorno de inversión disponible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo ejecutarla&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encuesta a más de 500 personas de tu sector sobre un tema relevante&lt;/li&gt;
&lt;li&gt;Analiza y visualiza los hallazgos en un informe profesional&lt;/li&gt;
&lt;li&gt;Crea una página de destino con los hallazgos clave y un PDF descargable&lt;/li&gt;
&lt;li&gt;Presenta los hallazgos a periodistas a través de HARO/Connectively y outreach directo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultados esperados&lt;/strong&gt;: 15-50 enlaces editoriales por informe de investigación importante&lt;/p&gt;
&lt;h3 id=&quot;2-outreach-de-pr-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-outreach-de-pr-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Outreach de PR digital&lt;/h3&gt;
&lt;p&gt;Presenta historias de interés periodístico, comentarios de expertos y datos a periodistas de publicaciónes relevantes para tu sector.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo ejecutarla&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Construye una lista de medios de 50-100 periodistas objetivo&lt;/li&gt;
&lt;li&gt;Crea activos de contenido de interés periodístico (investigaciónes, análisis, perspectivas de expertos)&lt;/li&gt;
&lt;li&gt;Elabora propuestas personalizadas para cada periodista&lt;/li&gt;
&lt;li&gt;Haz un seguimiento una vez y luego continúa&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lee nuestra guía detallada sobre &lt;a href=&quot;/es/getting-links-media-pr/&quot;&gt;PR digital para link building&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;3-clusters-de-contenido-para-autoridad-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-clusters-de-contenido-para-autoridad-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Clusters de contenido para autoridad temática&lt;/h3&gt;
&lt;p&gt;Crea centros de contenido exhaustivos que se conviertan en el recurso definitivo sobre un tema. Otros sitios enlazan naturalmente a los mejores recursos disponibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo ejecutarla&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Elige un tema donde tengas experiencia genuina&lt;/li&gt;
&lt;li&gt;Crea una página pilar (3.000-5.000 palabras) que cubra el tema de forma exhaustiva&lt;/li&gt;
&lt;li&gt;Escribe 8-12 artículos de soporte que cubran subtemas en profundidad&lt;/li&gt;
&lt;li&gt;Enlaza internamente todos los artículos dentro del cluster&lt;/li&gt;
&lt;li&gt;Actualiza regularmente para mantener la frescura y precisión&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultados esperados&lt;/strong&gt;: 10-30 enlaces orgánicos por cluster de contenido maduro (más de 12 meses)&lt;/p&gt;
&lt;h3 id=&quot;4-herramientas-y-recursos-gratuitos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-herramientas-y-recursos-gratuitos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Herramientas y recursos gratuitos&lt;/h3&gt;
&lt;p&gt;Crea una herramienta gratuita, calculadora, plantilla o recurso que las personas de tu sector encuentren lo suficientemente útil como para guardar en favoritos y compartir.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejemplos&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calculadoras de ROI para tu sector&lt;/li&gt;
&lt;li&gt;Herramientas de comparación de benchmarks&lt;/li&gt;
&lt;li&gt;Plantillas y listas de verificación (PDFs descargables)&lt;/li&gt;
&lt;li&gt;Visualizaciones de datos interactivas&lt;/li&gt;
&lt;li&gt;Endpoints de API gratuitos con datos útiles&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultados esperados&lt;/strong&gt;: 5-20 enlaces por herramienta, con enlaces orgánicos continuos a medida que crece el uso&lt;/p&gt;
&lt;h3 id=&quot;5-haroconnectively-como-fuente-experta&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-haroconnectively-como-fuente-experta&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. HARO/Connectively como fuente experta&lt;/h3&gt;
&lt;p&gt;Responde a consultas de periodistas en HARO/Connectively como experto con nombre y credenciales verificables.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo ejecutarla&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Regístrate en HARO/Connectively con tu perfil de experto&lt;/li&gt;
&lt;li&gt;Monitoriza consultas 3 veces al día buscando temas relevantes&lt;/li&gt;
&lt;li&gt;Responde en menos de 2 horas con respuestas sustanciales y citables&lt;/li&gt;
&lt;li&gt;Incluye credenciales, datos específicos y disponibilidad para seguimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultados esperados&lt;/strong&gt;: 2-5 enlaces de alta autoridad al mes con esfuerzo constante&lt;/p&gt;
&lt;h3 id=&quot;6-alianzas-estratégicas-con-el-sector&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-alianzas-estratégicas-con-el-sector&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Alianzas estratégicas con el sector&lt;/h3&gt;
&lt;p&gt;Asóciate con asociaciones industriales, organizaciónes profesionales, instituciones educativas y negocios complementarios para la creación mutua de contenido y el intercambio de recursos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo ejecutarla&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica 10-20 organizaciónes relevantes para tu sector&lt;/li&gt;
&lt;li&gt;Propón contenido colaborativo (investigación coautorizada, webinars conjuntos, compilaciones de recursos)&lt;/li&gt;
&lt;li&gt;Ofrece valor genuino (datos, experiencia, acceso a audiencia) a cambio de la alianza&lt;/li&gt;
&lt;li&gt;Formaliza las alianzas con acuerdos de intercambio de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultados esperados&lt;/strong&gt;: 3-8 enlaces contextuales de alta calidad por alianza al año&lt;/p&gt;
&lt;h3 id=&quot;7-participación-comunitaria-y-liderazgo-de-opinión&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-participación-comunitaria-y-liderazgo-de-opinión&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Participación comunitaria y liderazgo de opinión&lt;/h3&gt;
&lt;p&gt;Conviértete en un miembro activo y contribuyente de las comunidades de tu sector. Esto incluye conferencias, meetups, podcasts, foros profesionales y proyectos de código abierto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cómo ejecutarla&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Habla en conferencias y meetups del sector (las grabaciones de las charlas reciben enlaces)&lt;/li&gt;
&lt;li&gt;Contribuye a proyectos de código abierto relevantes para tu sector&lt;/li&gt;
&lt;li&gt;Participa de forma sustancial en foros y comunidades profesionales&lt;/li&gt;
&lt;li&gt;Pública contenido de liderazgo de opinión en LinkedIn y plataformas del sector&lt;/li&gt;
&lt;li&gt;Ofrece tu experiencia pro bono a organizaciónes sin ánimo de lucro de tu campo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resultados esperados&lt;/strong&gt;: 5-15 enlaces diversos al año de actividades comunitarias, además de la construcción de marca que amplifica todos los demás esfuerzos de link building&lt;/p&gt;
&lt;h2 id=&quot;cómo-auditar-tu-perfil-de-enlaces-existente-para-detectar-riesgos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-auditar-tu-perfil-de-enlaces-existente-para-detectar-riesgos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo auditar tu perfil de enlaces existente para detectar riesgos&lt;/h2&gt;
&lt;p&gt;Si tu sitio ha estado activo durante años, puede haber acumulado enlaces arriesgados de campañas pasadas o trabajo de agencias. Aquí te explicamos cómo evaluar tu riesgo:&lt;/p&gt;
&lt;h3 id=&quot;paso-1-exporta-todos-los-backlinks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-exporta-todos-los-backlinks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Exporta todos los backlinks&lt;/h3&gt;
&lt;p&gt;Descarga tu perfil completo de backlinks de Ahrefs, SEMrush y Google Search Console. Cruza las tres fuentes para obtener una imagen completa.&lt;/p&gt;
&lt;h3 id=&quot;paso-2-marca-patrones-sospechosos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-marca-patrones-sospechosos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Marca patrones sospechosos&lt;/h3&gt;
&lt;p&gt;Busca:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fechas de cluster&lt;/strong&gt;: Gran cantidad de enlaces que aparecen en la misma fecha (comprados en masa)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitios no relacionados&lt;/strong&gt;: Enlaces de sitios sin conexión temática con tu negocio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concentración de anchor text&lt;/strong&gt;: Más del 5% del anchor text con palabras clave comerciales exactas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redes de enlaces conocidas&lt;/strong&gt;: Enlaces de sitios que aparecen en múltiples marketplaces de enlaces&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indicadores de baja calidad&lt;/strong&gt;: Sitios sin tráfico real, contenido delgado, exceso de enlaces salientes o sin propósito editorial claro&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-3-toma-medidas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-toma-medidas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Toma medidas&lt;/h3&gt;
&lt;p&gt;Para los enlaces identificados como arriesgados:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Contacta con el webmaster y solicita la eliminación (documenta todos los intentos)&lt;/li&gt;
&lt;li&gt;Si la eliminación no es posible, añade el dominio a un archivo de desautorización de Google&lt;/li&gt;
&lt;li&gt;Envía el archivo de desautorización a través de Google Search Console&lt;/li&gt;
&lt;li&gt;Monitoriza posiciones y tráfico durante 4-6 semanas después del envío&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;paso-4-implementa-monitorización-continua&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-implementa-monitorización-continua&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Implementa monitorización continua&lt;/h3&gt;
&lt;p&gt;Configura monitorización mensual de backlinks para detectar nuevos enlaces sospechosos de forma temprana:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alertas de nuevos backlinks en Ahrefs/SEMrush&lt;/li&gt;
&lt;li&gt;Revisión del informe de enlaces en Google Search Console&lt;/li&gt;
&lt;li&gt;Análisis automatizado de distribución de anchor text&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;la-única-forma-aceptable-de-colocación-de-enlaces-de-pago&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-única-forma-aceptable-de-colocación-de-enlaces-de-pago&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La única forma aceptable de colocación de enlaces “de pago”&lt;/h2&gt;
&lt;p&gt;Existe un escenario legítimo para la colocación de enlaces de pago: &lt;strong&gt;contenido patrocinado con divulgación adecuada&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Si pagas por una colocación (artículo patrocinado, publirreportaje, contenido de marca), el enlace debe incluir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Atributo &lt;code&gt;rel=&quot;sponsored&quot;&lt;/code&gt; (o &lt;code&gt;rel=&quot;nofollow&quot;&lt;/code&gt; como mínimo)&lt;/li&gt;
&lt;li&gt;Divulgación clara de que el contenido está patrocinado&lt;/li&gt;
&lt;li&gt;Cumplimiento de las directrices de la FTC (EE.UU.) o regulaciones locales equivalentes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los enlaces patrocinados con atributos adecuados no transmitirán PageRank y no mejorarán directamente las posiciones. Son legítimos para la notoriedad de marca, el tráfico de referencia y la construcción de audiencia, no para el link building SEO.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-el-coste-de-hacerlo-bien-vs-hacerlo-mal&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-el-coste-de-hacerlo-bien-vs-hacerlo-mal&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión: el coste de hacerlo bien vs hacerlo mal&lt;/h2&gt;
&lt;p&gt;La elección en 2026 no es entre link building barato y link building caro. Es entre:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opción A: Esquemás de enlaces&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mejoras de posicionamiento a corto plazo (3-6 meses)&lt;/li&gt;
&lt;li&gt;Alto riesgo de penalización (pérdida de tráfico del 50-90%)&lt;/li&gt;
&lt;li&gt;Coste de recuperación: 15.000-50.000+ EUR en honorarios de agencia, ingresos perdidos y esfuerzo de reconstrucción&lt;/li&gt;
&lt;li&gt;Destrucción total de la fiabilidad del canal de búsqueda orgánica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Opción B: Adquisición de enlaces basada en contenido&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resultados iniciales más lentos (4-8 meses hasta impacto significativo)&lt;/li&gt;
&lt;li&gt;Cero riesgo de penalización&lt;/li&gt;
&lt;li&gt;Retornos compuestos con el tiempo (los enlaces atraen más enlaces)&lt;/li&gt;
&lt;li&gt;Construye autoridad de marca genuina y señales E-E-A-T&lt;/li&gt;
&lt;li&gt;Crea activos de contenido valiosos que sirven para múltiples propósitos de negocio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las organizaciónes que ganan en SEO en 2026 no son las que encontraron atajos inteligentes. Son las que invirtieron en experiencia genuina, contenido original y relaciones reales. Los esquemás de enlaces no son solo arriesgados - son una asignación fundamentalmente errónea de recursos en una era donde la autenticidad es la señal SEO más valiosa.&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category domain="tag">link building</category><category domain="tag">google penalties</category><category domain="tag">spambrain</category><category domain="tag">white hat seo</category><category domain="tag">content marketing</category><category domain="tag">e-e-a-t</category><enclosure url="https://wppoland.com/images/og/kaspar-swl.jpg" type="image/jpeg"/></item><item><title>PR digital para link building en 2026: contacto con periodistas, investigación original y citas de expertos que generan backlinks de alta autoridad</title><link>https://wppoland.com/es/getting-links-media-pr/</link><guid isPermaLink="true">https://wppoland.com/es/getting-links-media-pr/</guid><description>Una guía completa para obtener backlinks editoriales de alta autoridad a través del PR digital en 2026. Cubre el contacto con periodistas, HARO/Connectively, creación de contenido basado en datos, informes de investigación original, comentarios de expertos, newsjacking y medicion del ROI de adquisicion de enlaces via PR.</description><pubDate>Sat, 19 Sep 2009 10:59:09 GMT</pubDate><content:encoded>&lt;p&gt;En 2009, cuando este artículo fue publicado por primera vez, “obtener enlaces a través de los medios” significaba esperar que un periodico mencionara tu sitio web en la edicion impresa y alguien escribiera la URL en su navegador. El concepto de PR digital como disciplina sistemática de link building aun no existia.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En 2026, el PR digital es la estrategia más efectiva para obtener backlinks editoriales de alta autoridad. Combina la credibilidad de las relaciones publicas tradicionales con la medibilidad del SEO, produciendo enlaces de publicaciónes de confianza que son casí imposibles de adquirir a través de cualquier otro método.&lt;/p&gt;
&lt;h2 id=&quot;por-que-los-enlaces-de-pr-son-el-estándar-de-oro&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-los-enlaces-de-pr-son-el-estándar-de-oro&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que los enlaces de PR son el estándar de oro&lt;/h2&gt;
&lt;p&gt;No todos los backlinks son iguales. Un único enlace editorial de una publicación importante puede tener más impacto en el posicionamiento que cientos de envios a directorios, guest posts o enlaces de perfiles sociales. He aquí por que:&lt;/p&gt;
&lt;h3 id=&quot;transferencia-de-autoridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#transferencia-de-autoridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Transferencia de autoridad&lt;/h3&gt;
&lt;p&gt;Cuando un periodista en una publicación con DA 80+ enlaza a tu sitio como fuente, ese enlace transfiere una autoridad significativa. Los algoritmos de posicionamiento de Google ponderan los enlaces de fuentes editoriales de confianza mucho más que los enlaces de contenido generado por usuarios, foros o comentarios de blog.&lt;/p&gt;
&lt;h3 id=&quot;señales-de-confianza&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-confianza&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de confianza&lt;/h3&gt;
&lt;p&gt;Los enlaces editoriales de publicaciónes reconocidas sirven como señales E-E-A-T (Experiencia, Expertise, Autoridad, Confiabilidad). Le dicen a Google que editores humanos creibles han evaluado tu contenido y lo encontraron digno de citar.&lt;/p&gt;
&lt;h3 id=&quot;durabilidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#durabilidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Durabilidad&lt;/h3&gt;
&lt;p&gt;Los enlaces editoriales obtenidos a través de PR estan entre los backlinks más duraderos. A diferencia de los enlaces de guest posts que pueden ser eliminados durante rediseños de sitios, las menciones editoriales en artículos de noticias tienden a persistir durante años. Los archivos de noticias rara vez se eliminan.&lt;/p&gt;
&lt;h3 id=&quot;tráfico-de-referencia&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tráfico-de-referencia&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tráfico de referencia&lt;/h3&gt;
&lt;p&gt;A diferencia de muchos enlaces enfocados en SEO, los enlaces de PR generan tráfico de referencia real. Los lectores de publicaciónes importantes hacen clic en las fuentes que encuentran interesantes, entregando visitantes comprometidos que ya estan predispuestos por el encuadre del periodista sobre tu expertise.&lt;/p&gt;
&lt;h3 id=&quot;foso-competitivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#foso-competitivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Foso competitivo&lt;/h3&gt;
&lt;p&gt;Los enlaces de PR son dificiles de replicar para los competidores. No puedes comprarlos en un marketplace de enlaces, y no puedes fabricarlos con granjas de contenido. Requieren expertise genuina, contenido digno de noticia y relaciones con periodistas - barreras que protegen tu ventaja competitiva.&lt;/p&gt;
&lt;h2 id=&quot;los-seis-pilares-del-pr-digital-para-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-seis-pilares-del-pr-digital-para-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los seis pilares del PR digital para link building&lt;/h2&gt;
&lt;h3 id=&quot;1-investigacion-original-y-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-investigacion-original-y-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. Investigacion original y datos&lt;/h3&gt;
&lt;p&gt;La investigación original es la tactica de PR digital con mayor ROI. Los periodistas necesitan datos para respaldar sus historias, y la investigación propietaria les da algo que no pueden encontrar en otro lugar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Que funciona en 2026&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Encuestas de industria&lt;/strong&gt; (500+ encuestados): Encuesta a tus clientes, profesionales de la industria o audiencia objetivo sobre temas relevantes. Cuanto mayor sea el tamaño de la muestra, más creibles son los hallazgos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de datos&lt;/strong&gt;: Extrae datasets publicamente disponibles (estadísticas gubernamentales, informes de la industria, datos de API) para revelar tendencias o patrones no obvios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Benchmarks propietarios&lt;/strong&gt;: Si tu negocio recopila datos de rendimiento (metricas de velocidad de sitios web, tasas de conversión, datos de precios), anonimizalos y agregalos en benchmarks que la industria pueda referenciar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo&lt;/strong&gt;: Una empresa de hosting WordPress analizo 10.000 sitios de clientes para producir “El estado del rendimiento WordPress 2026” - midiendo las puntuaciones promedio de Core Web Vitals por tema, conteo de plugins y nivel de hosting. El informe obtuvo 34 enlaces editoriales de publicaciónes de tecnología y marketing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El formato importa&lt;/strong&gt;: Presenta los hallazgos como un informe PDF descargable con visualizaciones de datos claras (graficos, mapas, infografias). Incluye una sección de métodología para credibilidad. Crea una página de resumen ejecutivo en tu sitio web a la que los periodistas puedan enlazar.&lt;/p&gt;
&lt;h3 id=&quot;2-comentario-experto-y-haroconnectively&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-comentario-experto-y-haroconnectively&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Comentario experto y HARO/Connectively&lt;/h3&gt;
&lt;p&gt;HARO (Help a Reporter Out), ahora renombrado como Connectively, conecta periodistas con fuentes expertas. Sigue siendo uno de los canales de PR digital más accesibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como tener éxito en HARO/Connectively en 2026&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Velocidad&lt;/strong&gt;: Responde dentro de 2 horas de que se publique una consulta. Los periodistas trabajan con plazos y a menudo seleccionan respuestas tempranas y de alta calidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Credenciales primero&lt;/strong&gt;: Lidera con tu expertise. “Como especialista certificado en ergonomia con 15 años de experiencia en evaluación de lugares de trabajo…” te diferencia inmediatamente de las respuestas genericas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Insights citables&lt;/strong&gt;: Proporciona una respuesta citable de 2-3 oraciones, luego ofrece contexto adicional. Los periodistas quieren respuestas que puedan pegar directamente en sus artículos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Especificidad&lt;/strong&gt;: Incluye números, ejemplos o casos de estudio específicos. “En nuestro análisis de 500 trabajadores de oficina, el 73% reporto dolor de espalda por asientos no ergonomicos” es mucho más convincente que “muchas personas experimentan incomodidad.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disponibilidad&lt;/strong&gt;: Ofrece estar disponible para preguntas de seguimiento por telefono o videollamada. Los periodistas aprecian fuentes que son responsivas y fáciles de contactar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Expectativas realistas&lt;/strong&gt;: Con respuestas bien elaboradas de expertos genuinos, espera una tasa de aceptacion del 10-15%. Respondiendo a 20 consultas relevantes por mes deberia generar 2-3 colocaciones con enlaces de alta autoridad.&lt;/p&gt;
&lt;h3 id=&quot;3-newsjacking&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-newsjacking&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Newsjacking&lt;/h3&gt;
&lt;p&gt;El newsjacking significa proporcionar comentario experto sobre noticias de última hora o temas en tendencia. Cuando se hace rápida y autenticamente, puede obtener enlaces dentro de 24-48 horas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como hacer newsjacking efectivamente&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Monitorea noticias de la industria&lt;/strong&gt; usando Google Alerts, Feedly y listas de Twitter/X para tu area temática.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reacciona en horas&lt;/strong&gt;, no en dias. Prepara una declaracion de experto breve (200-300 palabras) con un angulo único que agregue contexto o análisis más alla de la noticia básica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presenta directamente&lt;/strong&gt; a periodistas que cubran la historia. Linea de asunto: “Experto disponible: [Tu angulo sobre la noticia].”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ten activos listos&lt;/strong&gt;: Una foto profesional, una bio y una página relevante en tu sitio web a la que el periodista pueda enlazar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;4-alianzas-de-periodismo-de-datos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-alianzas-de-periodismo-de-datos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Alianzas de periodismo de datos&lt;/h3&gt;
&lt;p&gt;El periodismo de datos es una disciplina en crecimiento donde los periodistas analizan datasets para encontrar historias. Puedes convertirte en una fuente de datos de confianza para estos periodistas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como construir relaciones de periodismo de datos&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Identifica periodistas de datos&lt;/strong&gt; en publicaciónes objetivo (la mayoria de los medios importantes ahora tienen equipos de datos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ofrece acceso exclusivo a datos&lt;/strong&gt; antes de publicar tu investigación publicamente. Los periodistas valoran la exclusividad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proporciona datasets limpios y descargables&lt;/strong&gt; en formatos que los periodistas puedan analizar (CSV, Google Sheets).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crea visualizaciones interactivas&lt;/strong&gt; que las publicaciónes puedan incrustar con atribucion (y un enlace de vuelta a tu sitio).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantente disponible para explicar métodología&lt;/strong&gt; y proporcionar contexto para los hallazgos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;5-mesas-redondas-de-expertos-y-contenido-colaborativo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-mesas-redondas-de-expertos-y-contenido-colaborativo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Mesas redondas de expertos y contenido colaborativo&lt;/h3&gt;
&lt;p&gt;En lugar de crear contenido solo, involucra a multiples expertos de la industria. Esto sirve para dos propósitos de link building: cada experto promueve el contenido a su audiencia, y la naturaleza colaborativa hace que el contenido sea más autoritativo y enlazable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formatos que funcionan&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Predicciones anuales de la industria&lt;/strong&gt;: “12 expertos en SEO comparten sus predicciones para 2026” - cada experto comparte con su audiencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paneles de preguntas y respuestas de expertos&lt;/strong&gt;: Preguntas curadas respondidas por 5-8 lideres de la industria.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Investigacion colaborativa&lt;/strong&gt;: Asociarte con una asociación de la industria o institucion academica para credibilidad de investigación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entrevistas de podcast&lt;/strong&gt;: Entrevista expertos de la industria, pública transcripciones y citas clave, y obtiene enlaces cuando los expertos comparten el episodio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;6-comúnicados-de-prensa-con-enfoque-de-pr-digital&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-comúnicados-de-prensa-con-enfoque-de-pr-digital&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Comúnicados de prensa con enfoque de PR digital&lt;/h3&gt;
&lt;p&gt;Los comunicados de prensa tradicionales distribuidos a través de servicios de cable estan en gran medida obsoletos para link building (la mayoria de los enlaces de servicios de cable son nofollow). Sin embargo, los comunicados de prensa estrategicos aun pueden despertar el interes de los periodistas y obtener cobertura editorial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuando los comunicados de prensa funcionan para enlaces&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anuncios genuinamente dignos de noticia&lt;/strong&gt;: Lanzamientos de productos con un angulo único, hitos significativos de la empresa, anuncios de alianzas importantes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publicación de investigación&lt;/strong&gt;: Anunciar la publicación de un informe de investigación original con hallazgos convincentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Primicias de la industria&lt;/strong&gt;: Cualquier cosa que califique como “primera en la industria” o “el estudio más grande de su tipo.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Que no funciona&lt;/strong&gt;: Anuncios auto-congratulatorios, actualizaciones menores de productos, comunicados de “contratamos un nuevo VP”. Los periodistas los ignoran por completo.&lt;/p&gt;
&lt;h2 id=&quot;construir-una-base-de-datos-de-relaciones-con-periodistas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construir-una-base-de-datos-de-relaciones-con-periodistas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construir una base de datos de relaciones con periodistas&lt;/h2&gt;
&lt;p&gt;Las relaciones a largo plazo con periodistas son el fundamento del éxito sostenido en PR digital. Asi es como construirlas y mantenerlas.&lt;/p&gt;
&lt;h3 id=&quot;identificar-los-periodistas-adecuados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#identificar-los-periodistas-adecuados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Identificar los periodistas adecuados&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Busca artículos publicados&lt;/strong&gt; sobre tus temas usando Google News, Muck Rack o Cision.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisa Twitter/X y LinkedIn&lt;/strong&gt; para periodistas activos en tu nicho.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lee las firmás cuidadosamente&lt;/strong&gt;: Identifica escritores de plantilla vs freelancers (ambos son valiosos, pero los freelancers a menudo escriben para multiples medios).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nota la frecuencia de publicación&lt;/strong&gt;: Los periodistas que publican 3-5 artículos por semana sobre tu tema son tus contactos de mayor valor.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;construir-la-relación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#construir-la-relación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Construir la relación&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sigue su trabajo&lt;/strong&gt;: Lee y interactua genuinamente con sus artículos antes de hacer pitches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proporciona valor primero&lt;/strong&gt;: Comparte puntos de datos relevantes, ofrece información de fondo, conectalos con otros expertos - sin pedir nada a cambio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Se una fuente confiable&lt;/strong&gt;: Cuando un periodista te contacte, responde inmediatamente con información clara y citable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respeta su proceso&lt;/strong&gt;: Comprende los plazos, canales de comunicación preferidos y la diferencia entre ser útil y ser insistente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantiene el contacto&lt;/strong&gt;: Comparte actualizaciones relevantes 2-3 veces por año sin siempre pedir cobertura.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;medir-el-éxito-del-pr-digital-para-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medir-el-éxito-del-pr-digital-para-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medir el éxito del PR digital para link building&lt;/h2&gt;
&lt;h3 id=&quot;metricas-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de enlaces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Número de dominios de referencia&lt;/strong&gt; obtenidos de actividades de PR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad de dominio promedio&lt;/strong&gt; de publicaciónes que enlazan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribucion por tipo de enlace&lt;/strong&gt;: editorial vs solo mencion vs nofollow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Naturalidad del texto ancla&lt;/strong&gt;: Los enlaces de PR deben tener texto ancla diverso y natural&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;metricas-de-tráfico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-tráfico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de tráfico&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tráfico de referencia&lt;/strong&gt; desde publicaciónes que enlazaron a tu sitio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volumen de búsqueda de marca&lt;/strong&gt; (la cobertura de PR impulsa el conocimiento de marca)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Picos de tráfico directo&lt;/strong&gt; correlacionados con fechas de publicación&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;metricas-de-impacto-seo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-impacto-seo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de impacto SEO&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tendencia de autoridad de dominio/rating&lt;/strong&gt; a lo largo del tiempo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejoras en posiciones de palabras clave&lt;/strong&gt; para terminos objetivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crecimiento del tráfico organico&lt;/strong&gt; atribuible al aumento de autoridad&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;metricas-de-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#metricas-de-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Metricas de negocio&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Calidad de leads&lt;/strong&gt; del tráfico de referencia de PR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de conversión&lt;/strong&gt; de visitantes impulsados por PR vs otros canales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volumen de menciones de marca&lt;/strong&gt; en social y búsqueda&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;errores-comunes-de-pr-digital-a-evitar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#errores-comunes-de-pr-digital-a-evitar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Errores comunes de PR digital a evitar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enviar pitches genericos masivamente&lt;/strong&gt;: Los periodistas reciben cientos de pitches diariamente. La personalización no es opcional - es obligatoria. Referencia su trabajo reciente y explica específicamente por que tu historia importa a su audiencia.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Presentar sin un angulo de noticia&lt;/strong&gt;: “Lanzamos un nuevo producto” no es noticia. “Nuestro análisis de 10.000 puntos de datos revela [hallazgo sorprendente]” si lo es. Cada pitch necesita un gancho.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ignorar el timing&lt;/strong&gt;: Presenta historias de la industria cuando el tema esta en el ciclo de noticias, no tres meses despues. Las oportunidades de newsjacking tienen ventanas de 24-48 horas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Descuidar el seguimiento&lt;/strong&gt;: Un único email de seguimiento 3-5 dias despues del pitch inicial es aceptable y a menudo necesario. Mas de dos seguimientos cruza al territorio del spam.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Esperar resultados instantaneos&lt;/strong&gt;: El PR digital para link building es una estrategia a largo plazo. Presupuesta 6+ meses de esfuerzo sostenido antes de evaluar el ROI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usar PR solo para enlaces&lt;/strong&gt;: Si tu único objetivo son los enlaces, los periodistas lo notaran. La utilidad genuina - proporcionar contexto experto, ofrecer datos exclusivos, estar disponible para entrevistas - construye las relaciones que generan cobertura continua.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;marco-presupuestario-de-pr-digital-para-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marco-presupuestario-de-pr-digital-para-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marco presupuestario de PR digital para link building&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Actividad&lt;/th&gt;&lt;th&gt;Coste mensual&lt;/th&gt;&lt;th&gt;Enlaces esperados/mes&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Monitoreo y respuestas HARO/Connectively&lt;/td&gt;&lt;td&gt;500-1.000 EUR (tiempo de experto)&lt;/td&gt;&lt;td&gt;2-4 enlaces de alta autoridad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Investigacion original (informes trimestrales)&lt;/td&gt;&lt;td&gt;1.500 EUR/mes amortizado&lt;/td&gt;&lt;td&gt;8-15 enlaces por informe&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Contacto con periodistas (pitching directo)&lt;/td&gt;&lt;td&gt;1.000-2.000 EUR (tiempo del equipo + herramientas)&lt;/td&gt;&lt;td&gt;3-6 enlaces editoriales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Newsjacking (monitoreo continuo + respuesta)&lt;/td&gt;&lt;td&gt;500 EUR (disponibilidad de experto)&lt;/td&gt;&lt;td&gt;1-3 enlaces oportunistas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;3.500-5.000 EUR&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;14-28 enlaces&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El coste por enlace del PR digital (150-350 EUR) es más alto que las tacticas baratas de link building, pero el diferencial de calidad es enorme. Un único enlace editorial de una publicación DA 70+ tiene más impacto en el posicionamiento que 50 enlaces de baja calidad y no conlleva riesgo de penalizaciones de Google.&lt;/p&gt;
&lt;h2 id=&quot;pr-digital-y-el-futuro-del-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#pr-digital-y-el-futuro-del-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;PR digital y el futuro del link building&lt;/h2&gt;
&lt;p&gt;En 2026, los algoritmos de Google recompensan cada vez más las señales de autoridad genuinas sobre los patrones de enlaces fabricados. El PR digital se alinea perfectamente con esta dirección:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El &lt;strong&gt;contenido generado por IA&lt;/strong&gt; hace que la investigación original y el comentario experto sean más valiosos, no menos. A medida que el contenido generico inunda la web, tanto los periodistas como los motores de búsqueda priorizan la información única respaldada por expertos.&lt;/li&gt;
&lt;li&gt;Los requisitos de &lt;strong&gt;E-E-A-T&lt;/strong&gt; continuan fortaleciendose, haciendo que la expertise verificable y la cobertura mediatica sean más importantes para el posicionamiento.&lt;/li&gt;
&lt;li&gt;La &lt;strong&gt;deteccion de spam de enlaces&lt;/strong&gt; (SpamBrain, análisis del grafo de enlaces) hace que el link building manipulativo sea más arriesgado. Los enlaces de PR son inherentemente naturales y pasan cada verificación algoritmica.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las organizaciónes que invierten en PR digital hoy estan construyendo fosos competitivos que se acumularan durante años. Aquellas que dependen de esquemás de enlaces y atajos encontraran sus estrategias cada vez más inefectivas y peligrosas.&lt;/p&gt;
&lt;p&gt;El PR digital no es el enfoque de link building más fácil. Requiere expertise genuina, paciencia y habilidades para construir relaciones. Pero es el más sostenible, el más impactante y el único enfoque que esta completamente alineado con la dirección de los motores de búsqueda.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y visibilidad&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category domain="tag">digital pr</category><category domain="tag">link building</category><category domain="tag">journalist outreach</category><category domain="tag">haro</category><category domain="tag">content marketing</category><category domain="tag">e-e-a-t</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-resized-e1570276213229.jpg" type="image/jpeg"/></item><item><title>Caso de estudio de link building: 14 meses de digital PR para un e-commerce de muebles</title><link>https://wppoland.com/es/link-building-case-study-furniture-industry/</link><guid isPermaLink="true">https://wppoland.com/es/link-building-case-study-furniture-industry/</guid><description>Un relato honesto de una campaña de link building de 14 meses para un e-commerce de muebles de tamaño medio. Qué funcionó (investigación original, fuentes expertas, sustitución de enlaces rotos), qué se atascó y los resultados directivos que podemos compartir sin romper el acuerdo de confidencialidad.</description><pubDate>Fri, 11 Sep 2009 10:59:09 GMT</pubDate><content:encoded>&lt;p&gt;Una nota antes de los números. El cliente es un e-commerce de muebles de tamaño medio en Europa Central que vende mobiliario ergonómico para oficina y aulas. Nos pidió no nombrarlo, así que lo anonimizamos a lo largo del texto y mantenemos las cifras concretas de ingresos y tráfico en términos vagos. Tampoco afirmamos que fuera “el mayor” nada en su mercado. Era un operador serio de B2B y B2C con crecimiento orgánico estancado y un perfil de enlaces pobre, y nos contrató para corregirlo a lo largo de aproximadamente un año. Todo lo que cuenta este artículo se publica bajo el paraguas de un acuerdo de confidencialidad estándar.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Cuando este artículo se publicó originalmente en 2009, el link building significaba enviar a directorios, intercambios de enlaces recíprocos y posts de blog pagados. En 2026 esas tácticas o no funcionan o dañan activamente tu sitio. Esta versión actualizada del caso muestra cómo se hace link building eficaz hoy.&lt;/p&gt;
&lt;h2 id=&quot;contexto-y-desafíos-del-cliente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-y-desafíos-del-cliente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto y desafíos del cliente&lt;/h2&gt;
&lt;h3 id=&quot;el-negocio&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-negocio&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El negocio&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sector&lt;/strong&gt;: mobiliario ergonómico (e-commerce B2B y B2C)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Productos&lt;/strong&gt;: sillas de oficina, escritorios elevables, mobiliario escolar, accesorios ergonómicos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mercados principales&lt;/strong&gt;: España, Polonia, Alemania, República Checa&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plataforma&lt;/strong&gt;: WooCommerce sobre WordPress&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;los-desafíos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#los-desafíos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Los desafíos&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Dominados por gigantes&lt;/strong&gt;: IKEA, Herman Miller y Amazon ocupaban las primeras posiciones para palabras clave de alto volumen como “silla ergonómica oficina” y “escritorio elevable”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfil de backlinks débil&lt;/strong&gt;: pocos cientos de dominios de referencia, mayoritariamente listados de directorios de baja calidad y posts de foros antiguos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin reconocimiento de marca&lt;/strong&gt;: volumen de búsqueda de marca prácticamente nulo. Los prospectos buscaban categorías de producto, no el nombre del cliente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tráfico orgánico estancado&lt;/strong&gt;: dieciocho meses sin crecimiento perceptible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoridad de dominio baja&lt;/strong&gt;: DR de Ahrefs en torno a la veintena.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;el-objetivo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-objetivo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El objetivo&lt;/h3&gt;
&lt;p&gt;Multiplicar varias veces el tráfico orgánico en doce a catorce meses y posicionar al cliente como una autoridad reconocida en mobiliario ergonómico, con presupuesto y plazos individuales acordados con el cliente.&lt;/p&gt;
&lt;h2 id=&quot;auditoría-inicial-lo-que-encontramos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoría-inicial-lo-que-encontramos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoría inicial: lo que encontramos&lt;/h2&gt;
&lt;h3 id=&quot;análisis-del-perfil-de-backlinks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-del-perfil-de-backlinks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis del perfil de backlinks&lt;/h3&gt;
&lt;p&gt;Con Ahrefs analizamos el perfil existente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mayoría de dominios de referencia de baja calidad&lt;/li&gt;
&lt;li&gt;Decenas de enlaces tóxicos procedentes de granjas de enlaces, sitios extranjeros sin relación temática y directorios de spam&lt;/li&gt;
&lt;li&gt;Ningún enlace editorial de publicaciones, medios de noticias o autoridades sectoriales&lt;/li&gt;
&lt;li&gt;Distribución de anclas claramente sobreoptimizada hacia anclas comerciales exactas como “comprar silla ergonómica”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;auditoría-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditoría-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditoría de contenido&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Páginas de producto con descripciones escuetas que solo replicaban las especificaciones de fabricante&lt;/li&gt;
&lt;li&gt;Blog escaso y antiguo, con artículos cortos sobre temas genéricos&lt;/li&gt;
&lt;li&gt;Sin activos enlazables: nada de investigación, guías de referencia, herramientas o recursos que atrajeran enlaces de forma natural&lt;/li&gt;
&lt;li&gt;Sin contenido firmado por expertos: ni biografías, ni colaboradores con credenciales, ni señales E-E-A-T&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;análisis-de-brechas-competitivas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#análisis-de-brechas-competitivas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Análisis de brechas competitivas&lt;/h3&gt;
&lt;p&gt;Los principales competidores tenían varios cientos más de dominios de referencia, guías de compra exhaustivas posicionando para consultas informacionales, y cobertura recurrente en revistas como &lt;a href=&quot;https://muebledemadrid.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Mueble Magazine&lt;/a&gt; e &lt;a href=&quot;https://www.revistainteriores.es/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Interiores&lt;/a&gt;, además de presencia en ferias como &lt;a href=&quot;https://feriahabitatvalencia.feriavalencia.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Habitat Valencia&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;cómo-trabajamos-la-campaña&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cómo-trabajamos-la-campaña&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cómo trabajamos la campaña&lt;/h2&gt;
&lt;p&gt;No compramos enlaces y no construimos una PBN. El plan, sobre el papel, era aburrido: limpiar lo que ya había, construir un puñado de hubs de contenido que merecieran enlazarse y dedicar la mayor parte del año al outreach. En la práctica las fases se solaparon mucho. Cualquiera que te venda un marco prolijo de cuatro fases te está vendiendo una diapositiva, no un proyecto real.&lt;/p&gt;
&lt;h3 id=&quot;fase-1-limpieza-técnica-y-fundamentos-meses-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-limpieza-técnica-y-fundamentos-meses-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: limpieza técnica y fundamentos (meses 1-2)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Limpieza de backlinks&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enviamos un fichero de desautorización para los enlaces tóxicos&lt;/li&gt;
&lt;li&gt;Contactamos con los responsables de directorios de baja calidad para pedir la retirada de listados&lt;/li&gt;
&lt;li&gt;Resultado: perfil de backlinks limpio, sin texto ancla sobreoptimizado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fundamentos E-E-A-T en el sitio&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Añadimos biografías detalladas para todos los colaboradores de contenido&lt;/li&gt;
&lt;li&gt;Reclutamos a dos contribuidores expertos:
&lt;ul&gt;
&lt;li&gt;Una médica ortopédica colegiada (Experiencia, Pericia)&lt;/li&gt;
&lt;li&gt;Un especialista certificado en ergonomía con años de experiencia en evaluación de puestos de trabajo (Experiencia, Pericia)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Creamos una página “Sobre nuestros expertos” con credenciales, publicaciones y afiliaciones profesionales, con enlaces a colegios profesionales como el &lt;a href=&quot;https://www.coam.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;COAM&lt;/a&gt; cuando procedía&lt;/li&gt;
&lt;li&gt;Añadimos datos estructurados schema.org &lt;code&gt;Person&lt;/code&gt; y &lt;code&gt;MedicalWebPage&lt;/code&gt; donde correspondía&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SEO técnico&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resolvimos errores de rastreo en Google Search Console&lt;/li&gt;
&lt;li&gt;Implementamos una estructura adecuada de enlaces internos&lt;/li&gt;
&lt;li&gt;Mejoramos los Core Web Vitals (LCP por debajo del umbral verde, INP estable bajo carga real)&lt;/li&gt;
&lt;li&gt;Añadimos marcado FAQ, HowTo y Product&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-clústeres-de-contenido-de-autoridad-temática-meses-2-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-clústeres-de-contenido-de-autoridad-temática-meses-2-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: clústeres de contenido de autoridad temática (meses 2-6)&lt;/h3&gt;
&lt;p&gt;Construimos tres clústeres de contenido exhaustivos, cada uno diseñado para establecer autoridad temática y crear recursos enlazables de forma natural.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Clúster 1: configuración de oficina ergonómica (pilar más artículos de soporte)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pilar: una guía completa de configuración de oficina ergonómica&lt;/li&gt;
&lt;li&gt;Artículos de soporte sobre: posicionamiento de monitor, calculadora de altura de escritorio, optimización de iluminación, gestión de cableado, plan de transición a escritorio elevable, ajuste de silla, ergonomía de teclado y ratón, pausas activas, oficina en casa frente a oficina corporativa y ergonomía para equipos en remoto&lt;/li&gt;
&lt;li&gt;Cada artículo escrito o revisado por uno de los expertos firmantes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Clúster 2: estándares de mobiliario escolar&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pilar: una guía de cumplimiento de la norma EN 1729 para mobiliario escolar europeo&lt;/li&gt;
&lt;li&gt;Artículos de soporte sobre: elección por grupo de edad, distribución del aula, pruebas de durabilidad, mobiliario para necesidades especiales, planificación presupuestaria para centros educativos, mantenimiento, impacto en la salud postural y materiales sostenibles&lt;/li&gt;
&lt;li&gt;Donde tenía sentido enlazamos a la documentación pública de &lt;a href=&quot;https://www.aenor.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;AENOR&lt;/a&gt; sobre la norma, lo que reforzó la credibilidad temática&lt;/li&gt;
&lt;li&gt;El clúster apuntaba a responsables de compras y dirección de centros públicos y concertados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Clúster 3: bienestar laboral&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pilar: análisis basado en datos sobre cómo el mobiliario afecta a la productividad&lt;/li&gt;
&lt;li&gt;Datos originales de una encuesta a varios cientos de trabajadores de oficina sobre su puesto y problemas de productividad y salud reportados&lt;/li&gt;
&lt;li&gt;Artículos de soporte sobre: prevención del dolor lumbar, beneficios del escritorio elevable con citas a estudios, lista de verificación de evaluación ergonómica, retorno de inversión y diseño de programas de bienestar&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-3-digital-pr-y-outreach-meses-4-10&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-digital-pr-y-outreach-meses-4-10&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: digital PR y outreach (meses 4-10)&lt;/h3&gt;
&lt;p&gt;Esta fase generó los enlaces de mayor valor a través de tres canales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Canal 1: informe de investigación original&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Publicamos un informe sobre el estado de la ergonomía laboral en Europa Central, basado en una encuesta a varios cientos de trabajadores de oficina y entrevistas con responsables de RRHH. La versión que finalmente funcionó incluyó un resumen ejecutivo de una página y gráficos limpios; la primera versión, demasiado densa, no funcionaba para periodistas con prisa.&lt;/p&gt;
&lt;p&gt;Resultado directivo: docenas de menciones editoriales repartidas durante seis meses entre prensa sectorial del mueble, algunas cabeceras nacionales de negocio y blogs de RRHH y oficina.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Canal 2: respuestas como fuente experta vía HARO y Connectively&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Monitorizamos a diario las peticiones relacionadas con bienestar laboral y ergonomía, diseño de oficinas y productividad, salud del estudiante, consejos de compra de mobiliario y configuración de teletrabajo. Nuestros expertos respondían varias consultas por semana con respuestas sustanciales, citables y firmadas con credenciales completas. La mayoría de las semanas la cosecha era cero. Las semanas buenas compensaban.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Canal 3: acuerdos con prensa del sector y entidades profesionales&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Establecimos relaciones continuas con un par de revistas especializadas en mobiliario de oficina, una cabecera de RRHH y cultura laboral, y blogs del sector educativo. Algunos de los enlaces más estables vinieron de listas de proveedores recomendados en colegios profesionales de interioristas y de páginas de recursos del &lt;a href=&quot;https://www.coam.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;COAM&lt;/a&gt; y de asociaciones similares. Cada colaboración incluía un enlace natural al contenido relevante.&lt;/p&gt;
&lt;h3 id=&quot;fase-4-amplificación-estratégica-meses-8-14&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-4-amplificación-estratégica-meses-8-14&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 4: amplificación estratégica (meses 8-14)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Sustitución de enlaces rotos&lt;/strong&gt;: con Ahrefs identificamos enlaces rotos en sitios relevantes que apuntaban a recursos desaparecidos. Contactamos a los responsables ofreciendo nuestro contenido como reemplazo. Producía ganancias estables y de bajo volumen, números de un solo dígito por trimestre, pero predecibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inclusión en páginas de recursos&lt;/strong&gt;: enviamos el informe y las guías de compra a páginas de recursos de bibliotecas universitarias, recursos públicos sobre seguridad laboral y kits de herramientas de organizaciones profesionales del interiorismo y la arquitectura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Amplificación social&lt;/strong&gt;: cuando una publicación recogía nuestra investigación, lo compartíamos en canales sociales, lo enviábamos a la base de clientes y lo mencionábamos en la newsletter. Esa amplificación secundaria a menudo generaba enlaces orgánicos adicionales de gente que descubría la cobertura.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-14-meses-realmente-parecieron&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-14-meses-realmente-parecieron&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que 14 meses realmente parecieron&lt;/h2&gt;
&lt;p&gt;Compartimos resultados directivos. Las cifras exactas de tráfico, ingresos y DR están bajo acuerdo de confidencialidad y no nos dedicamos a inventar precisión para vender casos de estudio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces y autoridad&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los dominios de referencia se multiplicaron varias veces a lo largo de la campaña. La mayoría de los nuevos dominios son blogs sectoriales y prensa especializada, con un puñado de cabeceras nacionales.&lt;/li&gt;
&lt;li&gt;El DR de Ahrefs se movió aproximadamente entre 8 y 10 puntos. Es lo que produce de forma típica una campaña editorial sostenida de doce a dieciocho meses; cualquiera que te prometa más de veinte puntos en un año en un sitio de muebles o miente o está comprando enlaces.&lt;/li&gt;
&lt;li&gt;Una parte significativa de los primeros enlaces se erosionó con el tiempo. Editores cambiaron de medio, dos artículos se despublicaron durante una migración de CMS y una revista del sector eliminó los enlaces externos en toda su web. Lo que importa es la ganancia neta, no la bruta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tráfico e ingresos&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las sesiones orgánicas crecieron en un rango de 4x a 5x, pero la curva no fue lineal. Los primeros seis meses parecieron casi planos. El impulso compuso a partir de aproximadamente el mes 8, conforme el clúster de ergonomía maduraba y el informe seguía consiguiendo citas.&lt;/li&gt;
&lt;li&gt;El crecimiento de ingresos arrastró al de tráfico durante varios meses. Buena parte de las primeras victorias eran menciones de tipo notoriedad en medios y blogs de RRHH, que construían autoridad pero traían visitantes que aún no estaban listos para comprar. El tráfico de fondo de embudo solo recuperó terreno cuando las guías de compra empezaron a posicionar para consultas con modificadores de producto.&lt;/li&gt;
&lt;li&gt;El volumen de búsqueda de marca pasó de prácticamente cero a una señal pequeña pero real, indicador habitualmente más fiable de la salud de una campaña que cualquier número de DR.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Realidad del outreach&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La encuesta original sobre ergonomía fue, de lejos, el mejor activo que produjimos. Consiguió menciones repartidas entre prensa del mueble y algunas cabeceras nacionales de negocio, y siguió generando un enlace o dos al mes mucho después de que dejáramos de presentarla activamente.&lt;/li&gt;
&lt;li&gt;HARO y Connectively son una rutina ingrata. La mayoría de las semanas no produjeron nada. Un patrón típico fueron alrededor de 200 correos por cuatrimestre (entre cold pitches y respuestas como fuente experta) que producían entre 4 y 10 enlaces colocados. Es lo normal. Si tu agencia te reporta resultados sistemáticamente mejores que esto, pídele ver los logs de email.&lt;/li&gt;
&lt;li&gt;Conseguir enlaces .es de calidad pasa por canales menos ruidosos: páginas de recursos de &lt;a href=&quot;https://www.consejogeneralcoaatie.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;colegios profesionales&lt;/a&gt; de interioristas y arquitectos, certificaciones de producto en AENOR cuando aplica, listados de la web de &lt;a href=&quot;https://feriahabitatvalencia.feriavalencia.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Habitat Valencia&lt;/a&gt; tras participar en la feria, y mesas redondas en ediciones regionales de eventos sectoriales. Son enlaces lentos pero estables.&lt;/li&gt;
&lt;li&gt;La sustitución de enlaces rotos en guías obsoletas de competidores produjo ganancias pequeñas y estables. Los directorios sectoriales de nicho y las páginas de recursos de asociaciones profesionales también fueron fiables, aunque lentos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lo-que-no-funcionó&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lo-que-no-funcionó&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lo que no funcionó&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Outreach genérico estilo “skyscraper” a listas masivas no nos dio prácticamente nada. Tasas de respuesta por debajo del 2 por ciento y tasas de enlace cercanas a cero.&lt;/li&gt;
&lt;li&gt;Una colocación pagada que probamos en un blog de estilo de vida marginalmente relevante se cayó en cuanto declinamos renovar trimestralmente. No la recomendamos.&lt;/li&gt;
&lt;li&gt;La primera versión del informe era demasiado larga y demasiado cargada de diseño para que un periodista la pudiera ojear. La segunda versión, con un resumen ejecutivo de una página y unos gráficos limpios, fue la que consiguió cobertura.&lt;/li&gt;
&lt;li&gt;Tardamos demasiado en empezar el outreach. El informe podría haberse perfilado en el primer mes en lugar del cuarto. Aproximadamente una cuarta parte de la ventana de campaña se nos fue en preparativos que no necesitaban ser secuenciales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusiones-honestas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusiones-honestas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusiones honestas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;El link building en un e-commerce de mobiliario es un compromiso de doce a dieciocho meses. Las campañas trimestrales son, en su mayoría, teatro.&lt;/li&gt;
&lt;li&gt;Tener expertos firmantes en la línea de byline ayuda, pero el impulso real viene de tener una persona real que pueda responder al follow-up de un periodista en menos de un día, no del marcado schema.&lt;/li&gt;
&lt;li&gt;Los enlaces que movieron ingresos fueron las citas en guías de compra de blogs sectoriales, no las menciones-trofeo en prensa nacional. Las menciones-trofeo ayudaron al DR y a cerrar futuros pitches; por sí solas no vendieron sillas.&lt;/li&gt;
&lt;li&gt;Los presupuestos varían mucho y los fijamos por cliente. No publicamos tarifas aquí por la misma razón que un despacho de abogados no lo hace. Pregúntanos y te haremos un alcance honesto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Última actualización: 21 de marzo de 2026.&lt;/p&gt;
&lt;p&gt;Si quieres comparar tu propio pipeline con este, la página de &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios SEO y GEO&lt;/a&gt; explica cómo gestionamos los proyectos de principio a fin.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollo WordPress profesional&lt;/a&gt; y &lt;a href=&quot;/es/mantenimiento-wordpress/&quot;&gt;mantenimiento WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category domain="tag">link building</category><category domain="tag">digital pr</category><category domain="tag">case study</category><category domain="tag">ecommerce</category><category domain="tag">topical authority</category><category domain="tag">e-e-a-t</category><enclosure url="https://wppoland.com/images/og/tworzenie-zaplecza-linkow.jpg" type="image/jpeg"/></item><item><title>Estrategia de Link Building para SEO: Guía completa 2026</title><link>https://wppoland.com/es/introduction-to-link-building-strategy-seo/</link><guid isPermaLink="true">https://wppoland.com/es/introduction-to-link-building-strategy-seo/</guid><description>Guía completa sobre estrategias modernas de link building para SEO. Aprende técnicas white-hat, adquisición de enlaces basada en contenido, construcción de relaciones y medición del ROI del link building.</description><pubDate>Thu, 12 Feb 2009 16:40:19 GMT</pubDate><content:encoded>&lt;p&gt;La mayor parte de lo que se llama «link building» en 2026 está más cerca de trabajo de PR que de la disciplina SEO que solía ser. Google lleva quince años entrenándose para descontar los enlaces fáciles, así que las tácticas baratas que sostenían rankings en 2015 son hoy neutras en el mejor caso y carnada para penalización en el peor.&lt;/p&gt;
&lt;p&gt;Este artículo recorre lo que sigue moviendo aguja en los SERP en español, lo que conviene dejar de hacer y cómo leer las métricas de las herramientas sin engañarse. Escrito para quien ya gestiona un sitio y tiene que decidir dónde invertir las próximas diez horas de outreach.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;qué-cambió-y-qué-dejar-de-hacer&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-cambió-y-qué-dejar-de-hacer&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué cambió y qué dejar de hacer&lt;/h2&gt;
&lt;p&gt;Dos olas de actualizaciones de Google redefinieron qué enlaces pesan: Penguin en 2012 (devaluó la manipulación masiva de anchors) y la línea de Link Spam Updates iniciada en 2021 (devaluó categorías enteras de enlaces en lugar de penalizar sitios). El resultado es una división bastante clara.&lt;/p&gt;
&lt;p&gt;Lo que sigue funcionando en mercados hispanohablantes en 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menciones editoriales en publicaciones nombradas. Un enlace dentro del artículo de un periodista en Genbeta, Xataka, ABC Tecnología, El Economista, Cinco Días o Hipertextual vale más que cincuenta colocaciones en cualquier otra parte, y la brecha sigue creciendo.&lt;/li&gt;
&lt;li&gt;Guest posts en sitios de nicho relevantes. Valor medio y en descenso, pero útiles para dominios nuevos que necesitan rutas de crawl y contexto temático.&lt;/li&gt;
&lt;li&gt;Plataformas de fuentes para periodistas tipo Connectively y equivalentes locales donde los reporteros lanzan llamadas vía LinkedIn o Twitter. Eficaz para B2B y consultoría porque la colocación es editorial.&lt;/li&gt;
&lt;li&gt;Reemplazo de enlaces rotos. Tedioso a escala, pero la conversión es decente porque ofreces al webmaster una reparación, no un favor.&lt;/li&gt;
&lt;li&gt;Digital PR alrededor de eventos del sector (Dotmania, Clinic SEO, FOA, eShow), datos originales o intervenciones como ponente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que no funciona o arriesga directamente una penalización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PBNs. Google lleva años desindexando footprints de PBN y el modo de fallo es una acción manual.&lt;/li&gt;
&lt;li&gt;Envíos masivos a directorios, salvo un puñado de directorios verticales donde personas reales verifican las altas.&lt;/li&gt;
&lt;li&gt;Comentarios de blog y firmas de foro. Ignorados.&lt;/li&gt;
&lt;li&gt;Reciprocidad en sidebar y widgets de footer. Devaluada específicamente por la Link Spam Update de 2021.&lt;/li&gt;
&lt;li&gt;Cualquier paquete vendido por enlace en Fiverr, Upwork o listas de Telegram tipo «guest post barato». Casi todo termina en redes que Google ya conoce.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si la estrategia actual se apoya en la segunda lista, el primer movimiento es parar, no optimizar.&lt;/p&gt;
&lt;h3 id=&quot;por-qué-los-enlaces-siguen-importando&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-los-enlaces-siguen-importando&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué los enlaces siguen importando&lt;/h3&gt;
&lt;p&gt;Pese al ruido sobre la búsqueda con IA, los backlinks siguen siendo de las señales de ranking más fuertes de Google porque son caros de falsificar a escala y porque el grafo de enlaces es lo que Google usa para hacer bootstrap de relaciones entre entidades. Un enlace desde un sitio que ya rankea para tu tema hace tres cosas a la vez: pasa señal de ranking, le dice al crawler que la página existe y refuerza la asociación temática entre tu dominio y el campo del sitio que enlaza.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;comprendiendo-los-fundamentos-del-link-building-moderno&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#comprendiendo-los-fundamentos-del-link-building-moderno&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Comprendiendo los fundamentos del Link Building moderno&lt;/h2&gt;
&lt;h3 id=&quot;qué-hace-que-un-backlink-sea-de-calidad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hace-que-un-backlink-sea-de-calidad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;¿Qué hace que un backlink sea de calidad?&lt;/h3&gt;
&lt;p&gt;No todos los enlaces son iguales. Los backlinks de calidad comparten estas características:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Métricas de autoridad&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alta Autoridad de Dominio (DA) o Domain Rating (DR)&lt;/li&gt;
&lt;li&gt;Fuerte tráfico orgánico y engagement&lt;/li&gt;
&lt;li&gt;Presencia establecida en el nicho&lt;/li&gt;
&lt;li&gt;Perfil de backlinks limpio (sin spam)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Factores de relevancia&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alineación temática con tu contenido&lt;/li&gt;
&lt;li&gt;Relación con la industria o nicho&lt;/li&gt;
&lt;li&gt;Colocación contextual dentro de contenido relevante&lt;/li&gt;
&lt;li&gt;Superposición de audiencia e intereses compartidos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Atributos técnicos&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Atributo de enlace dofollow (transfiere valor SEO)&lt;/li&gt;
&lt;li&gt;Colocación editorial (no pagada/patrocinada)&lt;/li&gt;
&lt;li&gt;Integración contextual en el contenido&lt;/li&gt;
&lt;li&gt;Variación natural del texto ancla&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ubicación del enlace&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dentro del cuerpo principal del contenido (no en pie de página/barra lateral)&lt;/li&gt;
&lt;li&gt;Rodeado de contenido relevante y de calidad&lt;/li&gt;
&lt;li&gt;Desde dominios de referencia únicos&lt;/li&gt;
&lt;li&gt;Sostenible y de larga duración&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tipos-de-backlinks&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tipos-de-backlinks&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tipos de backlinks&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Enlaces editoriales&lt;/strong&gt;
El estándar de oro del link building. Estos ocurren cuando otros sitios web referencian naturalmente tu contenido porque proporciona valor a su audiencia.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ejemplo&lt;/em&gt;: Un blog de marketing enlaza a tu guía completa de SEO como recurso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Enlaces de guest posting&lt;/strong&gt;
Enlaces obtenidos al contribuir contenido valioso a otros sitios web en tu nicho.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ejemplo&lt;/em&gt;: Escribir un artículo para una publicación de la industria con un enlace a tu sitio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Enlaces de páginas de recursos&lt;/strong&gt;
Enlaces desde listas curadas de recursos útiles sobre temas específicos.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ejemplo&lt;/em&gt;: Tu herramienta siendo listada en una página de “Mejores herramientas SEO”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Broken Link Building&lt;/strong&gt;
Reemplazar enlaces rotos en otros sitios con tu contenido relevante y funcional.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ejemplo&lt;/em&gt;: Encontrar un enlace roto a una herramienta descontinuada y sugerir tu alternativa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Enlaces de Digital PR&lt;/strong&gt;
Enlaces obtenidos a través de contenido noticioso, estudios de datos o comentarios expertos.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ejemplo&lt;/em&gt;: Periodistas citando tu investigación original en artículos de noticias.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Enlaces basados en relaciones&lt;/strong&gt;
Enlaces de asociaciones, colaboraciónes o relaciones de la industria.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ejemplo&lt;/em&gt;: Un proveedor enlazando a tu caso de estudio desde su página de socios.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;marco-estratégico-de-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#marco-estratégico-de-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Marco estratégico de Link Building&lt;/h2&gt;
&lt;h3 id=&quot;fase-1-construcción-de-la-base-meses-1-2&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-1-construcción-de-la-base-meses-1-2&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 1: Construcción de la base (Meses 1-2)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Auditar el perfil de enlaces actual&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Antes de construir nuevos enlaces, comprende tu punto de partida:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Analiza los enlaces existentes&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa herramientas como Ahrefs, Moz o SEMrush&lt;/li&gt;
&lt;li&gt;Identifica la Autoridad de Dominio/Rating actual&lt;/li&gt;
&lt;li&gt;Cataloga los dominios de referencia y la distribución de textos ancla&lt;/li&gt;
&lt;li&gt;Detecta enlaces tóxicos que puedan necesitar desautorización&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Análisis de competidores&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica los 5 principales competidores&lt;/li&gt;
&lt;li&gt;Analiza sus perfiles de backlinks&lt;/li&gt;
&lt;li&gt;Encuentra oportunidades de enlaces que están usando&lt;/li&gt;
&lt;li&gt;Identifica brechas en tu estrategia&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Establecer métricas de referencia&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tráfico orgánico actual&lt;/li&gt;
&lt;li&gt;Rankings de palabras clave para términos objetivo&lt;/li&gt;
&lt;li&gt;Conteo de dominios de referencia&lt;/li&gt;
&lt;li&gt;Puntuación de Autoridad de Dominio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Crear activos enlazables&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Desarrolla contenido específicamente diseñado para atraer enlaces:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de activos que obtienen enlaces&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Investigación original&lt;/strong&gt;: Estudios de datos, encuestas, benchmarks de la industria&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guías completas&lt;/strong&gt;: Recursos definitivos de cómo hacer (como esta)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herramientas gratuitas&lt;/strong&gt;: Calculadoras, verificadores, generadores&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido visual&lt;/strong&gt;: Infografías, gráficos, mapas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Informes de la industria&lt;/strong&gt;: Tendencias anuales, estado de la industria&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resúmenes de expertos&lt;/strong&gt;: Insights de líderes de la industria&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;fase-2-adquisición-de-enlaces-basada-en-contenido-meses-3-6&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-2-adquisición-de-enlaces-basada-en-contenido-meses-3-6&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 2: Adquisición de enlaces basada en contenido (Meses 3-6)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;La técnica Skyscraper 2.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La técnica Skyscraper original de Brian Dean ha evolucionado:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Encuentra contenido probado&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Busca tu palabra clave objetivo&lt;/li&gt;
&lt;li&gt;Identifica contenido con muchos backlinks&lt;/li&gt;
&lt;li&gt;Analiza qué lo hace exitoso&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Crea algo mejor&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hazlo más completo&lt;/li&gt;
&lt;li&gt;Actualiza la información desactualizada&lt;/li&gt;
&lt;li&gt;Mejora el diseño y la usabilidad&lt;/li&gt;
&lt;li&gt;Añade investigación o datos originales&lt;/li&gt;
&lt;li&gt;Incluye elementos multimedia&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Promoción estratégica&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contacta sitios que enlazan al original&lt;/li&gt;
&lt;li&gt;Propón a periodistas que cubren el tema&lt;/li&gt;
&lt;li&gt;Comparte en comunidades relevantes&lt;/li&gt;
&lt;li&gt;Usa promoción de pago para impulso inicial&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Guest posting a escala&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;El guest posting moderno se centra en el valor, no solo en los enlaces:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Encontrar oportunidades&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Busca: “escribe para nosotros” + tu nicho&lt;/li&gt;
&lt;li&gt;Analiza los guest posts de la competencia&lt;/li&gt;
&lt;li&gt;Usa herramientas como Pitchbox o BuzzStream&lt;/li&gt;
&lt;li&gt;Construye relaciones antes de hacer propuestas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Proponer con éxito&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Investiga el sitio a fondo&lt;/li&gt;
&lt;li&gt;Personaliza cada propuesta&lt;/li&gt;
&lt;li&gt;Propón temas específicos&lt;/li&gt;
&lt;li&gt;Incluye muestras de escritura&lt;/li&gt;
&lt;li&gt;Enfatiza el valor para su audiencia&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;fase-3-digital-pr-y-construcción-de-autoridad-meses-6-12&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#fase-3-digital-pr-y-construcción-de-autoridad-meses-6-12&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Fase 3: Digital PR y construcción de autoridad (Meses 6-12)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Campañas de contenido basadas en datos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Crea contenido noticioso que los periodistas quieran cubrir:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de campañas&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Informes benchmark de la industria&lt;/strong&gt;: “Salarios promedio en [Industria] 2026”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de tendencias&lt;/strong&gt;: “El estado de [Tema]: estadísticas clave”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estudios comparativos&lt;/strong&gt;: “[Herramienta A] vs [Herramienta B]: análisis de rendimiento”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encuestas&lt;/strong&gt;: “Lo que piensan 500 [profesionales] sobre [tema]”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Estrategia HARO (Help A Reporter Out)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;HARO conecta periodistas con fuentes expertas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Regístrate&lt;/strong&gt;: Como fuente en helpareporter.com&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responde efectivamente&lt;/strong&gt;: Responde rápido, sé conciso y citable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consejos de éxito&lt;/strong&gt;: Ofrece insights únicos, no consejos genéricos&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tácticas-avanzadas-de-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tácticas-avanzadas-de-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tácticas avanzadas de Link Building&lt;/h2&gt;
&lt;h3 id=&quot;broken-link-building-a-escala&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#broken-link-building-a-escala&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Broken Link Building a escala&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;El proceso&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Encuentra páginas relevantes con enlaces rotos&lt;/li&gt;
&lt;li&gt;Crea o identifica contenido de reemplazo&lt;/li&gt;
&lt;li&gt;Contacta a los propietarios del sitio con sugerencias útiles&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;recuperación-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recuperación-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recuperación de enlaces&lt;/h3&gt;
&lt;p&gt;Recupera enlaces que ya deberías tener:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Menciones de marca sin enlace&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Monitorea las menciones de marca (Google Alerts, Mention.com)&lt;/li&gt;
&lt;li&gt;Encuentra menciones sin enlaces&lt;/li&gt;
&lt;li&gt;Contacta a los autores solicitando la adición del enlace&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Recuperación de enlaces perdidos&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Rastrea los backlinks existentes&lt;/li&gt;
&lt;li&gt;Identifica cuándo se eliminan los enlaces&lt;/li&gt;
&lt;li&gt;Contacta a los propietarios del sitio para entender por qué&lt;/li&gt;
&lt;li&gt;Aborda los problemas y solicita la reinstalación&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;asociaciones-estratégicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#asociaciones-estratégicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Asociaciones estratégicas&lt;/h3&gt;
&lt;p&gt;Construye relaciones que generen enlaces continuos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Asociaciones de la industria&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asóciate con negocios complementarios&lt;/li&gt;
&lt;li&gt;Co-crea contenido y recursos&lt;/li&gt;
&lt;li&gt;Promoción cruzada de herramientas&lt;/li&gt;
&lt;li&gt;Habla en los eventos de los demás&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;optimización-de-enlaces-internos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-enlaces-internos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de enlaces internos&lt;/h3&gt;
&lt;p&gt;Aunque los enlaces externos reciben la atención, los enlaces internos son cruciales:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrategia de enlaces internos&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Modelo Hub and Spoke&lt;/strong&gt;: Crea páginas pilar completas y enlaza contenido relacionado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enlazado contextual&lt;/strong&gt;: Enlaza naturalmente dentro del contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;: Navegación por migas de pan, secciones de posts relacionados&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;medición-con-el-escepticismo-apropiado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medición-con-el-escepticismo-apropiado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medición, con el escepticismo apropiado&lt;/h2&gt;
&lt;p&gt;Toda métrica de enlaces de terceros es una conjetura sobre lo que Google podría estar haciendo, no una ventana a lo que Google realmente hace. Trátalas como medidas relativas dentro de una sola herramienta, no como puntuaciones absolutas comparables entre herramientas.&lt;/p&gt;
&lt;p&gt;Las que sobreviven al escrutinio práctico en 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ahrefs Domain Rating y URL Rating. Actualizadas con frecuencia, correlación decente con rankings a nivel de página (especialmente URL Rating). Útil para comparar dos prospectos dentro de Ahrefs. Inútil para decirle a un cliente «alcanzamos DR 50».&lt;/li&gt;
&lt;li&gt;Majestic Trust Flow y Citation Flow. Índice más viejo, pero el desglose Topical Trust Flow es una de las pocas métricas públicas que intenta modelar relevancia temática en lugar de volumen bruto.&lt;/li&gt;
&lt;li&gt;Moz Domain Authority. Más lenta en actualizarse, más volátil tras refrescos grandes del índice. Vale como señal direccional, más débil que las otras dos.&lt;/li&gt;
&lt;li&gt;Sistrix tiene cobertura razonable de España y LATAM para visibilidad y seguimiento competitivo, no para forense de backlinks. Combina con Ahrefs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que conviene rastrear de verdad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nuevos dominios de referencia por mes, con relevancia temática anotada a mano. Un enlace de un sitio que ya rankea para tu categoría vale más que cinco de blogs genéricos.&lt;/li&gt;
&lt;li&gt;Distribución de anchor text. Apunta a aproximadamente 30-40% de marca, 20-30% de URL desnuda, 20-30% de partial-match y no más del 10-20% de exact-match. Los perfiles que se pasan del 20% de exact-match en una keyword comercial son los que se llevan el golpe cuando Google saca el siguiente refresco antispam.&lt;/li&gt;
&lt;li&gt;Tráfico orgánico a la página enlazada, no al sitio en general. Si construiste enlaces a una money page y sus impresiones en Search Console no se movieron en tres meses, los enlaces tenían forma equivocada o la página es el cuello de botella.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Realidad del outreach en mercado hispano: una campaña razonablemente segmentada sobre un activo medio decente convierte a un 2-5% de tasa de respuesta y 0,5-2% de enlaces conseguidos. Para conseguir 4-10 enlaces hay que planear unos 200 emails personalizados. Mercados como el español, mexicano o argentino tienen redacciones más concentradas: una relación real con un periodista de Xataka o Genbeta rinde más que volumen ciego. Para nichos de e-commerce, integraciones con Bizum o redes de comerciantes Redsys abren directorios sectoriales que no aparecen en listas internacionales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;evitando-penalizaciones-seguridad-en-el-link-building&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#evitando-penalizaciones-seguridad-en-el-link-building&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Evitando penalizaciones: seguridad en el Link Building&lt;/h2&gt;
&lt;h3 id=&quot;directrices-de-google-sobre-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#directrices-de-google-sobre-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Directrices de Google sobre enlaces&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Violaciones a evitar&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comprar o vender enlaces (incluyendo contenido patrocinado sin etiquetas adecuadas)&lt;/li&gt;
&lt;li&gt;Intercambios excesivos de enlaces&lt;/li&gt;
&lt;li&gt;Link building automatizado&lt;/li&gt;
&lt;li&gt;Sumisiones a directorios de baja calidad&lt;/li&gt;
&lt;li&gt;Enlaces en widgets&lt;/li&gt;
&lt;li&gt;Enlaces ocultos o engañosos&lt;/li&gt;
&lt;li&gt;Enlaces desde sitios penalizados&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;señales-de-alerta-en-tu-perfil-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#señales-de-alerta-en-tu-perfil-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Señales de alerta en tu perfil de enlaces&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Señales de peligro&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pico repentino en backlinks&lt;/li&gt;
&lt;li&gt;Gran porcentaje desde el mismo dominio&lt;/li&gt;
&lt;li&gt;Sobre-optimización de texto ancla exacto&lt;/li&gt;
&lt;li&gt;Enlaces desde sitios irrelevantes o extranjeros&lt;/li&gt;
&lt;li&gt;Enlaces desde granjas de enlaces conocidas&lt;/li&gt;
&lt;li&gt;Enlaces pagados sin etiquetas adecuadas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;auditorías-regulares-de-enlaces&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#auditorías-regulares-de-enlaces&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Auditorías regulares de enlaces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Revisiones trimestrales del perfil de backlinks&lt;/li&gt;
&lt;li&gt;Identificar y desautorizar enlaces tóxicos&lt;/li&gt;
&lt;li&gt;Monitorear ataques de SEO negativo&lt;/li&gt;
&lt;li&gt;Rastrear la distribución de textos ancla&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;link-building-para-industrias-específicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#link-building-para-industrias-específicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Link Building para industrias específicas&lt;/h2&gt;
&lt;h3 id=&quot;link-building-para-e-commerce&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#link-building-para-e-commerce&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Link Building para e-commerce&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Estrategias que funcionan&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Outreach de reseñas de productos a bloggers&lt;/li&gt;
&lt;li&gt;Inclusión en guías de regalos&lt;/li&gt;
&lt;li&gt;Contenido how-to con productos&lt;/li&gt;
&lt;li&gt;Patrocinio de informes de la industria&lt;/li&gt;
&lt;li&gt;Colaboraciones con influencers&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;link-building-para-negocios-locales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#link-building-para-negocios-locales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Link Building para negocios locales&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Oportunidades de alto valor&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asociaciones de negocios locales&lt;/li&gt;
&lt;li&gt;Directorios de Cámaras de Comercio&lt;/li&gt;
&lt;li&gt;Cobertura en medios y noticias locales&lt;/li&gt;
&lt;li&gt;Patrocinio de eventos comunitarios&lt;/li&gt;
&lt;li&gt;Páginas de socios locales&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;link-building-b2b&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#link-building-b2b&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Link Building B2B&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Tácticas efectivas&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Distribución de whitepapers e investigación&lt;/li&gt;
&lt;li&gt;Guest posts en publicaciónes de la industria&lt;/li&gt;
&lt;li&gt;Colaboraciones en webinars&lt;/li&gt;
&lt;li&gt;Colocación de casos de estudio&lt;/li&gt;
&lt;li&gt;Ponencias en eventos de la industria&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;hacia-dónde-va-esto&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#hacia-dónde-va-esto&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Hacia dónde va esto&lt;/h2&gt;
&lt;p&gt;La respuesta honesta sobre 2027 es que nadie lo sabe. Los AI Overviews y la búsqueda estilo ChatGPT erosionarán el valor del clic en parte de las consultas informativas, posiblemente bastante. Lo que eso significa para la economía del link building todavía no está resuelto.&lt;/p&gt;
&lt;p&gt;Algunas cosas apuntan en una dirección clara. Los resultados impulsados por LLM extraen de un conjunto de fuentes más reducido que los clásicos diez enlaces azules, y ser una de las fuentes citadas en una respuesta de Perplexity o ChatGPT funciona más o menos como un top-3 de Google funcionaba hace cinco años. Las señales que meten un dominio en ese conjunto de citas se parecen mucho a las que ya empujan rankings tradicionales: confianza a nivel de dominio, densidad factual, asociación con entidades nombradas y, sí, enlaces de fuentes en las que el modelo ya confía.&lt;/p&gt;
&lt;p&gt;Dos implicaciones prácticas para los próximos dieciocho meses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los enlaces editoriales desde publicaciones nombradas en español pesan más que antes, porque los LLM ponderan de forma desproporcionada el contenido citado o referenciado en esas cabeceras.&lt;/li&gt;
&lt;li&gt;El caso de inversión para guest posts marginales y páginas de recursos se debilita, porque su efecto sobre rankings clásicos se desvanece y casi no aportan a la cita por LLM.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si vas a planear un año de trabajo de enlaces, planta la bandera en activos que ganan citas por sí solos (herramientas open source, datasets originales, frameworks con nombre) en lugar de en throughput de outreach.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;una-forma-realista-para-el-trabajo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#una-forma-realista-para-el-trabajo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Una forma realista para el trabajo&lt;/h2&gt;
&lt;p&gt;Lo que nadie te dice cuando empiezas a hacer outreach es que las tasas de conversión son brutales. Una campaña razonablemente segmentada sobre un activo medio decente convierte a 2-5% de respuestas y 0,5-2% de enlaces conseguidos. Para conseguir 4-10 enlaces planea unos 200 emails personalizados. Si alguien promete números mejores sin enseñarte los datos, asume que los datos vienen de un nicho con una ventaja relacional intransferible.&lt;/p&gt;
&lt;p&gt;Un contraejemplo que vale la pena tener presente: un cliente SaaS nuestro consiguió 14 enlaces en cinco meses sin enviar ni un solo pitch. Construyeron una pequeña herramienta open source que resolvía un problema real de su categoría y dejaron que otros del sector se refirieran a ella como una especificación. Los enlaces vinieron de gente que escribía sobre la herramienta, no de gente a la que se le pedía un enlace. Difícil de copiar a demanda, pero cuando funciona supera al outreach en un orden de magnitud por coste por enlace.&lt;/p&gt;
&lt;p&gt;Si la elección está entre contratar un VA de outreach durante tres meses y enviar un activo genuinamente útil, envía el activo.&lt;/p&gt;
&lt;h3 id=&quot;qué-hacer-este-trimestre&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#qué-hacer-este-trimestre&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Qué hacer este trimestre&lt;/h3&gt;
&lt;p&gt;Tres cosas, en este orden, si partes de un perfil pequeño:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Saca el perfil existente en Ahrefs o Search Console y comprueba si hay algo obviamente tóxico que merezca disavow. Para la mayoría de los sitios la respuesta es «no, déjalo en paz». El archivo de disavow es último recurso, no limpieza rutinaria.&lt;/li&gt;
&lt;li&gt;Elige un activo que merezca ser enlazado y termínalo. Un dataset, una calculadora, un informe sectorial anual. Algo que un periodista de Xataka, Genbeta o El Economista pueda citar de forma plausible.&lt;/li&gt;
&lt;li&gt;Pitchea el activo a 30-50 personas concretas con una línea explicando por qué es relevante para su último artículo. No uses plantilla en el campo de personalización.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si tras los primeros 50 pitches hay cero respuestas, el problema es el activo, no el outreach. Itera el activo antes de escalar la lista.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recursos-relacionados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#recursos-relacionados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Recursos relacionados&lt;/h2&gt;
&lt;p&gt;Amplía tu conocimiento SEO con estas guías completas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;Servicios de SEO y GEO&lt;/a&gt; - Domina la optimización moderna&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;Desarrollo WordPress profesional&lt;/a&gt; - Servicios expertos de desarrollo&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/es/auditoria-seguridad-wordpress/&quot;&gt;Auditoría de seguridad WordPress&lt;/a&gt; - Asegura tu sitio&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Última actualización: 31 de enero de 2026&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;¿Necesitas ayuda con tu estrategia de link building? Contacta con WPPoland para servicios profesionales de SEO.&lt;/em&gt;&lt;/p&gt;</content:encoded><category>seo</category><category>marketing</category><category>strategy</category><category domain="tag">seo</category><category domain="tag">link-building</category><category domain="tag">digital-marketing</category><category domain="tag">content-strategy</category><category domain="tag">off-page-seo</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item><item><title>10 sistemas CMS en 2026: cuota de mercado, funcionalidades y el auge del headless</title><link>https://wppoland.com/es/10-free-cms-systems-where-are-they-now/</link><guid isPermaLink="true">https://wppoland.com/es/10-free-cms-systems-where-are-they-now/</guid><description>Desde nuestra lista original de sistemas CMS gratuitos en 2008 hasta el panorama de 2026. Una comparativa exhaustiva de WordPress, Drupal, Joomla, Ghost, Strapi, Payload, Directus, Sanity, Contentful y Astro: cuota de mercado, capacidades headless, experiencia de desarrollo y casos de uso reales.</description><pubDate>Sun, 30 Nov 2008 16:33:34 GMT</pubDate><content:encoded>&lt;p&gt;En 2008, cuando este artículo fue publicado por primera vez, el mercado de CMS era el Salvaje Oeste. WordPress se veia principalmente como una plataforma de blogging. Nuestra lista original recomendaba sistemas oscuros como Frog CMS, SilverStripe, miaCMS, MoinMoin, ImpressCMS y CMS Made Simple. La mayoria de esos nombres no significan nada para nadie en 2026.&lt;/p&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;El panorama CMS se ha transformado por completo. Lo que antes era una única categoría - “sistema de gestión de contenido” - se ha dividido en tres enfoques distintos: CMS tradicional, CMS headless API-first y plataformas de contenido SaaS. Aqui esta donde se encuentra el mercado en 2026.&lt;/p&gt;
&lt;h2 id=&quot;1-wordpress---el-campeon-indiscutible-435-de-cuota-de-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#1-wordpress---el-campeon-indiscutible-435-de-cuota-de-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;1. WordPress - el campeon indiscutible (43,5% de cuota de mercado)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS tradicional con capacidades headless
&lt;strong&gt;Licencia&lt;/strong&gt;: GPL (gratuito, código abierto)
&lt;strong&gt;Lenguaje&lt;/strong&gt;: PHP
&lt;strong&gt;Ideal para&lt;/strong&gt;: Blogs, sitios corporativos, e-commerce con WooCommerce, portales empresariales&lt;/p&gt;
&lt;p&gt;WordPress impulsa el 43,5% de todos los sitios web en internet. Ningun otro CMS se acerca. A pesar de años de predicciones sobre su declive, WordPress ha crecido diversificandose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gutenberg Block Editor&lt;/strong&gt; maduro hasta convertirse en un sistema completo de edicion del sitio (FSE), reduciendo la necesidad de constructores de páginas como Elementor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress REST API y GraphQL&lt;/strong&gt; (via el plugin WPGraphQL) permiten uso headless con frontends en React, Astro o Next.js&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WooCommerce&lt;/strong&gt; sigue siendo la plataforma de e-commerce de código abierto dominante, impulsando el 38% de todas las tiendas en linea&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La hoja de ruta de WordPress 7.x&lt;/strong&gt; incluye asistencia de contenido con IA nativa, gestión de medios mejorada y capacidades más profundas de temas con bloques&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Ecosistema masivo de plugins (60.000+), enorme pool de talento, escalabilidad empresarial probada, e-commerce con WooCommerce.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Arquitectura monolitica en PHP, la seguridad depende de la calidad de los plugins, la UX del admin esta por detras de herramientas modernas, deuda técnica de 20 años de compatibilidad retroactiva.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: WordPress no va a ninguna parte. Es la opción predeterminada para sitios web con mucho contenido, especialmente cuando editores no técnicos necesitan gestionar el contenido de forma independiente.&lt;/p&gt;
&lt;h2 id=&quot;2-drupal---el-caballo-de-batalla-empresarial-15-de-cuota-de-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#2-drupal---el-caballo-de-batalla-empresarial-15-de-cuota-de-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;2. Drupal - el caballo de batalla empresarial (1,5% de cuota de mercado)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS tradicional con fuerte soporte headless
&lt;strong&gt;Licencia&lt;/strong&gt;: GPL (gratuito, código abierto)
&lt;strong&gt;Lenguaje&lt;/strong&gt;: PHP (Symfony)
&lt;strong&gt;Ideal para&lt;/strong&gt;: Gobierno, salud, educación superior, sitios empresariales complejos&lt;/p&gt;
&lt;p&gt;Drupal ocupa un nicho distinto: grandes organizaciónes con necesidades complejas de modelado de contenido, requisitos estrictos de accesibilidad (WCAG 2.2) y equipos de desarrollo dedicados.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drupal 11&lt;/strong&gt; (lanzado en 2025) trajo compatibilidad con Symfony 7, UX de administración mejorada y soporte headless nativo&lt;/li&gt;
&lt;li&gt;La iniciativa &lt;strong&gt;Drupal CMS&lt;/strong&gt; simplifico la experiencia editorial, reduciendo la brecha de usabilidad con WordPress&lt;/li&gt;
&lt;li&gt;Fuerte adopcion en sectores gubernamentales de la UE y EE.UU. (whitehouse.gov, europa.eu)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Modelado de contenido superior, permisos granulares, fuerte cumplimiento de accesibilidad, seguridad de nivel empresarial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Curva de aprendizaje pronunciada, ecosistema de plugins más pequeño, costoso de desarrollar y mantener, las actualizaciones de versiones principales son dolorosas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Drupal prospera en el gobierno y grandes empresas pero esta perdiendo terreno frente a plataformas CMS headless en el mercado medio.&lt;/p&gt;
&lt;h2 id=&quot;3-joomla---el-superviviente-12-de-cuota-de-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#3-joomla---el-superviviente-12-de-cuota-de-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;3. Joomla - el superviviente (1,2% de cuota de mercado)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS tradicional
&lt;strong&gt;Licencia&lt;/strong&gt;: GPL (gratuito, código abierto)
&lt;strong&gt;Lenguaje&lt;/strong&gt;: PHP
&lt;strong&gt;Ideal para&lt;/strong&gt;: Portales comunitarios, sitios multilingues, webs de asociaciones&lt;/p&gt;
&lt;p&gt;Joomla fue en su dia el principal competidor de WordPress. En 2026, ocupa un nicho pequeño pero leal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Joomla 5&lt;/strong&gt; modernizo el código base con requisito de PHP 8.1+ y admin con Bootstrap 5&lt;/li&gt;
&lt;li&gt;El soporte multilingue integrado (sin plugins) sigue siendo una ventaja genuina sobre WordPress&lt;/li&gt;
&lt;li&gt;Comunidad fuerte en regiones específicas (Europa, Sudamerica)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Multilingue nativo, ACL (control de acceso) flexible, directorio de extensiónes maduro.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Comunidad de desarrolladores en declive, menos extensiónes que WordPress, percepcion anticuada limita la nueva adopcion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Joomla sobrevive pero no crece. Los sitios existentes en Joomla seguiran siendo mantenidos, pero los proyectos nuevos raramente eligen Joomla sobre WordPress o una solución headless.&lt;/p&gt;
&lt;h2 id=&quot;4-ghost---el-editor-enfocado-en-newsletters-01-de-cuota-de-mercado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#4-ghost---el-editor-enfocado-en-newsletters-01-de-cuota-de-mercado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;4. Ghost - el editor enfocado en newsletters (0,1% de cuota de mercado)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: Plataforma de publicación especializada con API headless
&lt;strong&gt;Licencia&lt;/strong&gt;: MIT (gratuito, código abierto)
&lt;strong&gt;Lenguaje&lt;/strong&gt;: Node.js
&lt;strong&gt;Ideal para&lt;/strong&gt;: Editores independientes, newsletters, sitios de membresia&lt;/p&gt;
&lt;p&gt;Ghost realizo un giro estrategico inteligente. En lugar de competir con WordPress en funcionalidades generales de CMS, se enfoco en la economia de creadores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sistema nativo de newsletters&lt;/strong&gt; con envio de emails, rivalizando con Substack y Beehiiv&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestión de membresias y suscripciones&lt;/strong&gt; integrada (integración con Stripe)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API headless&lt;/strong&gt; (Content API y Admin API) permite frontends personalizados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ghost(Pro)&lt;/strong&gt; ofrece hosting gestionado como solución llave en mano para escritores&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Hermosa experiencia de escritura, monetizacion integrada (membresias, newsletters), rendimiento rápido con Node.js, API limpia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Ecosistema de plugins limitado, no apto para sitios complejos, sin e-commerce más alla de membresias.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Ghost encontro su nicho y lo sirve bien. Ideal para creadores individuales y pequeños editores que necesitan escritura, newsletters y membresias en una sola plataforma.&lt;/p&gt;
&lt;h2 id=&quot;5-strapi---el-pionero-headless-de-código-abierto-autoalojado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#5-strapi---el-pionero-headless-de-código-abierto-autoalojado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;5. Strapi - el pionero headless de código abierto (autoalojado)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS headless (API-first)
&lt;strong&gt;Licencia&lt;/strong&gt;: MIT / Enterprise
&lt;strong&gt;Lenguaje&lt;/strong&gt;: Node.js (JavaScript/TypeScript)
&lt;strong&gt;Ideal para&lt;/strong&gt;: Aplicaciones web personalizadas, entrega de contenido multicanal, proyectos orientados a desarrolladores&lt;/p&gt;
&lt;p&gt;Strapi fue pionero en la categoría de CMS headless de código abierto y sigue siendo una de las opciones más populares:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Strapi 5&lt;/strong&gt; (lanzado en 2025) reescribio el nucleo en TypeScript, mejoro el rendimiento y anadio versiónado de contenido&lt;/li&gt;
&lt;li&gt;APIs REST y GraphQL auto-generadas a partir de definiciones de tipos de contenido&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Marketplace de plugins&lt;/strong&gt; con más de 100 plugins de la comunidad (SEO, biblioteca de medios, traducciones)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strapi Cloud&lt;/strong&gt; ofrece hosting gestionado como alternativa al autoalojamiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Ecosistema maduro, gran comunidad, opción autoalojada para soberania de datos, modelado de contenido flexible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Pesado en recursos para sitios simples, requiere experiencia en JavaScript/TypeScript, sin frontend integrado (tu aportas el tuyo).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Strapi es la opción segura para equipos que quieren un CMS headless de código abierto con un historial probado y se sienten comodos con Node.js.&lt;/p&gt;
&lt;h2 id=&quot;6-payload-cms---el-retador-typescript-first-autoalojado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#6-payload-cms---el-retador-typescript-first-autoalojado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;6. Payload CMS - el retador TypeScript-first (autoalojado)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS headless (API-first, nativo en TypeScript)
&lt;strong&gt;Licencia&lt;/strong&gt;: MIT
&lt;strong&gt;Lenguaje&lt;/strong&gt;: TypeScript (Next.js)
&lt;strong&gt;Ideal para&lt;/strong&gt;: Aplicaciones web modernas, equipos TypeScript, proyectos Next.js&lt;/p&gt;
&lt;p&gt;Payload es el CMS headless de código abierto de más rápido crecimiento en 2025-2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enfoque &lt;strong&gt;config-as-code&lt;/strong&gt;: define tipos de contenido en archivos TypeScript, obtiene APIs auto-generadas, UI de admin y definiciones de tipos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración profunda con Next.js&lt;/strong&gt;: Payload puede ejecutarse dentro de una aplicación Next.js, compartiendo el mismo proceso del servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Payload 3.0&lt;/strong&gt; usa React Server Components para el panel de administración, logrando un rendimiento excelente&lt;/li&gt;
&lt;li&gt;Control de acceso, localización, versiones, borradores y gestión de medios integrados&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Nativo en TypeScript con seguridad de tipos de extremo a extremo, excelente DX (experiencia de desarrollo), integración con Next.js, comunidad de rápido crecimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Ecosistema más joven que Strapi, menos plugins comunitarios, centrado en Next.js (menos ideal para stacks fuera de Next.js).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Payload es la opción principal para equipos TypeScript-first que construyen con Next.js. Representa la proxima generación de CMS headless de código abierto.&lt;/p&gt;
&lt;h2 id=&quot;7-directus---el-cms-database-first&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#7-directus---el-cms-database-first&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;7. Directus - el CMS database-first&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS headless (envuelve cualquier base de datos SQL)
&lt;strong&gt;Licencia&lt;/strong&gt;: BSL / GPL despues de 3 años
&lt;strong&gt;Lenguaje&lt;/strong&gt;: TypeScript (Node.js)
&lt;strong&gt;Ideal para&lt;/strong&gt;: Proyectos con bases de datos existentes, herramientas internas, aplicaciones con uso intensivo de datos&lt;/p&gt;
&lt;p&gt;Directus adopta un enfoque único: en lugar de definir contenido en un CMS, lo apuntas a una base de datos SQL existente y genera una interfaz de administración y API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soporta PostgreSQL, MySQL, MariaDB, SQLite, MS SQL, Oracle y CockroachDB&lt;/li&gt;
&lt;li&gt;Auto-genera APIs REST y GraphQL a partir del esquema de la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Directus Cloud&lt;/strong&gt; para hosting gestionado, o autoalojamiento en cualquier servidor&lt;/li&gt;
&lt;li&gt;Control de acceso extensivo basado en roles con permisos a nivel de campo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Funciona con bases de datos existentes, sin bloqueo de proveedor (tus datos siempre estan en SQL estándar), soporta multiples motores de bases de datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Menos opinionado (requiere más decisiones), la UI de admin puede sentirse compleja para editores de contenido, comunidad más pequeña que Strapi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Directus es ideal cuando tienes una base de datos existente y necesitas una capa CMS encima. No es el mejor punto de partida para proyectos desde cero.&lt;/p&gt;
&lt;h2 id=&quot;8-sanity---la-nube-de-contenido-estructurado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#8-sanity---la-nube-de-contenido-estructurado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;8. Sanity - la nube de contenido estructurado&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS headless SaaS (alojado en la nube)
&lt;strong&gt;Licencia&lt;/strong&gt;: Propietaria (nivel gratuito disponible)
&lt;strong&gt;Lenguaje&lt;/strong&gt;: JavaScript/TypeScript (Studio basado en React)
&lt;strong&gt;Ideal para&lt;/strong&gt;: Equipos de contenido grandes, publicación multicanal, estructuras de contenido complejas&lt;/p&gt;
&lt;p&gt;Sanity se diferencia con colaboración en tiempo real y un estudio de edicion personalizable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sanity Studio&lt;/strong&gt; es una aplicación React que puedes personalizar y extender completamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colaboración en tiempo real&lt;/strong&gt; (edicion concurrente al estilo Google Docs)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lenguaje de consulta GROQ&lt;/strong&gt; proporciona consultas de contenido potentes más alla de REST/GraphQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Lake&lt;/strong&gt; almacena contenido estructurado que puede ser consultado y transformado para cualquier canal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Colaboración en tiempo real, modelado de contenido extremadamente flexible, estudio personalizable, consultas GROQ potentes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Propietario (bloqueo de proveedor), costes que escalan con el uso de API y tamaño del dataset, requiere desarrollador para configurar y personalizar el estudio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Sanity es excelente para equipos de contenido grandes que necesitan colaboración en tiempo real y estructuras de contenido complejas. El modelo de costes requiere una evaluación cuidadosa a escala.&lt;/p&gt;
&lt;h2 id=&quot;9-contentful---el-estándar-saas-empresarial&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#9-contentful---el-estándar-saas-empresarial&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;9. Contentful - el estándar SaaS empresarial&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: CMS headless SaaS (alojado en la nube)
&lt;strong&gt;Licencia&lt;/strong&gt;: Propietaria (nivel gratuito disponible)
&lt;strong&gt;Lenguaje&lt;/strong&gt;: Agnostico de plataforma (APIs REST/GraphQL)
&lt;strong&gt;Ideal para&lt;/strong&gt;: Gestión multimarca empresarial, operaciones de contenido globales, industrias reguladas&lt;/p&gt;
&lt;p&gt;Contentful se ha establecido como el CMS headless SaaS empresarial por defecto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Funcionalidades de &lt;strong&gt;Content Orchestration&lt;/strong&gt; para gestionar contenido a través de marcas, regiones y canales&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contentful Studio&lt;/strong&gt; proporciona ensamblaje visual de contenido y previsualizacion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Framework&lt;/strong&gt; permite integraciones personalizadas directamente en la interfaz de administración&lt;/li&gt;
&lt;li&gt;Certificaciones de cumplimiento SOC 2, ISO 27001, RGPD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Fiabilidad de nivel empresarial, infraestructura de API madura, fuertes certificaciones de cumplimiento, marketplace de integraciones extenso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Costoso a escala (precios basados en espacios, entornos y llamadas API), bloqueo de proveedor, puede sentirse sobreingeniado para proyectos pequeños.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Contentful es la opción segura empresarial para organizaciónes que necesitan fiabilidad SaaS, cumplimiento normativo y estan dispuestas a pagar por ello. No apto para proyectos con presupuesto ajustado.&lt;/p&gt;
&lt;h2 id=&quot;10-astro-content-collections---el-enfoque-developer-first&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#10-astro-content-collections---el-enfoque-developer-first&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;10. Astro (Content Collections) - el enfoque developer-first&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tipo&lt;/strong&gt;: Framework web con capacidades CMS basadas en archivos
&lt;strong&gt;Licencia&lt;/strong&gt;: MIT (gratuito, código abierto)
&lt;strong&gt;Lenguaje&lt;/strong&gt;: TypeScript/JavaScript
&lt;strong&gt;Ideal para&lt;/strong&gt;: Blogs de desarrolladores, sitios de documentación, sitios de marketing, contenido estatico&lt;/p&gt;
&lt;p&gt;Astro no es un CMS tradicional, pero su funcionalidad Content Collections proporciona funcionalidad similar a un CMS para contenido gestionado por desarrolladores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Content Collections&lt;/strong&gt;: archivos Markdown/MDX con frontmatter validado por esquema y seguridad de tipos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Layer API&lt;/strong&gt; (Astro 5): carga contenido desde cualquier fuente (archivos, APIs, bases de datos) con acceso unificado y seguridad de tipos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cero JS por defecto&lt;/strong&gt;: Astro no envia JavaScript a menos que anadeas explicitamente componentes interactivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura de Islas&lt;/strong&gt;: los componentes interactivos se hidratan de forma independiente, logrando excelentes Core Web Vitals&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este mismo sitio (wppoland.com) funciona con Astro con Content Collections para artículos del blog y páginas de servicios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;: Mejor rendimiento (cero JS por defecto), contenido con seguridad de tipos, cualquier framework de UI (React, Vue, Svelte), excelente experiencia de desarrollo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;: Sin interfaz de administración visual para no desarrolladores, los cambios de contenido requieren commits de código, no apto para equipos de contenido sin conocimiento de Git.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Veredicto 2026&lt;/strong&gt;: Astro es ideal para sitios de contenido gestionados por desarrolladores donde el rendimiento es una prioridad. No es un reemplazo de WordPress o un CMS headless cuando editores no técnicos necesitan acceso.&lt;/p&gt;
&lt;h2 id=&quot;matriz-comparativa-10-plataformas-cms-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#matriz-comparativa-10-plataformas-cms-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Matriz comparativa: 10 plataformas CMS en 2026&lt;/h2&gt;



















































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;CMS&lt;/th&gt;&lt;th&gt;Tipo&lt;/th&gt;&lt;th&gt;Licencia&lt;/th&gt;&lt;th&gt;Cuota de mercado&lt;/th&gt;&lt;th&gt;Headless&lt;/th&gt;&lt;th&gt;Editor visual&lt;/th&gt;&lt;th&gt;Autoalojado&lt;/th&gt;&lt;th&gt;Ideal para&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;WordPress&lt;/td&gt;&lt;td&gt;Tradicional + headless&lt;/td&gt;&lt;td&gt;GPL&lt;/td&gt;&lt;td&gt;43,5%&lt;/td&gt;&lt;td&gt;Via REST/GraphQL&lt;/td&gt;&lt;td&gt;Si (Gutenberg)&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Sitios web generales, e-commerce&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Drupal&lt;/td&gt;&lt;td&gt;Tradicional + headless&lt;/td&gt;&lt;td&gt;GPL&lt;/td&gt;&lt;td&gt;1,5%&lt;/td&gt;&lt;td&gt;Si (nativo)&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Empresarial, gobierno&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Joomla&lt;/td&gt;&lt;td&gt;Tradicional&lt;/td&gt;&lt;td&gt;GPL&lt;/td&gt;&lt;td&gt;1,2%&lt;/td&gt;&lt;td&gt;Limitado&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Sitios comunitarios multilingues&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ghost&lt;/td&gt;&lt;td&gt;Plataforma de publicación&lt;/td&gt;&lt;td&gt;MIT&lt;/td&gt;&lt;td&gt;0,1%&lt;/td&gt;&lt;td&gt;Si (APIs)&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Newsletters, membresias&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Strapi&lt;/td&gt;&lt;td&gt;Headless&lt;/td&gt;&lt;td&gt;MIT/Enterprise&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;td&gt;Si (nativo)&lt;/td&gt;&lt;td&gt;Solo admin&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Aplicaciones web personalizadas&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Payload&lt;/td&gt;&lt;td&gt;Headless&lt;/td&gt;&lt;td&gt;MIT&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;td&gt;Si (nativo)&lt;/td&gt;&lt;td&gt;Solo admin&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Proyectos TypeScript/Next.js&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Directus&lt;/td&gt;&lt;td&gt;Headless&lt;/td&gt;&lt;td&gt;BSL&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;td&gt;Si (nativo)&lt;/td&gt;&lt;td&gt;Solo admin&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Proyectos con BD existente&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sanity&lt;/td&gt;&lt;td&gt;Headless (SaaS)&lt;/td&gt;&lt;td&gt;Propietaria&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;td&gt;Si (nativo)&lt;/td&gt;&lt;td&gt;Personalizable&lt;/td&gt;&lt;td&gt;Solo nube&lt;/td&gt;&lt;td&gt;Equipos de contenido grandes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Contentful&lt;/td&gt;&lt;td&gt;Headless (SaaS)&lt;/td&gt;&lt;td&gt;Propietaria&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;td&gt;Si (nativo)&lt;/td&gt;&lt;td&gt;Si (Studio)&lt;/td&gt;&lt;td&gt;Solo nube&lt;/td&gt;&lt;td&gt;Multimarca empresarial&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Astro&lt;/td&gt;&lt;td&gt;Framework + CMS&lt;/td&gt;&lt;td&gt;MIT&lt;/td&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;td&gt;N/A (estatico)&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Si&lt;/td&gt;&lt;td&gt;Contenido gestionado por devs&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;que-paso-con-la-lista-de-2008&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#que-paso-con-la-lista-de-2008&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Que paso con la lista de 2008?&lt;/h2&gt;
&lt;p&gt;Para contexto histórico, esto es lo que paso con los sistemas originales que recomendamos en 2008:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frog CMS&lt;/strong&gt;: Abandonado. Última versión en 2009.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SilverStripe&lt;/strong&gt;: Renombrado a Silverstripe CMS. Aun mantenido, usado principalmente en proyectos gubernamentales de Nueva Zelanda/Australia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;miaCMS&lt;/strong&gt;: Muerto. Fork de Mambo (predecesor de Joomla), abandonado alrededor de 2010.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MoinMoin&lt;/strong&gt;: Aun existe como motor wiki en Python pero irrelevante como CMS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ImpressCMS&lt;/strong&gt;: Técnicamente mantenido pero con adopcion insignificante.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MODx (MODX)&lt;/strong&gt;: Aun vivo como MODX Revolution. Pequeña comunidad devota de desarrolladores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Textpattern&lt;/strong&gt;: Aun existe con una comunidad minuscula. La opción del minimalista.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Radiant&lt;/strong&gt;: Abandonado. Basado en Ruby, última actualización significativa alrededor de 2014.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CMS Made Simple&lt;/strong&gt;: Aun mantenido, versión 2.x. Comunidad pequeña.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liferay&lt;/strong&gt;: Pivoto hacia plataforma portal/DXP empresarial Java. Sirve a bancos y grandes corporaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La leccion de 2008 es clara: &lt;strong&gt;los ecosistemas ganan, no las funcionalidades&lt;/strong&gt;. WordPress gano porque construyo el ecosistema más grande de plugins, temas, proveedores de hosting y talento de desarrollo. Los sistemas que sobrevivieron (Drupal, Joomla) tenian sus propios ecosistemas. Los que murieron se enfocaron en la elegancia técnica sin construir una comunidad sostenible.&lt;/p&gt;
&lt;h2 id=&quot;como-elegir-un-marco-de-decision&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#como-elegir-un-marco-de-decision&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Como elegir: un marco de decision&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Elige WordPress si&lt;/strong&gt;: Necesitas un CMS probado con el mayor ecosistema de plugins, tus editores de contenido no son técnicos, necesitas WooCommerce para e-commerce, o quieres las opciones de hosting más amplias.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige un CMS headless (Strapi/Payload) si&lt;/strong&gt;: Necesitas entrega de contenido API-first, tu frontend esta construido con React/Next.js/Astro, publicas contenido en multiples canales (web, móvil, IoT), o tu equipo de desarrollo prefiere TypeScript.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige un CMS SaaS (Contentful/Sanity) si&lt;/strong&gt;: Necesitas certificaciones de cumplimiento empresarial, colaboración multi-editor en tiempo real, infraestructura gestionada, o prefieres costes mensuales predecibles sobre DevOps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elige Astro con Content Collections si&lt;/strong&gt;: Tu contenido es gestionado por desarrolladores a través de Git, el rendimiento es tu maxima prioridad, tu sitio es principalmente contenido estatico (blog, documentación, marketing), o quieres cero sobrecarga de JavaScript.&lt;/p&gt;
&lt;p&gt;El mercado CMS en 2026 no es una carrera de todo o nada. Diferentes herramientas sirven diferentes necesidades. La mejor opción depende de tu equipo, tu contenido y tus usuarios, no de la cuota de mercado o el hype.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y visibilidad&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>cms</category><category>history</category><category domain="tag">cms</category><category domain="tag">wordpress</category><category domain="tag">headless</category><category domain="tag">strapi</category><category domain="tag">contentful</category><category domain="tag">astro</category><enclosure url="https://wppoland.com/images/og/wordpress-developer-at-work-min-flip.jpg" type="image/jpeg"/></item><item><title>Avatares vectoriales e iconos gratuitos para diseño UI en 2026</title><link>https://wppoland.com/es/free-vector-avatars-icons-ui-design/</link><guid isPermaLink="true">https://wppoland.com/es/free-vector-avatars-icons-ui-design/</guid><description>Guia completa de recursos vectoriales gratuitos para diseño UI. Evolucion desde iconos PSD hasta bibliotecas SVG modernas, generadores de avatares, animaciones Lottie y técnicas profesionales de implementación en WordPress.</description><pubDate>Fri, 24 Oct 2008 21:26:23 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduccion-la-evolucion-del-diseño-visual-en-la-web&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#introduccion-la-evolucion-del-diseño-visual-en-la-web&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Introduccion: La evolucion del diseño visual en la web&lt;/h2&gt;
&lt;p id=&quot;introduccion&quot;&gt;El mundo del diseño web ha experimentado una transformación radical en la última decada. Lo que antes requeria licencias costosas de Adobe Photoshop y horas de trabajo manual pixel a pixel, ahora se resuelve con bibliotecas SVG gratuitas, generadores de avatares programaticos y animaciones Lottie interactivas. Para los desarrolladores de WordPress y disenadores UI, esta evolucion representa una oportunidad extraordinaria: crear interfaces visualmente impactantes sin presupuestos millonarios.&lt;/p&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;servicios de desarrollo WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En esta guía exhaustiva, exploramos el panorama completo de recursos vectoriales gratuitos disponibles en 2026, desde las bibliotecas de iconos más populares hasta las técnicas avanzadas de implementación en proyectos WordPress empresariales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;la-era-dorada-de-los-iconos-psd-un-vistazo-al-pasado&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-era-dorada-de-los-iconos-psd-un-vistazo-al-pasado&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La era dorada de los iconos PSD: Un vistazo al pasado&lt;/h2&gt;
&lt;p&gt;Hace apenas quince años, el flujo de trabajo estándar para cualquier disenador web comenzaba con Photoshop. Los iconos se descargaban como archivos PSD o PNG con resoluciones fijas - generalmente 16x16, 32x32 y 64x64 pixeles. Cada tamaño era un archivo separado, y si necesitabas un icono en un tamaño intermedio, te tocaba rediseñarlo desde cero o aceptar la pixelacion.&lt;/p&gt;
&lt;p&gt;Las colecciones de iconos más populares de esa epoca - como Fugue Icons, Silk Icons de FamFamFam y Tango Desktop Project - fueron revolucionarias en su momento. Ofrecian cientos de iconos consistentes en estilo, lo que permitia a los disenadores construir interfaces coherentes sin dibujar cada icono manualmente.&lt;/p&gt;
&lt;p&gt;El problema fundamental era la falta de escalabilidad. En un mundo donde los dispositivos iban desde monitores CRT de 72 DPI hasta las primeras pantallas Retina de Apple, los iconos basados en pixeles se rompian constantemente. Cada resolución nueva significaba producir un nuevo juego completo de iconos.&lt;/p&gt;
&lt;h2 id=&quot;la-revolucion-svg-escalabilidad-infinita&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#la-revolucion-svg-escalabilidad-infinita&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;La revolucion SVG: Escalabilidad infinita&lt;/h2&gt;
&lt;p&gt;La adopcion masiva de SVG (Scalable Vector Graphics) cambio las reglas del juego completamente. A diferencia de los formatos rasterizados como PNG o JPG, un archivo SVG describe formás geometricas mediante ecuaciones matemáticas, no pixeles individuales. Esto significa que un único archivo SVG se renderiza perfectamente a cualquier tamaño - desde un favicon de 16 pixeles hasta un cartel impreso de dos metros.&lt;/p&gt;
&lt;h3 id=&quot;ventajas-técnicas-de-svg-para-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ventajas-técnicas-de-svg-para-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ventajas técnicas de SVG para WordPress&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Escalabilidad perfecta&lt;/strong&gt;: Un solo archivo funciona en todos los tamaños y resoluciones de pantalla, eliminando la necesidad de multiples versiones del mismo icono.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Peso ultra ligero&lt;/strong&gt;: Un icono SVG tipico pesa entre 500 bytes y 5 KB, comparado con el equivalente PNG que puede pesar 10-50 KB. En una página con 20 iconos, esto representa un ahorro de cientos de kilobytes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Estilizable con CSS&lt;/strong&gt;: Los SVG inlineados se pueden colorear, animar y transformar usando CSS puro, sin necesidad de editores graficos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Accesibilidad mejorada&lt;/strong&gt;: Los SVG soportan etiquetas &lt;code&gt;&amp;#x3C;title&gt;&lt;/code&gt; y &lt;code&gt;&amp;#x3C;desc&gt;&lt;/code&gt; que los lectores de pantalla interpretan, haciendo los iconos accesibles para usuarios con discapacidad visual.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Animacion nativa&lt;/strong&gt;: Con CSS Animations o SMIL, los SVG pueden animarse directamente sin JavaScript adicional.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;implementación-segura-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-segura-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación segura en WordPress&lt;/h3&gt;
&lt;p&gt;WordPress bloquea la subida de archivos SVG por defecto, y con buena razon. Un archivo SVG puede contener código JavaScript malicioso incrustado en etiquetas &lt;code&gt;&amp;#x3C;script&gt;&lt;/code&gt; o atributos de eventos como &lt;code&gt;onload&lt;/code&gt;. Para habilitar SVG de forma segura en WordPress, recomendamos una estrategia de sanitizacion por capas:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Ejemplo de filtro para permitir SVG sanitizado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add_filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;upload_mimes&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($mimes) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $mimes[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;svg&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;image/svg+xml&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $mimes;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sin embargo, este fragmento solo no es suficiente. Se debe complementar con un plugin de sanitizacion que elimine todos los elementos potencialmente peligrosos del SVG antes de almacenarlo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;las-mejores-bibliotecas-de-iconos-svg-gratuitas-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#las-mejores-bibliotecas-de-iconos-svg-gratuitas-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Las mejores bibliotecas de iconos SVG gratuitas en 2026&lt;/h2&gt;
&lt;p&gt;El ecosistema de iconos gratuitos ha madurado enormemente. Estas son las bibliotecas que todo desarrollador WordPress deberia conocer:&lt;/p&gt;
&lt;h3 id=&quot;heroicons-de-tailwind-labs&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#heroicons-de-tailwind-labs&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Heroicons (de Tailwind Labs)&lt;/h3&gt;
&lt;p&gt;Con más de 300 iconos en dos estilos (outline y solid), Heroicons se ha convertido en la referencia para proyectos que utilizan Tailwind CSS. Cada icono esta optimizado para tamaños de 20px y 24px, y se distribuye como componentes React o SVG puro.&lt;/p&gt;
&lt;h3 id=&quot;lucide-icons&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#lucide-icons&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Lucide Icons&lt;/h3&gt;
&lt;p&gt;Lucide es una bifurcacion comunitaria de Feather Icons con más de 1.400 iconos. Su consistencia visual es excepcional: todos los iconos comparten el mismo grosor de trazo, radio de esquina y tamaño de cuadricula. Para WordPress, Lucide ofrece un paquete npm ligero que permite importar solo los iconos necesarios.&lt;/p&gt;
&lt;h3 id=&quot;phosphor-icons&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#phosphor-icons&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Phosphor Icons&lt;/h3&gt;
&lt;p&gt;Con más de 7.000 iconos en seis estilos diferentes (thin, light, regular, bold, fill y duotone), Phosphor es la biblioteca más versatil disponible gratuitamente. Su estilo “duotone” es particularmente útil para interfaces que necesitan jerarquía visual sin recurrir a multiples colores.&lt;/p&gt;
&lt;h3 id=&quot;material-symbols-google&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#material-symbols-google&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Material Symbols (Google)&lt;/h3&gt;
&lt;p&gt;La evolucion de Material Icons, Material Symbols introduce iconos variables que se ajustan en peso, grado y tamaño optico mediante un único archivo de fuente variable. Esto significa que puedes controlar la apariencia de un icono con CSS custom properties, ofreciendo una flexibilidad sin precedentes.&lt;/p&gt;
&lt;h3 id=&quot;tabler-icons&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tabler-icons&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tabler Icons&lt;/h3&gt;
&lt;p&gt;Con más de 4.900 iconos SVG gratuitos, Tabler Icons destaca por su consistencia y su enfoque en la accesibilidad. Cada icono utiliza un stroke-width consistente de 2px y un grid de 24x24, lo que los hace perfectos para interfaces profesionales.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;generadores-de-avatares-identidad-visual-programatica&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#generadores-de-avatares-identidad-visual-programatica&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Generadores de avatares: Identidad visual programatica&lt;/h2&gt;
&lt;p&gt;Los avatares generados programaticamente han revolucionado como las aplicaciones web manejan la identidad visual de sus usuarios. En lugar de depender de fotos de perfil subidas (que a menudo estan ausentes), los generadores modernos crean avatares únicos y consistentes basandose en un seed (semilla) - tipicamente el nombre o email del usuario.&lt;/p&gt;
&lt;h3 id=&quot;dicebear&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#dicebear&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;DiceBear&lt;/h3&gt;
&lt;p&gt;DiceBear es el lider indiscutible en generación de avatares programaticos. Su API genera avatares SVG en docenas de estilos diferentes, desde siluetas minimalistas hasta personajes pixelados al estilo retro. La integración con WordPress es sencilla:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; get_dicebear_avatar&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user_email, $style &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;avataaars&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    $seed &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; md5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;strtolower&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;trim&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;($user_email)));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;https://api.dicebear.com/7.x/{&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}/svg?seed={&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$seed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;boring-avatars&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#boring-avatars&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Boring Avatars&lt;/h3&gt;
&lt;p&gt;Desarrollado por el equipo de Boring Company, este generador crea avatares abstractos usando formás geometricas. Cada avatar es determinista - el mismo nombre siempre produce el mismo avatar - lo que garantiza consistencia visual a través de sesiones.&lt;/p&gt;
&lt;h3 id=&quot;multiavatar&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#multiavatar&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Multiavatar&lt;/h3&gt;
&lt;p&gt;Multiavatar genera más de 12 mil millones de avatares únicos combinando elementos faciales de diferentes estilos culturales. Es particularmente popular en aplicaciones con audiencias globales donde la diversidad visual es importante.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;animaciones-lottie-el-futuro-de-la-microinteraccion&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#animaciones-lottie-el-futuro-de-la-microinteraccion&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Animaciones Lottie: El futuro de la microinteraccion&lt;/h2&gt;
&lt;p&gt;Conoce más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Las animaciones Lottie representan el estado del arte en microinteracciones web. Creadas en After Effects y exportadas como JSON ligero, las animaciones Lottie son vectoriales, interactivas y dramaticamente más ligeras que GIF o video.&lt;/p&gt;
&lt;h3 id=&quot;por-que-lottie-supera-a-las-alternativas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-que-lottie-supera-a-las-alternativas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por que Lottie supera a las alternativas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Peso&lt;/strong&gt;: Una animacion Lottie tipica pesa 5-20 KB. El GIF equivalente pesaria 200-500 KB.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad&lt;/strong&gt;: Al ser vectorial, una animacion Lottie se ve perfecta en cualquier resolución.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interactividad&lt;/strong&gt;: Las animaciones pueden responder a scroll, hover, clic y otros eventos del usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accesibilidad&lt;/strong&gt;: A diferencia del GIF, las animaciones Lottie pueden incluir metadatos accesibles y respetar la preferencia &lt;code&gt;prefers-reduced-motion&lt;/code&gt; del usuario.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;bibliotecas-de-animaciones-lottie-gratuitas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#bibliotecas-de-animaciones-lottie-gratuitas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Bibliotecas de animaciones Lottie gratuitas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;LottieFiles&lt;/strong&gt; es la plataforma principal para encontrar animaciones Lottie gratuitas. Con más de 100.000 animaciones disponibles, cubre practicamente cualquier necesidad: iconos animados de carga, transiciones de estado, ilustraciones explicativas y efectos de celebracion.&lt;/p&gt;
&lt;h3 id=&quot;implementación-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#implementación-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Implementación en WordPress&lt;/h3&gt;
&lt;p&gt;Para integrar animaciones Lottie en WordPress sin afectar el rendimiento, recomendamos cargar el reproductor de forma diferida:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;lottie-player&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/animations/loading-spinner.json&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  background&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;transparent&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  speed&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  style&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;width: 300px; height: 300px&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  loop&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  autoplay&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  loading&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;lottie-player&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El atributo &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; asegura que la animacion solo se carga cuando entra en el viewport del usuario, evitando impacto negativo en las metricas de Core Web Vitals.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;h3 id=&quot;configuración-técnica-y-auditoria&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-técnica-y-auditoria&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración técnica y auditoria&lt;/h3&gt;
&lt;p&gt;Comienza realizando una auditoria completa de tu configuración de recursos visuales actual. Utiliza herramientas como Google Search Console, Screaming Frog o SEMrush para identificar problemas existentes y oportunidades. Documenta tus metricas base incluyendo rankings actuales, tráfico organico y tasas de conversión.&lt;/p&gt;
&lt;p&gt;Los sitios WordPress que migran de iconos PNG a SVG tipicamente ven mejoras del 15-30% en tiempos de carga de página, particularmente en conexiónes móviles donde cada kilobyte cuenta.&lt;/p&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-optimización-de-contenido-visual&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido-visual&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización de contenido visual&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de investigación de recursos&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica las bibliotecas de iconos que mejor se alinean con tu identidad de marca&lt;/li&gt;
&lt;li&gt;Analiza la compatibilidad de licencias (MIT, Apache 2.0, CC BY)&lt;/li&gt;
&lt;li&gt;Mapea los iconos necesarios para cada sección del sitio&lt;/li&gt;
&lt;li&gt;Identifica brechas donde se necesitan iconos personalizados&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación e implementación de iconos&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Establece un sistema de iconos unificado con tamaños y estilos consistentes&lt;/li&gt;
&lt;li&gt;Crea un sprite SVG para iconos usados frecuentemente&lt;/li&gt;
&lt;li&gt;Implementa lazy loading para iconos below-the-fold&lt;/li&gt;
&lt;li&gt;Optimiza SVGs con herramientas como SVGO para minimizar el peso&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asegura la responsividad móvil de todos los elementos vectoriales&lt;/li&gt;
&lt;li&gt;Mejora la velocidad de carga de página eliminando recursos rasterizados innecesarios&lt;/li&gt;
&lt;li&gt;Implementa datos estructurados para imágenes y contenido visual&lt;/li&gt;
&lt;li&gt;Corrige errores de rastreo relacionados con recursos graficos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;medicion-del-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-del-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion del éxito&lt;/h3&gt;
&lt;p&gt;Rastrea estos indicadores clave de rendimiento despues de migrar a recursos vectoriales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reduccion del peso de página&lt;/strong&gt;: Objetivo de -30% en recursos graficos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejora de LCP&lt;/strong&gt;: Los SVG inline se renderizan más rápido que las imágenes externas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasa de clics (CTR)&lt;/strong&gt;: Los iconos claros y consistentes mejoran la navegabilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasas de conversión&lt;/strong&gt;: Una identidad visual profesional genera más confianza&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasas de rebote&lt;/strong&gt;: Las interfaces visualmente atractivas retienen mejor a los usuarios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu estrategia basandote en lo que funciona y lo que no. La optimización visual es un proceso continuo, no una tarea única.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sistema-de-diseño-y-gobernanza-de-iconos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#sistema-de-diseño-y-gobernanza-de-iconos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Sistema de diseño y gobernanza de iconos&lt;/h2&gt;
&lt;p&gt;Para proyectos empresariales, mantener la consistencia visual a través de multiples equipos y productos requiere un sistema de gobernanza de iconos formal. Esto incluye:&lt;/p&gt;
&lt;h3 id=&quot;documentación-y-guía-de-estilo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#documentación-y-guía-de-estilo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Documentación y guía de estilo&lt;/h3&gt;
&lt;p&gt;Crea un inventario centralizado de todos los iconos utilizados en tu ecosistema digital. Cada icono debe tener documentación que incluya: nombre canonico, casos de uso aprobados, tamaños minimos permitidos y variaciones de color. Herramientas como Figma facilitan la creación de bibliotecas de componentes compartidos.&lt;/p&gt;
&lt;h3 id=&quot;optimización-de-rendimiento-de-iconos-en-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#optimización-de-rendimiento-de-iconos-en-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Optimización de rendimiento de iconos en WordPress&lt;/h3&gt;
&lt;p&gt;Para sitios WordPress con grandes volumenes de iconos, implementa un sistema de sprites SVG que combine todos los iconos frecuentes en un único archivo. Esto reduce las solicitudes HTTP y mejora dramaticamente el tiempo de carga en páginas con muchos iconos.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Referencia a un icono del sprite --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;icon&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/sprites/icons.svg#search&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;accesibilidad-de-iconos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#accesibilidad-de-iconos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Accesibilidad de iconos&lt;/h3&gt;
&lt;p&gt;Cada icono que transmite significado debe tener texto alternativo. Los iconos puramente decorativos deben marcarse con &lt;code&gt;aria-hidden=&quot;true&quot;&lt;/code&gt; para evitar confundir a los lectores de pantalla:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Icono significativo --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; role&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;img&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; aria-label&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Buscar&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/sprites/icons.svg#search&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;&amp;#x3C;!-- Icono decorativo --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;/sprites/icons.svg#decorative-star&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tendencias-emergentes-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#tendencias-emergentes-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Tendencias emergentes en 2026&lt;/h2&gt;
&lt;h3 id=&quot;iconos-variables-con-css&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#iconos-variables-con-css&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Iconos variables con CSS&lt;/h3&gt;
&lt;p&gt;La nueva específicacion de fuentes variables permite crear iconos que se adaptan suavemente entre diferentes pesos y tamaños opticos usando CSS custom properties. Google Material Symbols lidera esta tendencia.&lt;/p&gt;
&lt;h3 id=&quot;ia-generativa-para-iconos-personalizados&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ia-generativa-para-iconos-personalizados&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IA generativa para iconos personalizados&lt;/h3&gt;
&lt;p&gt;Herramientas como Recraft AI y IconifyAI permiten generar iconos SVG personalizados a partir de descripciones en lenguaje natural. Aunque la calidad no iguala al diseño humano experto, es útil para prototipado rápido.&lt;/p&gt;
&lt;h3 id=&quot;modo-oscuro-automático&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#modo-oscuro-automático&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Modo oscuro automático&lt;/h3&gt;
&lt;p&gt;Las bibliotecas modernas ofrecen variantes automáticas para modo claro y oscuro usando &lt;code&gt;currentColor&lt;/code&gt; en SVG y la media query &lt;code&gt;prefers-color-scheme&lt;/code&gt;, eliminando la necesidad de mantener dos conjuntos de iconos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion-construyendo-interfaces-profesionales-con-recursos-gratuitos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-construyendo-interfaces-profesionales-con-recursos-gratuitos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: Construyendo interfaces profesionales con recursos gratuitos&lt;/h2&gt;
&lt;p&gt;El ecosistema de recursos vectoriales gratuitos en 2026 es extraordinariamente maduro. Con bibliotecas como Heroicons, Lucide y Phosphor, generadores como DiceBear y animaciones Lottie, cualquier &lt;a href=&quot;/es/desarrollador-wordpress/&quot;&gt;desarrollador WordPress&lt;/a&gt; puede construir interfaces visualmente impactantes sin presupuestos de diseño excesivos.&lt;/p&gt;
&lt;p&gt;La clave esta en la implementación correcta: sanitizacion de SVG para seguridad, sprites para rendimiento, y atributos ARIA para accesibilidad. Estos no son detalles opcionales - son requisitos profesionales en 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Necesitas una auditoria de rendimiento visual para tu sitio WordPress? &lt;a href=&quot;/es/contacto/&quot;&gt;Contacta con WPPoland&lt;/a&gt; para una evaluación profesional de tu identidad visual digital.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>design</category><category>resources</category><category>ui-ux</category><category>wordpress</category><category domain="tag">avatars</category><category domain="tag">svg</category><category domain="tag">icons</category><category domain="tag">ui design</category><category domain="tag">vectors</category><category domain="tag">icon libraries</category><category domain="tag">lottie animations</category><category domain="tag">design resources</category><enclosure url="https://wppoland.com/images/og/professional-developer-workspace.jpg" type="image/jpeg"/></item><item><title>(Probablemente) No necesitas jQuery en 2026: la guía completa de migración</title><link>https://wppoland.com/es/jquery-vs-vanilla-js-migration-guide/</link><guid isPermaLink="true">https://wppoland.com/es/jquery-vs-vanilla-js-migration-guide/</guid><description>De $.click() a addEventListener, de $.ajax() a fetch(). Una guía técnica completa para desarrolladores WordPress que migran de jQuery a JavaScript vanilla moderno (ES2024+), incluyendo Web Components, benchmarks de rendimiento y estrategias de migración.</description><pubDate>Wed, 08 Oct 2008 20:53:15 GMT</pubDate><content:encoded>&lt;p&gt;jQuery resolvió problemas reales de compatibilidad entre navegadores durante más de una década. En 2008, cuando este artículo fue publicado originalmente, escribir JavaScript cross-browser sin jQuery era genuinamente doloroso. Internet Explorer 6 manejaba los eventos de forma diferente, los selectores CSS eran inconsistentes y AJAX requería implementaciónes específicas de XMLHttpRequest para cada navegador.&lt;/p&gt;
&lt;p&gt;Descubre más sobre &lt;a href=&quot;/es/optimizacion-velocidad-wordpress/&quot;&gt;optimización de velocidad WordPress&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;En 2026, cada problema que jQuery resolvió ahora se maneja de forma nativa por los navegadores. La pregunta ya no es &lt;em&gt;si&lt;/em&gt; migrar, sino &lt;em&gt;cómo&lt;/em&gt; hacerlo de forma segura sin romper la funcionalidad existente.&lt;/p&gt;
&lt;h2 id=&quot;por-qué-jquery-es-deuda-técnica-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#por-qué-jquery-es-deuda-técnica-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Por qué jQuery es deuda técnica en 2026&lt;/h2&gt;
&lt;p&gt;jQuery 3.7 pesa 87KB sin comprimir (30KB gzipped). Eso puede sonar pequeño, pero considera lo que cuesta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Total Blocking Time (TBT)&lt;/strong&gt;: jQuery debe parsearse y ejecutarse antes de que cualquier código dependiente se ejecute. En dispositivos móviles de gama media, esto añade 150-300ms al TBT.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interaction to Next Paint (INP)&lt;/strong&gt;: El sistema de delegación de eventos de jQuery añade sobrecarga a cada interacción del usuario, empeorando mediblemente las puntuaciones INP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cadena de dependencias&lt;/strong&gt;: Cargar jQuery significa que cada script que depende de él debe esperar, creando una cascada de recursos bloqueantes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Código redundante&lt;/strong&gt;: Cada método jQuery que llamás tiene un equivalente nativo que el navegador ya incluye. Estás pagando dos veces por la misma funcionalidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;benchmarks-de-rendimiento-jquery-vs-vanilla-js&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#benchmarks-de-rendimiento-jquery-vs-vanilla-js&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Benchmarks de rendimiento: jQuery vs vanilla JS&lt;/h3&gt;
&lt;p&gt;Mediciones del mundo real en un tema WordPress con interacciones típicas (toggle de menú, cambio de pestañas, validación de formulario, carga AJAX de más contenido):&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Métrica&lt;/th&gt;&lt;th&gt;Con jQuery&lt;/th&gt;&lt;th&gt;Sin jQuery&lt;/th&gt;&lt;th&gt;Mejora&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Tamaño total JS&lt;/td&gt;&lt;td&gt;142KB&lt;/td&gt;&lt;td&gt;55KB&lt;/td&gt;&lt;td&gt;-61%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TBT (móvil)&lt;/td&gt;&lt;td&gt;480ms&lt;/td&gt;&lt;td&gt;180ms&lt;/td&gt;&lt;td&gt;-62%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;INP (p75)&lt;/td&gt;&lt;td&gt;220ms&lt;/td&gt;&lt;td&gt;95ms&lt;/td&gt;&lt;td&gt;-57%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LCP&lt;/td&gt;&lt;td&gt;2.1s&lt;/td&gt;&lt;td&gt;1.7s&lt;/td&gt;&lt;td&gt;-19%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Rendimiento Lighthouse&lt;/td&gt;&lt;td&gt;72&lt;/td&gt;&lt;td&gt;94&lt;/td&gt;&lt;td&gt;+22 puntos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Estos números provienen de un sitio WordPress en producción con GeneratePress y WooCommerce, probado en un Moto G Power (un dispositivo de gama media representativo).&lt;/p&gt;
&lt;h2 id=&quot;javascript-moderno-es2024-reemplaza-cada-patrón-de-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#javascript-moderno-es2024-reemplaza-cada-patrón-de-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;JavaScript moderno (ES2024+) reemplaza cada patrón de jQuery&lt;/h2&gt;
&lt;p&gt;La especificación ES2024, completamente soportada en Chrome 124+, Firefox 126+, Safari 17.4+ y Edge 124+, proporciona alternativas nativas para cada patrón común de jQuery.&lt;/p&gt;
&lt;h3 id=&quot;selección-dom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#selección-dom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Selección DOM&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; $buttons&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.btn&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; $container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;#main-container&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; $firstItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.menu-item:first&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vanilla JS (ES2024+)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; buttons&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.btn&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; container&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;main-container&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; firstItem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.menu-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Selección con alcance (como jQuery .find())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; navLinks&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; container.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;a.nav-link&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Diferencia clave&lt;/strong&gt;: &lt;code&gt;querySelectorAll&lt;/code&gt; devuelve un &lt;code&gt;NodeList&lt;/code&gt; estático, no una colección viva. Esto es realmente más seguro porque la lista no cambia inesperadamente cuando el DOM muta.&lt;/p&gt;
&lt;h3 id=&quot;manejo-de-eventos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manejo-de-eventos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manejo de eventos&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.btn&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;click&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toggleClass&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;active&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.menu-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // evento delegado&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vanilla JS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.btn&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;btn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  btn.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    btn.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toggle&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;active&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Delegación de eventos (reemplaza .on() con selector)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.menu&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; e.target.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;closest&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.menu-item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (item) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;    // manejar clic en elemento del menú&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El método &lt;code&gt;closest()&lt;/code&gt; es el equivalente moderno de la coincidencia de eventos delegados de jQuery. Recorre el árbol DOM hacia arriba para encontrar el ancestro más cercano que coincida con un selector.&lt;/p&gt;
&lt;h3 id=&quot;manipulación-de-clases&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manipulación-de-clases&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manipulación de clases&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$el.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;active&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$el.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hidden&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$el.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toggleClass&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;open&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$el.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;hasClass&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;visible&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vanilla JS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;el.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;active&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;el.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hidden&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;el.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toggle&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;open&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;el.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;contains&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;visible&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Múltiples clases a la vez&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;el.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;active&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;highlighted&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;animate-in&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;el.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hidden&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;collapsed&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ajax-con-fetch-api-y-asyncawait&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ajax-con-fetch-api-y-asyncawait&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;AJAX con fetch API y async/await&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ajax&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  url: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/wp/v2/posts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;GET&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  data: { per_page: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  success&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;renderPosts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(posts); },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;xhr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) { console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(xhr); }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vanilla JS (async/await moderno)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; loadPosts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  try&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/wp/v2/posts?per_page=5&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;response.ok) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      throw&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; Error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;`HTTP ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}: ${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;statusText&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}`&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; posts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    renderPosts&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(posts);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (error) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Error al cargar posts:&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, error);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// POST con nonce (patrón WordPress)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; submitForm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/custom/v1/submit&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    headers: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &apos;Content-Type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;application/json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &apos;X-WP-Nonce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: wpApiSettings.nonce,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    body: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(data),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;animaciones-sin-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#animaciones-sin-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Animaciones sin jQuery&lt;/h3&gt;
&lt;p&gt;Las funciones &lt;code&gt;.fadeIn()&lt;/code&gt;, &lt;code&gt;.slideDown()&lt;/code&gt; y &lt;code&gt;.animate()&lt;/code&gt; de jQuery pueden reemplazarse con transiciones CSS, animaciones CSS o la Web Animations API.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.panel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;slideDown&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.modal&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;fadeIn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Enfoque CSS (preferido por rendimiento)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En CSS:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// .panel { max-height: 0; overflow: hidden; transition: max-height 0.3s ease; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// .panel.open { max-height: 500px; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// En JS:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;panel.classList.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;open&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Web Animations API (para animaciones complejas y programáticas)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;modal.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;animate&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    { opacity: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;scale(0.95)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    { opacity: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, transform: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;scale(1)&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  { duration: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, easing: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;ease-out&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, fill: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;forwards&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La Web Animations API se ejecuta en el hilo del compositor, lo que significa que las animaciones no bloquean el hilo principal. Las animaciones de jQuery se ejecutan en el hilo principal y causan jank en dispositivos más lentos.&lt;/p&gt;
&lt;h3 id=&quot;manipulación-dom&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#manipulación-dom&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Manipulación DOM&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&amp;#x3C;div class=&quot;notice&quot;&gt;Hola&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;appendTo&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;#container&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.old-element&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;replaceWith&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&amp;#x3C;span&gt;Nuevo&amp;#x3C;/span&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.list&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;empty&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vanilla JS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; notice&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;div&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;notice.className &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;notice&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;notice.textContent &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Hola&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;container.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(notice);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O usa insertAdjacentHTML para cadenas HTML&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;container.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;insertAdjacentHTML&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;beforeend&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;&amp;#x3C;div class=&quot;notice&quot;&gt;Hola&amp;#x3C;/div&gt;&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Reemplazar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;oldElement.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;replaceWith&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(Object.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;assign&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;span&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;), { textContent: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;Nuevo&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Eliminar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;item.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vaciar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;list.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;replaceChildren&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;document-ready&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#document-ready&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Document ready&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(document).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;ready&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* ... */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* atajo */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vanilla JS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;DOMContentLoaded&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;  // DOM listo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O simplemente coloca tu &amp;#x3C;script&gt; con type=&quot;module&quot; al final del &amp;#x3C;body&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Los módulos se difieren por defecto, así que el DOM ya está listo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;web-components-el-reemplazo-moderno-de-los-plugins-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#web-components-el-reemplazo-moderno-de-los-plugins-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Web Components: el reemplazo moderno de los plugins jQuery&lt;/h2&gt;
&lt;p&gt;Los plugins jQuery proporcionaban componentes UI reutilizables (sliders, modales, pestañas, acordeones). En 2026, los Web Components ofrecen una alternativa basada en estándares con mejor encapsulación.&lt;/p&gt;
&lt;h3 id=&quot;ejemplo-un-componente-de-panel-desplegable&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#ejemplo-un-componente-de-panel-desplegable&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Ejemplo: un componente de panel desplegable&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; TogglePanel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; extends&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; HTMLElement&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  constructor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    super&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;attachShadow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ mode: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;open&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  connectedCallback&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;Alternar&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.shadowRoot.innerHTML &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; `&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &amp;#x3C;style&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        :host { display: block; margin: 1rem 0; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        button {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          width: 100%; padding: 0.75rem 1rem;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          background: #f5f5f5; border: 1px solid #ddd;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          cursor: pointer; text-align: left;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          font-size: 1rem; font-weight: 600;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        .content {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          display: none; padding: 1rem;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;          border: 1px solid #ddd; border-top: none;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;        :host([open]) .content { display: block; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &amp;#x3C;/style&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &amp;#x3C;button part=&quot;trigger&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;}&amp;#x3C;/button&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &amp;#x3C;div class=&quot;content&quot;&gt;&amp;#x3C;slot&gt;&amp;#x3C;/slot&gt;&amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;    `&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.shadowRoot.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;button&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;click&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, () &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;      this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;toggleAttribute&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;open&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;customElements.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;define&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;toggle-panel&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, TogglePanel);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Uso en HTML:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;toggle-panel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;Información de envío&quot;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Envío gratuito en pedidos superiores a 50 EUR.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;--shiki-light:#22863A;--shiki-dark:#85E89D&quot;&gt;toggle-panel&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los Web Components proporcionan encapsulación Shadow DOM (los estilos no se filtran), slots para proyección de contenido y callbacks de ciclo de vida. Funcionan en todos los navegadores modernos sin polyfills.&lt;/p&gt;
&lt;h3 id=&quot;cuándo-usar-web-components-vs-un-framework&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-usar-web-components-vs-un-framework&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo usar Web Components vs un framework&lt;/h3&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Escenario&lt;/th&gt;&lt;th&gt;Recomendación&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Widget interactivo simple (acordeón, pestañas, modal)&lt;/td&gt;&lt;td&gt;Web Component&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SPA completa (aplicación de una sola página)&lt;/td&gt;&lt;td&gt;React / Vue / Svelte&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bloque WordPress (Gutenberg)&lt;/td&gt;&lt;td&gt;React (estándar WordPress)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Componente compartido entre múltiples sitios&lt;/td&gt;&lt;td&gt;Web Component&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gestión de estado compleja&lt;/td&gt;&lt;td&gt;Framework con librería de estado&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;estrategia-de-migración-para-proyectos-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategia-de-migración-para-proyectos-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategia de migración para proyectos WordPress&lt;/h2&gt;
&lt;h3 id=&quot;paso-1-auditar-tu-uso-de-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-1-auditar-tu-uso-de-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 1: Auditar tu uso de jQuery&lt;/h3&gt;
&lt;p&gt;Ejecuta este comando en el directorio de tu tema para encontrar todas las referencias a jQuery:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;grep&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; -rn&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;\$(\|jQuery\.\|jQuery(&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --include=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;*.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; --include=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;*.php&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Categoriza cada uso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tu código&lt;/strong&gt; (tema/plugin personalizado): migra esto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin de terceros&lt;/strong&gt;: déjalo, el plugin gestiona sus propias dependencias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin de WordPress&lt;/strong&gt;: no tocar, el núcleo de WordPress maneja esto&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paso-2-crear-un-plan-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-2-crear-un-plan-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 2: Crear un plan de migración&lt;/h3&gt;
&lt;p&gt;Prioriza por impacto:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Código frontend del tema&lt;/strong&gt; (afecta a cada visitante) - migra primero&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frontend de plugin personalizado&lt;/strong&gt; - migra segundo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalizaciones del lado admin&lt;/strong&gt; - migra último (menor tráfico)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;paso-3-reemplazar-patrones-incrementalmente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-3-reemplazar-patrones-incrementalmente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 3: Reemplazar patrones incrementalmente&lt;/h3&gt;
&lt;p&gt;No reescribas todo de una vez. Reemplaza un archivo a la vez:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Elimina &lt;code&gt;array(&apos;jquery&apos;)&lt;/code&gt; del array de dependencias de &lt;code&gt;wp_enqueue_script&lt;/code&gt; del archivo&lt;/li&gt;
&lt;li&gt;Reemplaza todos los patrones jQuery con equivalentes vanilla JS&lt;/li&gt;
&lt;li&gt;Prueba en Chrome, Firefox, Safari y Edge&lt;/li&gt;
&lt;li&gt;Prueba con todos los plugins activos habilitados&lt;/li&gt;
&lt;li&gt;Ejecuta Lighthouse antes y después para medir la mejora&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;paso-4-manejar-el-patrón-ajax-de-wordpress&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-4-manejar-el-patrón-ajax-de-wordpress&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 4: Manejar el patrón AJAX de WordPress&lt;/h3&gt;
&lt;p&gt;El AJAX legacy de WordPress usa &lt;code&gt;admin-ajax.php&lt;/code&gt; con jQuery:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Patrón antiguo (jQuery + admin-ajax)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;jQuery.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(ajaxurl, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  action: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;my_custom_action&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  nonce: myData.nonce,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  post_id: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;123&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(response);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Patrón moderno (fetch + REST API)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; myCustomAction&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;postId&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; await&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; fetch&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;/wp-json/myplugin/v1/action&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    method: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;POST&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    headers: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &apos;Content-Type&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;application/json&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;      &apos;X-WP-Nonce&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: myData.nonce,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    body: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;({ post_id: postId }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; response.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El enfoque de la REST API es más rápido (sin sobrecarga de admin-ajax.php), más cacheable y sigue los estándares modernos de desarrollo WordPress.&lt;/p&gt;
&lt;h3 id=&quot;paso-5-registrar-scripts-correctamente&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#paso-5-registrar-scripts-correctamente&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Paso 5: Registrar scripts correctamente&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Antes (con dependencia jQuery)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_enqueue_script&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;my-theme-scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  get_template_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/js/main.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;jquery&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;1.0.0&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Después (sin jQuery, con soporte de módulos)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;wp_enqueue_script_module&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;my-theme-scripts&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  get_template_directory_uri&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &apos;/js/main.js&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;  array&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;  &apos;2.0.0&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;WordPress 6.5+ soporta &lt;code&gt;wp_enqueue_script_module()&lt;/code&gt; que carga scripts como módulos ES con &lt;code&gt;type=&quot;module&quot;&lt;/code&gt;, habilitando la sintaxis nativa de &lt;code&gt;import/export&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;cuándo-mantener-jquery-todavía-tiene-sentido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#cuándo-mantener-jquery-todavía-tiene-sentido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Cuándo mantener jQuery todavía tiene sentido&lt;/h2&gt;
&lt;p&gt;jQuery puede seguir estando justificado si:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Base de código legacy con más de 50 dependencias de plugins jQuery&lt;/strong&gt;: El costo de migración supera el beneficio de rendimiento. Planifica una eliminación gradual durante 6-12 meses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalizaciones del admin de WordPress&lt;/strong&gt;: El área de administración ya carga jQuery. Añadir tus propios scripts de admin con dependencia jQuery no cuesta nada extra.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requisitos de plugins de terceros&lt;/strong&gt;: Algunos plugins populares (ciertos constructores de formularios, constructores de páginas) requieren jQuery. No luches contra la dependencia si no puedes controlarla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brecha de habilidades del equipo&lt;/strong&gt;: Si tu equipo de desarrollo no está cómodo con JS moderno, invierte en formación antes de forzar una migración.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El objetivo es la mejora pragmática, no la pureza ideológica. Elimina jQuery donde te cuesta rendimiento y no añade valor. Mantenlo donde eliminarlo rompería cosas o costaría más de lo que ahorra.&lt;/p&gt;
&lt;h2 id=&quot;características-es2024-que-reemplazan-utilidades-comunes-de-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#características-es2024-que-reemplazan-utilidades-comunes-de-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Características ES2024+ que reemplazan utilidades comunes de jQuery&lt;/h2&gt;
&lt;h3 id=&quot;clon-estructurado-copia-profunda&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#clon-estructurado-copia-profunda&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Clon estructurado (copia profunda)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; copy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, {}, original);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ES2024+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; copy&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; structuredClone&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(original);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;iteración-tipo-array&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#iteración-tipo-array&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Iteración tipo array&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;$.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(items, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* ... */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ES2024+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;items.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;/* ... */&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O con Array.from para NodeLists&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Array.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; item.textContent);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// O operador spread&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.item&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)].&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; item.dataset.active);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;patrones-deferredpromise&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#patrones-deferredpromise&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Patrones Deferred/Promise&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; deferred&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; $.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;Deferred&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deferred.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;resolve&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hecho&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;deferred.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;promise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;val&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(val));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// ES2024+&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; promise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Promise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;resolve&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; resolve&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;hecho&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;promise.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;val&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; console.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(val));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Promise.withResolvers() - característica ES2024&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;promise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;resolve&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;reject&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; Promise&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;withResolvers&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;intersectionobserver-reemplaza-manejadores-de-scroll-de-jquery&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#intersectionobserver-reemplaza-manejadores-de-scroll-de-jquery&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;IntersectionObserver (reemplaza manejadores de scroll de jQuery)&lt;/h3&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// jQuery (manejador de scroll costoso)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(window).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.lazy-image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;offset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;().top &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(window).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;scrollTop&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(window).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;      $&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;src&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Vanilla JS (eficiente, fuera del hilo principal)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; observer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; IntersectionObserver&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;entries&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  entries.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (entry.isIntersecting) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; entry.target;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      img.src &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; img.dataset.src;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      observer.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;unobserve&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(img);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&apos;.lazy-image&apos;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--shiki-light:#E36209;--shiki-dark:#FFAB70&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt; =&gt;&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; observer.&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;observe&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(img));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;alternativas-de-librerías-de-utilidades-si-necesitas-un-helper&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#alternativas-de-librerías-de-utilidades-si-necesitas-un-helper&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Alternativas de librerías de utilidades (si necesitas un helper)&lt;/h2&gt;
&lt;p&gt;Si te encuentras escribiendo los mismos patrones vanilla JS repetidamente, considera una micro-librería en lugar de jQuery:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Librería&lt;/th&gt;&lt;th&gt;Tamaño&lt;/th&gt;&lt;th&gt;Propósito&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Alpine.js&lt;/td&gt;&lt;td&gt;15KB&lt;/td&gt;&lt;td&gt;Reactividad declarativa (x-data, x-on)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;htmx&lt;/td&gt;&lt;td&gt;14KB&lt;/td&gt;&lt;td&gt;AJAX, WebSocket, SSE vía atributos HTML&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Petite-Vue&lt;/td&gt;&lt;td&gt;6KB&lt;/td&gt;&lt;td&gt;Sintaxis de plantilla compatible con Vue&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ninguna (vanilla)&lt;/td&gt;&lt;td&gt;0KB&lt;/td&gt;&lt;td&gt;Mejor rendimiento, control total&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Para temas WordPress en 2026, la recomendación es vanilla JS para interacciones simples y Alpine.js o htmx si necesitas comportamiento declarativo sin un framework completo.&lt;/p&gt;
&lt;h2 id=&quot;mejores-prácticas-de-jquery-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#mejores-prácticas-de-jquery-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Mejores prácticas de jQuery en 2026&lt;/h2&gt;
&lt;p&gt;Si todavía mantienes código jQuery - ya sea por elección o porque una base de código legacy lo exige - estas prácticas minimizan el daño:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Carga jQuery del core de WordPress, nunca desde un CDN.&lt;/strong&gt; WordPress incluye una versión compatible. Cargar una segunda copia desde &lt;code&gt;cdnjs&lt;/code&gt; o &lt;code&gt;code.jquery.com&lt;/code&gt; significa el doble de peso y posibles conflictos de versión.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa &lt;code&gt;jQuery&lt;/code&gt; en lugar de &lt;code&gt;$&lt;/code&gt; en WordPress.&lt;/strong&gt; WordPress ejecuta jQuery en modo no-conflicto. Envolver el código en &lt;code&gt;jQuery(function($) { ... })&lt;/code&gt; previene colisiones con otras librerías.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evita anidar &lt;code&gt;.ready()&lt;/code&gt;.&lt;/strong&gt; Un solo &lt;code&gt;jQuery(function($) { ... })&lt;/code&gt; es suficiente. Las llamadas anidadas a &lt;code&gt;.ready()&lt;/code&gt; crean pirámides de callbacks y confunden el orden de ejecución.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cachea los selectores.&lt;/strong&gt; Cada llamada a &lt;code&gt;$(&apos;.my-class&apos;)&lt;/code&gt; recorre el DOM. Almacena los resultados en una variable cuando uses el mismo selector más de una vez.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delega eventos en lugar de vincularlos a elementos individuales.&lt;/strong&gt; Usa &lt;code&gt;$(parent).on(&apos;click&apos;, &apos;.child&apos;, handler)&lt;/code&gt; en lugar de &lt;code&gt;$(&apos;.child&apos;).click(handler)&lt;/code&gt;. Esto maneja elementos añadidos dinámicamente y usa menos listeners de eventos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No uses jQuery para animaciones CSS.&lt;/strong&gt; Usa transiciones CSS o la Web Animations API. El método &lt;code&gt;.animate()&lt;/code&gt; de jQuery se ejecuta en el hilo principal y causa jank.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Declara &lt;code&gt;jquery&lt;/code&gt; como dependencia solo cuando sea necesario.&lt;/strong&gt; Si un archivo de script no usa jQuery, elimínalo del array de dependencias de &lt;code&gt;wp_enqueue_script&lt;/code&gt; para evitar cargar jQuery innecesariamente.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;última-versión-de-jquery-y-qué-cambió&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#última-versión-de-jquery-y-qué-cambió&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Última versión de jQuery y qué cambió&lt;/h2&gt;
&lt;p&gt;En 2026, jQuery &lt;strong&gt;3.7.1&lt;/strong&gt; es la última versión estable (publicada en agosto de 2023). jQuery &lt;strong&gt;4.0.0-beta.2&lt;/strong&gt; ha estado en beta desde febrero de 2024, sin fecha de lanzamiento estable anunciada.&lt;/p&gt;
&lt;p&gt;Cambios de jQuery 4.0 que importan para WordPress:&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Cambio&lt;/th&gt;&lt;th&gt;Impacto&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Elimina soporte para IE 11&lt;/td&gt;&lt;td&gt;Sin efecto - WordPress 6.6+ ya eliminó IE 11&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Elimina APIs obsoletas (&lt;code&gt;.click()&lt;/code&gt;, &lt;code&gt;.bind()&lt;/code&gt;, &lt;code&gt;.delegate()&lt;/code&gt;)&lt;/td&gt;&lt;td&gt;Los plugins que las usen se romperán&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bundle más pequeño (~68KB vs 87KB)&lt;/td&gt;&lt;td&gt;Mejora modesta, aún más pesado que sin jQuery&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;$.ajax()&lt;/code&gt; basado en FormData para subida de archivos&lt;/td&gt;&lt;td&gt;API más limpia, pero &lt;code&gt;fetch()&lt;/code&gt; lo hace nativamente&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;El core de WordPress actualmente incluye jQuery 3.7.1 y no se ha comprometido a incluir la 4.0. La conclusión práctica: no esperes a jQuery 4 para mejorar el rendimiento. Migra a vanilla JS donde sea posible, y usa las mejores prácticas de jQuery 3.7.1 donde la migración aún no sea viable.&lt;/p&gt;
&lt;h2 id=&quot;quién-sigue-usando-jquery-en-2026&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#quién-sigue-usando-jquery-en-2026&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Quién sigue usando jQuery en 2026&lt;/h2&gt;
&lt;p&gt;jQuery sigue cargándose en un estimado del &lt;strong&gt;77% de todos los sitios web&lt;/strong&gt; (según W3Techs), en gran parte porque WordPress, Shopify y sitios empresariales legacy lo incluyen por defecto. Pero “cargado” no significa “necesario.”&lt;/p&gt;
&lt;p&gt;El desglose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sitios WordPress&lt;/strong&gt;: jQuery se carga en prácticamente cada página WordPress porque la barra de admin y muchos plugins populares dependen de él. En el frontend, la dependencia real suele ser solo uno o dos scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temás de Shopify&lt;/strong&gt;: La mayoría de los temas de Shopify incluyen jQuery para interacciones del carrito. Shopify no se ha movido para deprecarlo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistemas empresariales legacy&lt;/strong&gt;: Bancos, portales gubernamentales y grandes plataformas de e-commerce a menudo tienen jQuery incrustado en bases de código que datan de 2010-2015. La migración es costosa y de baja prioridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proyectos nuevos&lt;/strong&gt;: Casí ninguno. React, Vue, Svelte y vanilla JS dominan el desarrollo de nuevos proyectos. Ningún framework moderno o plantilla de inicio incluye jQuery.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si estás comenzando un nuevo tema o plugin de WordPress en 2026, no hay razón para añadir jQuery como dependencia. Las APIs del navegador son suficientes para cada patrón común. Para más información sobre cómo construir plugins correctamente, consulta la sección de &lt;a href=&quot;/es/best-wordpress-plugins-a-complete-guide-2026/&quot;&gt;mejores prácticas para plugins WordPress&lt;/a&gt; en nuestra guía de stack de plugins.&lt;/p&gt;
&lt;h2 id=&quot;conclusión-la-lista-de-verificación-de-migración&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusión-la-lista-de-verificación-de-migración&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusión: la lista de verificación de migración&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Audita todo el uso de jQuery en tu tema y plugins personalizados&lt;/li&gt;
&lt;li&gt;Mide los Core Web Vitals actuales como referencia&lt;/li&gt;
&lt;li&gt;Reemplaza el código frontend del tema primero (mayor impacto en visitantes)&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;querySelector&lt;/code&gt;, &lt;code&gt;addEventListener&lt;/code&gt;, &lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;classList&lt;/code&gt; y Web Animations API&lt;/li&gt;
&lt;li&gt;Considera Web Components para elementos UI reutilizables&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;wp_enqueue_script_module()&lt;/code&gt; para soporte de módulos ES&lt;/li&gt;
&lt;li&gt;Prueba en todos los navegadores principales después de cada migración de archivo&lt;/li&gt;
&lt;li&gt;Mide los Core Web Vitals de nuevo y documenta la mejora&lt;/li&gt;
&lt;li&gt;Mantén jQuery solo para scripts de admin y dependencias de plugins de terceros&lt;/li&gt;
&lt;li&gt;Forma a tu equipo en patrones modernos de JavaScript&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La plataforma web en 2026 proporciona todo lo que jQuery ofrecía, y más. Cada kilobyte de JavaScript innecesario que eliminas hace tu sitio WordPress más rápido, más accesible y más fácil de mantener.&lt;/p&gt;</content:encoded><category>development</category><category>javascript</category><category domain="tag">jquery</category><category domain="tag">vanilla js</category><category domain="tag">performance</category><category domain="tag">migration</category><category domain="tag">web components</category><category domain="tag">es2024</category><enclosure url="https://wppoland.com/images/og/woocoommerce-developer.jpg" type="image/jpeg"/></item><item><title>Factores que afectan el valor de los enlaces salientes en SEO: guía completa (2026)</title><link>https://wppoland.com/es/factors-affecting-outgoing-link-value-seo/</link><guid isPermaLink="true">https://wppoland.com/es/factors-affecting-outgoing-link-value-seo/</guid><description>Análisis exhaustivo de los factores que determinan el valor de los enlaces salientes - texto ancla, posicionamiento, formato del contenido, atributos nofollow y relevancia semántica para el SEO moderno.</description><pubDate>Sun, 23 Dec 2007 17:05:59 GMT</pubDate><content:encoded>&lt;h2 id=&quot;estrategias-avanzadas-de-implementación&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#estrategias-avanzadas-de-implementación&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Estrategias avanzadas de implementación&lt;/h2&gt;
&lt;p&gt;Descubre más sobre los &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;servicios de optimización SEO y GEO&lt;/a&gt; en WPPoland.&lt;/p&gt;
&lt;p&gt;Implementar estas técnicas SEO con éxito requiere un enfoque sistematico que equilibre la optimización técnica con la calidad del contenido. Aqui te mostramos como ejecutar cada estrategia de manera efectiva.&lt;/p&gt;
&lt;h3 id=&quot;configuración-y-ajustes-técnicos&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#configuración-y-ajustes-técnicos&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Configuración y ajustes técnicos&lt;/h3&gt;
&lt;p&gt;Comienza realizando una auditoria exhaustiva de tu configuración SEO actual. Usa herramientas como Google Search Console, Screaming Frog o SEMrush para identificar problemas y oportunidades existentes. Documenta tus metricas de referencia incluyendo posiciones actuales, tráfico organico y tasas de conversión.&lt;/p&gt;
&lt;p&gt;El valor de un enlace saliente no es una metrica simple. Esta determinado por una compleja interacción de factores que los motores de búsqueda evaluan para comprender la relación entre la página que enlaza y la página enlazada. Comprender estos factores es esencial para cualquier estrategia SEO efectiva en 2026.&lt;/p&gt;
&lt;h3 id=&quot;el-principio-fundamental-los-enlaces-como-citas-academicas&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#el-principio-fundamental-los-enlaces-como-citas-academicas&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;El principio fundamental: los enlaces como citas academicas&lt;/h3&gt;
&lt;p&gt;El concepto central detras del valor de los enlaces proviene de la analogia con las citas academicas. Cuando un artículo cientifico cita otro, esa cita transfiere credibilidad y autoridad. De la misma manera, cuando un sitio web enlaza a otro, transfiere una porcion de su autoridad a través de lo que historicamente se conocia como PageRank.&lt;/p&gt;
&lt;p&gt;En 2026, aunque Google ya no muestra publicamente las puntuaciones de PageRank, el concepto subyacente sigue siendo fundamental para como los motores de búsqueda evaluan los enlaces. Los enlaces siguen siendo votos de confianza, y la calidad de esos votos depende de multiples factores.&lt;/p&gt;
&lt;h3 id=&quot;texto-ancla-el-factor-de-contexto-más-directo&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#texto-ancla-el-factor-de-contexto-más-directo&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Texto ancla: el factor de contexto más directo&lt;/h3&gt;
&lt;p&gt;El texto ancla - el texto visible y clicable de un hipervinculo - proporciona a Google la señal más directa sobre el contenido de la página enlazada. Un enlace con el texto ancla “guía de optimización de velocidad WordPress” le dice a Google explicitamente de que trata la página de destino.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mejores prácticas para texto ancla en 2026:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Variacion natural&lt;/strong&gt;: No uses siempre el mismo texto ancla. Los perfiles naturales de enlaces muestran diversidad en los textos ancla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relevancia contextual&lt;/strong&gt;: El texto ancla debe fluir naturalmente dentro del contenido circundante.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evita la sobreoptimización&lt;/strong&gt;: Demasiados textos ancla de coincidencia exacta para la misma página activan señales de manipulación en los algoritmos de Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Textos ancla descriptivos&lt;/strong&gt;: “Lee nuestra guía completa sobre optimización de velocidad” es mejor que “haz clic aqui.”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;posicionamiento-del-enlace-en-la-página&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#posicionamiento-del-enlace-en-la-página&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Posicionamiento del enlace en la página&lt;/h3&gt;
&lt;p&gt;La posición donde aparece un enlace dentro de una página afecta su valor percibido por los motores de búsqueda. Los enlaces colocados dentro del contenido principal del cuerpo del artículo - donde aportan contexto editorial genuino - tienen más peso que los enlaces en barras laterales, pies de página o secciones de navegación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jerarquía de valor por posición:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Contenido principal del cuerpo&lt;/strong&gt;: Maximo valor. El enlace esta integrado naturalmente en el flujo del contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Por encima del pliegue&lt;/strong&gt;: Los enlaces visibles sin desplazamiento reciben ligeramente más atención.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Listas de recursos&lt;/strong&gt;: Valor moderado. Claramente editorial pero sin la integración contextual rica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Barras laterales y widgets&lt;/strong&gt;: Valor minimo. Son enlaces a nivel de sitio que no representan decisiones editoriales individuales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pies de página&lt;/strong&gt;: Valor minimo a nulo para propósitos de SEO.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;contexto-semántico-y-relevancia-temática&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#contexto-semántico-y-relevancia-temática&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Contexto semántico y relevancia temática&lt;/h3&gt;
&lt;p&gt;En 2026, Google no solo ve un enlace como “el Sitio A apunta al Sitio B.” Entiende el contexto semántico: de que trata el Sitio A, que discute la página que enlaza, y si el enlace tiene sentido contextual.&lt;/p&gt;
&lt;p&gt;Un enlace desde un blog de desarrollo WordPress a una guía de seguridad WordPress lleva fuertes señales temáticas. El sitio que enlaza cubre temas relacionados, el contenido de la página que enlaza es contextualmente relevante, y la conexión entre los dos sitios tiene sentido semántico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Factores de relevancia semántica:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Relevancia a nivel de sitio&lt;/strong&gt;: El sitio que enlaza cubre temas relacionados con tu nicho.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relevancia a nivel de página&lt;/strong&gt;: La página específica que enlaza discute un tema directamente relacionado con tu contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contexto del parrafo&lt;/strong&gt;: El texto que rodea al enlace proporciona contexto adicional sobre por que existe el enlace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Superposicion de audiencia&lt;/strong&gt;: El sitio que enlaza tiene una audiencia que se superpone con tu audiencia objetivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;atributos-técnicos-que-afectan-el-valor-del-enlace&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#atributos-técnicos-que-afectan-el-valor-del-enlace&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Atributos técnicos que afectan el valor del enlace&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Atributo rel=“nofollow”&lt;/strong&gt;: Indica a los motores de búsqueda que no pasen valor de enlace. Desde 2019, Google trata nofollow como una “pista” en lugar de una directiva, lo que significa que puede optar por considerar el enlace de todas formas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atributo rel=“sponsored”&lt;/strong&gt;: Para enlaces pagados o patrocinados. No pasa valor de enlace. Es el enfoque conforme para contenido patrocinado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atributo rel=“ugc”&lt;/strong&gt;: Para contenido generado por usuarios como comentarios y publicaciónes en foros. Google generalmente descuenta estos para propósitos de posicionamiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atributo title&lt;/strong&gt;: Proporciona información adicional sobre el enlace al pasar el raton. Puede ayudar a los bots de búsqueda a entender el contexto del enlace, aunque su impacto SEO directo es minimo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atributo alt en imágenes enlazadas&lt;/strong&gt;: Cuando una imagen funciona como enlace, el texto alternativo (alt) de la imagen sirve como texto ancla del enlace. Es importante optimizar los textos alt de las imágenes enlazadas.&lt;/p&gt;
&lt;h3 id=&quot;formato-del-contenido-circundante&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#formato-del-contenido-circundante&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Formato del contenido circundante&lt;/h3&gt;
&lt;p&gt;La calidad y el formato del contenido que rodea a un enlace influyen en como los motores de búsqueda perciben su valor. Un enlace dentro de un artículo bien estructurado, con encabezados apropiados, parrafos claros y contenido original tiene más peso que un enlace dentro de contenido delgado o de baja calidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Factores de formato que importan:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Longitud del contenido&lt;/strong&gt;: Los artículos más largos y completos tienden a pasar más valor a través de sus enlaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estructura con encabezados&lt;/strong&gt;: El contenido bien organizado con jerarquía de encabezados senaliza calidad editorial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenido original&lt;/strong&gt;: Los enlaces dentro de contenido único y original son más valiosos que los enlaces dentro de contenido duplicado o sindicado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frecuencia de actualización&lt;/strong&gt;: Las páginas que se actualizan regularmente mantienen su frescura y relevancia, lo que puede influir en el valor de sus enlaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#flujo-de-trabajo-de-optimización-de-contenido&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Flujo de trabajo de optimización de contenido&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fase de investigación de palabras clave&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifica palabras clave primarias y secundarias&lt;/li&gt;
&lt;li&gt;Analiza la intencion de búsqueda para cada termino&lt;/li&gt;
&lt;li&gt;Mapea las palabras clave al contenido existente&lt;/li&gt;
&lt;li&gt;Identifica brechas de contenido&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creación/Optimización de contenido&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escribe títulos y meta descripciones convincentes&lt;/li&gt;
&lt;li&gt;Estructura el contenido con jerarquía de encabezados adecuada&lt;/li&gt;
&lt;li&gt;Incluye enlaces internos y externos relevantes&lt;/li&gt;
&lt;li&gt;Optimiza imágenes con texto alt descriptivo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementación técnica&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asegura la compatibilidad móvil&lt;/li&gt;
&lt;li&gt;Mejora la velocidad de carga de la página&lt;/li&gt;
&lt;li&gt;Implementa marcado schema&lt;/li&gt;
&lt;li&gt;Corrige errores de rastreo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;número-de-enlaces-salientes-en-una-página&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#número-de-enlaces-salientes-en-una-página&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Número de enlaces salientes en una página&lt;/h3&gt;
&lt;p&gt;La cantidad de enlaces salientes en una página afecta cuanto valor pasa cada enlace individual. Este concepto, conocido historicamente como “division de PageRank,” significa que una página con 10 enlaces salientes distribuye más valor por enlace que una página con 100 enlaces salientes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implicaciones prácticas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Páginas enfocadas&lt;/strong&gt;: Los enlaces en páginas con pocos enlaces salientes selectos tienden a pasar más valor individualmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Páginas de recursos&lt;/strong&gt;: Las páginas con muchos enlaces (directorios, listas de recursos) distribuyen el valor entre todos los enlaces, reduciendo el impacto individual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evita el exceso&lt;/strong&gt;: Páginas con cantidades excesivas de enlaces salientes pueden ser vistas como spam o directorios de baja calidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;enlaces-desde-páginas-con-alta-autoridad&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#enlaces-desde-páginas-con-alta-autoridad&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Enlaces desde páginas con alta autoridad&lt;/h3&gt;
&lt;p&gt;El valor que un enlace puede transferir esta limitado por la autoridad de la página que enlaza. Un enlace desde una página de alta autoridad (con muchos backlinks propios de calidad) pasa más valor que un enlace desde una página nueva sin backlinks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Como evaluar la autoridad de la página enlazante:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifica la Autoridad de Dominio (DA) y la Autoridad de Página (PA) usando herramientas como Moz.&lt;/li&gt;
&lt;li&gt;Examina el Domain Rating (DR) y URL Rating (UR) en Ahrefs.&lt;/li&gt;
&lt;li&gt;Analiza el Trust Flow y Citation Flow en Majestic.&lt;/li&gt;
&lt;li&gt;Revisa el tráfico organico real de la página - una página con tráfico real senaliza que Google la valora.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;medicion-del-éxito&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#medicion-del-éxito&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Medicion del éxito&lt;/h3&gt;
&lt;p&gt;Rastrea estos indicadores clave de rendimiento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crecimiento del tráfico organico&lt;/li&gt;
&lt;li&gt;Mejoras en las posiciones de palabras clave&lt;/li&gt;
&lt;li&gt;Tasas de clics (CTR)&lt;/li&gt;
&lt;li&gt;Tasas de conversión&lt;/li&gt;
&lt;li&gt;Tasas de rebote&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El monitoreo regular te permite ajustar tu estrategia basandote en lo que esta funcionando y lo que no. El SEO es un proceso continuo, no una tarea única.&lt;/p&gt;
&lt;h3 id=&quot;velocidad-del-enlace-y-patrones-naturales&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#velocidad-del-enlace-y-patrones-naturales&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Velocidad del enlace y patrones naturales&lt;/h3&gt;
&lt;p&gt;Google analiza no solo los enlaces individuales sino los patrones de adquisicion de enlaces a lo largo del tiempo. Un perfil de enlaces que crece de forma natural muestra variacion organica - algunas semanas ganas muchos enlaces, otras semanas pocos - en lugar de un crecimiento constante y uniforme.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Señales de patrones naturales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Variacion en la frecuencia de adquisicion de enlaces&lt;/li&gt;
&lt;li&gt;Mezcla de diferentes tipos de sitios enlazantes&lt;/li&gt;
&lt;li&gt;Diversidad en los textos ancla utilizados&lt;/li&gt;
&lt;li&gt;Correlacion con publicación de contenido o eventos mediaticos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Señales de patrones artificiales:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adquisicion constante de un número fijo de enlaces por semana&lt;/li&gt;
&lt;li&gt;Todos los enlaces provienen de tipos de sitios similares&lt;/li&gt;
&lt;li&gt;Texto ancla repetitivo y sobreoptimizado&lt;/li&gt;
&lt;li&gt;Picos repentinos sin razon identificable&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;conclusion-un-enfoque-holistico&quot;&gt;&lt;a class=&quot;heading-anchor&quot; aria-hidden=&quot;&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion-un-enfoque-holistico&quot;&gt;&lt;span class=&quot;heading-anchor-icon&quot;&gt;#&lt;/span&gt;&lt;/a&gt;Conclusion: un enfoque holistico&lt;/h3&gt;
&lt;p&gt;El valor de un enlace saliente en 2026 esta determinado por la interacción de multiples factores: texto ancla, posicionamiento, contexto semántico, atributos técnicos, formato del contenido, autoridad de la página y patrones de adquisicion. No existe un factor único que por si solo determine el valor de un enlace.&lt;/p&gt;
&lt;p&gt;La estrategia más efectiva es enfocarse en crear contenido genuinamente valioso que atraiga enlaces naturales de sitios relevantes y autoritativos. Cuando los enlaces se obtienen de forma organica, los factores de calidad tienden a alinearse naturalmente - los sitios que enlazan por valor editorial usan textos ancla apropiados, colocan enlaces en contextos relevantes y representan fuentes temáticas adecuadas.&lt;/p&gt;
&lt;p&gt;Explora nuestra &lt;a href=&quot;/es/seo-geo-aeo-wordpress/&quot;&gt;optimización SEO y visibilidad&lt;/a&gt; para llevar tu proyecto más lejos.&lt;/p&gt;</content:encoded><category>seo</category><category domain="tag">Black Hat</category><category domain="tag">seo</category><category domain="tag">anchor</category><category domain="tag">link-building</category><category domain="tag">off-page-seo</category><enclosure url="https://wppoland.com/images/og/Pomys--y-na-budowAe--ruchu-do-strony-www-i-zbieranie-zapis-lw-na-webinary.jpg" type="image/jpeg"/></item></channel></rss>